【发布时间】: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 存在于ModuleB 的node_modules/.bin 目录中。如果我在全球范围内安装rimraf,它工作正常。我想知道如何让 npm/yarn 使用来自node_modules/.bin/rimraf 的rimraf?
顺便说一句,我还将rimraf 放入devDependencies 中ModuleB。
我尝试将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"? -
我尝试了
yarn和npm。 -
@AlexBlex use
node_modules/.bin/rimraf ./dist应该可以工作,但我不明白为什么yarn install在构建模块时可以正常工作。但是在构建具有依赖关系的模块时它不起作用。 -
那么将实际问题放在标题中不是更有意义吗?你看,人们回答了你在标题中提出的问题——“如何使用二进制文件”,而不是“为什么它在那里工作而在那里不工作”