Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 安装期间未执行我的软件包的NPM构建阶段_Javascript_Node.js_Npm_Rollupjs - Fatal编程技术网

Javascript 安装期间未执行我的软件包的NPM构建阶段

Javascript 安装期间未执行我的软件包的NPM构建阶段,javascript,node.js,npm,rollupjs,Javascript,Node.js,Npm,Rollupjs,我正在开发一个要使用的包,但在尝试将其添加为另一个项目的依赖项时,我发现了一些问题 通常情况下,我希望在执行安装时,我的package.json中有一个部分会被自动调用,以生成rollup.config.js的输出。但它似乎没有执行任何操作。我对npm构建应该如何工作有任何误解吗 如果不是,则package.json中存在任何其他冲突脚本,导致其无法在下一个文件示例中工作: { "name": "web-threads", "version": "1.0.5", "descriptio

我正在开发一个要使用的包,但在尝试将其添加为另一个项目的依赖项时,我发现了一些问题

通常情况下,我希望在执行安装时,我的package.json中有一个部分会被自动调用,以生成rollup.config.js的输出。但它似乎没有执行任何操作。我对npm构建应该如何工作有任何误解吗

如果不是,则package.json中存在任何其他冲突脚本,导致其无法在下一个文件示例中工作:

{
 "name": "web-threads",
  "version": "1.0.5",
  "description": "generic threads using web workers for the web",
  "main": "dist/web-threads.js",
  "scripts": {
    "build": "rollup -c",
    "test": "jest",
    "test:dev": "jest --watchAll test/unit",
    "test:int": "jest test/integration",
    "test:cov": "jest --coverage && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",
    "push": "yarn test && git push",
    "deploy:major": "yarn version --major",
    "deploy:minor": "yarn version --minor",
    "deploy:patch": "yarn version --patch",
    "deploy:push": "git push && git push --tags",
    "preversion": "yarn test"
  },
  "keywords": [""],
  "repository": "",
  "author": "",
  "license": "MIT",
  "private": false,
  "devDependencies": {
    "babel-jest": "23.4.2",
    "babel-preset-env": "1.7.0",
    "babel-preset-stage-0": "6.24.1",
    "coveralls": "3.0.2",
    "faker": "4.1.0",
    "jest": "23.5.0",
    "jest-puppeteer": "3.3.1",
    "puppeteer": "1.7.0",
    "rollup": "0.65.0",
    "rollup-plugin-babel": "3.0.7",
    "rollup-plugin-uglify": "4.0.0",
    "uglify-es": "3.3.9"
  },
  "babel": {
    "presets": ["env","stage-0"]
  },
  "jest": {
    "testMatch": [
      "**/test/**/*-test.js"
    ],
    "transform": {
      "^.+\\.jsx|.js?$": "babel-jest"
    }
  }
}
我还将依赖项改为非依赖项,但这无助于解决问题

NPM构建文档:

您可以尝试添加安装后脚本。 如文件所述

postinstall:安装包后运行


所以@Olian04的答案让我找到了正确的方向,并对文档进行了深入研究。事实上,我有一个误解,因为它实际上不是一个脚本,只是一个过程阶段的挂钩

因此,解决包中所需编译的正确方法似乎是运行一个不同的进程。这是一个脚本,文档定义为:

对于不特定于平台的构建步骤,如将CoffeeScript或其他语言编译为JavaScript,请使用prepare脚本完成此操作,并使所需的包成为devDependency

prepare脚本将在发布之前运行,这样用户就可以使用该功能,而无需自己编译。在开发模式ie中,本地运行npm安装,它也将运行此脚本,以便您可以轻松地测试它

例如:

{ "name": "web-threads",
  "description": "a delightfully fruity coffee varietal",
  "version": "1.2.3",
  "devDependencies": {
    "coffee-script": "~1.6.3"
  },
  "scripts": {
    "prepare": "coffee -o lib/ -c src/waza.coffee"
  },
  "main": "lib/waza.js"
}
作为总结,对于需要在安装计算机/平台上本地发生的事情,使用postinstall,但需要满足所有依赖关系。使用“为不依赖于平台的流程做好准备”这将不要求用户拥有所有工具来尝试归档包,也不会污染存储库