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
Node.js 从repo安装Npm未运行“准备”`_Node.js_Npm_Npm Install_Npm Scripts - Fatal编程技术网

Node.js 从repo安装Npm未运行“准备”`

Node.js 从repo安装Npm未运行“准备”`,node.js,npm,npm-install,npm-scripts,Node.js,Npm,Npm Install,Npm Scripts,我有一个npm包,用于托管在内部git服务器上的常见组件。由于某种原因,当我在另一个项目中调用npm install时,我想在其中使用它,但它不会运行preparehook。显然,这不起作用,因为npm包需要node_模块中的/dist文件夹才能使用包 我已经尝试过使用不推荐的prepublishhook之类的方法,甚至没有调用它。我还尝试执行postinstall以查看是否可以在安装后进行构建,但由于没有安装devDependencies,该钩子确实被调用,因此失败 package.json

我有一个npm包,用于托管在内部git服务器上的常见组件。由于某种原因,当我在另一个项目中调用
npm install
时,我想在其中使用它,但它不会运行
prepare
hook。显然,这不起作用,因为npm包需要node_模块中的
/dist
文件夹才能使用包

我已经尝试过使用不推荐的
prepublish
hook之类的方法,甚至没有调用它。我还尝试执行
postinstall
以查看是否可以在安装后进行构建,但由于没有安装devDependencies,该钩子确实被调用,因此失败

package.json

{
  "name": "common-components",
  "version": "0.1.0",
  "scripts": {
    "prepare": "npm run build",
    "build": "ng build",
    ...
  },
  "private": true,
  "dependencies": {
    ...
  },
  "devDependencies": {
    ...
  },
}
用于安装的命令

npm install --save git+ssh://{URL-to-common-components-repo}}
我已经彻底阅读了npm脚本文档,似乎他们坚持要为这个确切的用例调用
prepare
hook

更新日期:2019年5月6日 我在NPM社区发现了这个bug


我正在使用npm 6.4.1,对于那些想知道它的状态的人来说,它应该根据bug工作。我无法让它工作。我最后做的是将组件托管在一个私有npm注册表上,这很好,因为
npm publish
命令将进行构建,并且只发布dist文件夹

有一件事要检查我最近在一个包上遇到的问题-如果有.gitignore和没有.npmignore npm可能会忽略你的/dist文件夹。在这种情况下,添加一个空的.npmignore是有效的

“如果没有.npmignore文件,但有一个.gitignore文件,则 npm将忽略与.gitignore文件匹配的内容 要包含被.gitignore文件排除的内容,可以 创建一个空的.npmignore文件以覆盖它。“


通过在package.json中添加
main
,我解决了这个问题

    "main": "./dist/index.js",
    "scripts": {
       "build": "babel src --out-dir dist",
       "prepare": "npm run build",
       "lint": "eslint ."
     },

节点v14.15.4
npm 6.14.11
如果添加一个空的
.npmignore
没有帮助,您可以尝试在
package.json>文件中显式指定dist中的所有文件。如果这是可行的,您可能需要考虑使用与DIST中的文件匹配的通配符模式来简化<代码>包。JSON< /COD> ./P>
package.json

{
  "name": "common-components",
  "version": "0.1.0",
  "scripts": {
    "prepare": "npm run build",
    "build": "ng build",
    ...
  },
  "private": true,
  "dependencies": {
    ...
  },
  "devDependencies": {
    ...
  },
}
。。。
“文件”:[
“来源”,
“dist/cjs/main.js”,
“dist/es/main.js”
]
}

请参阅npm/cli存储库中类似问题的此评论,需要更改某些内容。过去几年我遇到的每一个npm问题的解决方案都被放在npm注册表上。2021年。。。这仍然是个麻烦
prepare
脚本作为设置git依赖项的正确解决方案,有很好的文档记录。但它从来没有跑过…好球,就是这样。