package.json 中的脚本对象出现问题 运行 "yarn run"
Trouble running "yarn run" on scripts object in package.json
我在使用 yarn
提供的 run
命令时遇到问题,Facebook 的包管理器 JavaScript。
目前在我的 package.json
文件中,我的 scripts
对象有以下内容。
"scripts": {
"lint": "./node_modules/.bin/eslint --ignore-pattern dist ."
}
当我 运行 以下命令时,它按预期工作,npm run lint
。但是,当我 运行 来自 yarn
和 yarn run lint
的脚本时,我收到以下错误。
Petesta :: λ -> ~/Git/yarn yarn run lint
yarn run v0.15.1
$ "./node_modules/.bin/eslint --ignore-pattern dist ."
sh: ./node_modules/.bin/eslint --ignore-pattern dist .: No such file or directory
error Command failed with exit code 127.
info Visit http://yarnpkg.com/en/docs/cli/run for documentation about this command.
./node_modules/.bin
目录在我的 $PATH
上,我确实注意到如果你有像 date
或 pwd
这样的可执行文件,那么 yarn run some_script_on_date
就可以了不出所料。
实现此功能的一种方法是创建一个单独的 shell 文件,其中包含您要执行的命令。我们称它为 ./scripts/lint.sh
.
#!/bin/bash
./node_modules/.bin/eslint --ignore-pattern dist .
然后 运行 在文件 chmod +x ./scripts/lint.sh
上执行此命令
现在在您的 scripts
对象中添加以下行。
"new_lint": "./scripts/lint.sh"
现在 yarn run new_lint
将 运行 符合预期。
我是不是遗漏了什么,或者这就是 yarn
中调用脚本的方式?我想 运行 命令就像 npm
.
我发现了一个我认为相关的问题:https://github.com/yarnpkg/yarn/pull/809。
yarn 不理解 npm 脚本中的空格。我想这将在下一个版本中修复。我可以在我的电脑上重现这个问题(使用最新的纱线:0.15.1)。
顺便说一下,您不必在 npm 脚本中包含 ./node_modules/.bin
。默认情况下,npm 和 yarn 都会查看该文件夹,如下所述:https://docs.npmjs.com/cli/run-script
所以你的脚本只能是:"lint": "eslint --ignore-pattern dist ."
我在使用 yarn
提供的 run
命令时遇到问题,Facebook 的包管理器 JavaScript。
目前在我的 package.json
文件中,我的 scripts
对象有以下内容。
"scripts": {
"lint": "./node_modules/.bin/eslint --ignore-pattern dist ."
}
当我 运行 以下命令时,它按预期工作,npm run lint
。但是,当我 运行 来自 yarn
和 yarn run lint
的脚本时,我收到以下错误。
Petesta :: λ -> ~/Git/yarn yarn run lint
yarn run v0.15.1
$ "./node_modules/.bin/eslint --ignore-pattern dist ."
sh: ./node_modules/.bin/eslint --ignore-pattern dist .: No such file or directory
error Command failed with exit code 127.
info Visit http://yarnpkg.com/en/docs/cli/run for documentation about this command.
./node_modules/.bin
目录在我的 $PATH
上,我确实注意到如果你有像 date
或 pwd
这样的可执行文件,那么 yarn run some_script_on_date
就可以了不出所料。
实现此功能的一种方法是创建一个单独的 shell 文件,其中包含您要执行的命令。我们称它为 ./scripts/lint.sh
.
#!/bin/bash
./node_modules/.bin/eslint --ignore-pattern dist .
然后 运行 在文件 chmod +x ./scripts/lint.sh
现在在您的 scripts
对象中添加以下行。
"new_lint": "./scripts/lint.sh"
现在 yarn run new_lint
将 运行 符合预期。
我是不是遗漏了什么,或者这就是 yarn
中调用脚本的方式?我想 运行 命令就像 npm
.
我发现了一个我认为相关的问题:https://github.com/yarnpkg/yarn/pull/809。
yarn 不理解 npm 脚本中的空格。我想这将在下一个版本中修复。我可以在我的电脑上重现这个问题(使用最新的纱线:0.15.1)。
顺便说一下,您不必在 npm 脚本中包含 ./node_modules/.bin
。默认情况下,npm 和 yarn 都会查看该文件夹,如下所述:https://docs.npmjs.com/cli/run-script
所以你的脚本只能是:"lint": "eslint --ignore-pattern dist ."