【问题标题】:why package.json script works fine on local project but doesn't work on a dependency project为什么 package.json 脚本在本地项目上工作正常,但在依赖项目上不起​​作用
【发布时间】:2017-09-12 07:54:32
【问题描述】:

我创建了一个 npm 模块(我们称之为 ModuleA)并在它的 package.json 文件中定义了 clean 脚本,如下所示:

"scripts": {
    "test": "nyc mocha tests/ --opts mocha.opts",
    "build": "babel -d dist/ src/",
    "prepublish": "yarn run clean && yarn run build",
    "postinstall": "yarn run clean && yarn run build",
    "clean": "rimraf ./dist"
  },

我使用rimraf 删除dist 目录。这个依赖在devDependencies 中定义为"rimraf": "^2.6.1"。它在这个项目上运行良好。但是在我的另一个依赖于这个模块的项目(我们称之为ModuleB)中,yarn install 不起作用,我得到以下错误:

$ rimraf ./dist
sh: 1: rimraf: not found 

npm/yarn 正在构建ModuleB 时会发生此错误。我检查了rimraf 存在于ModuleBnode_modules/.bin 目录中。如果我在全球范围内安装rimraf,它工作正常。我想知道如何让 npm/yarn 使用来自node_modules/.bin/rimrafrimraf

顺便说一句,我还将rimraf 放入devDependenciesModuleB

我尝试将ModuleA 中的脚本更新为使用node_modules/.bin/rimraf 中的rimraf,如下所示:

"clean": "node_modules/.bin/rimraf ./dist"

它在ModuleA 上运行良好。但是在ModuleB 上运行yarn install 时出现以下错误:

$ node_modules/.bin/rimraf ./dist 
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
sh: node_modules/.bin/rimraf: No such file or directory
error Command failed with exit code 127.

【问题讨论】:

  • 你使用的是yarn还是npm
  • "clean": "node_modules/.bin/rimraf ./dist" ?
  • 我尝试了yarnnpm
  • @AlexBlex use node_modules/.bin/rimraf ./dist 应该可以工作,但我不明白为什么yarn install 在构建模块时可以正常工作。但是在构建具有依赖关系的模块时它不起作用。
  • 那么将实际问题放在标题中不是更有意义吗?你看,人们回答了你在标题中提出的问题——“如何使用二进制文件”,而不是“为什么它在那里工作而在那里不工作”

标签: node.js npm yarnpkg


【解决方案1】:

查看这些问题:

现在确保yarn clean npm clean 可以正常工作。

例如,如果您没有全局安装rimraf,这将不起作用:

$ rimraf ./dist

但这应该可行:

$ ./node_modules/.bin/rimraf ./dist

首先测试这些命令:

npm run clean

和:

yarn run clean

使用 package.json 中定义的"clean": "rimraf ./dist" 脚本。

请注意,当您运行 package.json 脚本时,./node_modules/.bin 会添加到您的 PATH

尝试从简单的命令中运行命令.

【讨论】:

  • 在我的ModuleA package.json 中,我为postinstallpostinstall 定义了yarn run clean && yarn run build。为什么不使用package.json中定义的脚本?
猜你喜欢
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2021-05-15
  • 2014-06-02
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 2016-11-28
相关资源
最近更新 更多