Mir*_*rCZ 6 node.js npm npm-scripts yarnpkg
我需要为 npm 和 yarn 编写通用脚本。
{
"scripts": {
"build:clean": "rim-raf dist",
"test:clean": "rim-raf coverage",
"clean": "npm run build:clean; npm run test:clean"
}
}
Run Code Online (Sandbox Code Playgroud)
{
"scripts": {
"build:clean": "rim-raf dist",
"test:clean": "rim-raf coverage",
"clean": "yarn run build:clean; yarn run test:clean"
}
}
Run Code Online (Sandbox Code Playgroud)
{
"scripts": {
"build:clean": "rim-raf dist",
"test:clean": "rim-raf coverage",
"clean": "$_ run build:clean; $_ run test:clean"
}
}
Run Code Online (Sandbox Code Playgroud)
但有时它不能正常工作。
存在一些合法的方法来做到这一点?
我想我找到了最佳解决方案。
我在npm env 中搜索并将其与yarn env 进行了比较。我发现变量$npm_execpath包含使用的包管理器的路径。(对于 Windows %npm_execpath%)
{
"scripts": {
"build:clean": "rim-raf dist",
"test:clean": "rim-raf coverage",
"clean": "$npm_execpath run build:clean; $npm_execpath run test:clean"
}
}
Run Code Online (Sandbox Code Playgroud)
如果添加包cross-var,脚本可以在 Linux、Windows 和 Mac 上运行。
{
"scripts": {
"build:clean": "rim-raf dist",
"test:clean": "rim-raf coverage",
"clean": "cross-var $npm_execpath run build:clean; cross-var $npm_execpath run test:clean"
}
}
Run Code Online (Sandbox Code Playgroud)