Eri*_*ric 8 npm npm-scripts yarnpkg
使用npm或yarn,npm脚本指定的脚本是否可以知道npm脚本本身的名称?例如:
"scripts": {
"foo": "echo Original command: $0",
"bar": "echo Original command: $0"
}
Run Code Online (Sandbox Code Playgroud)
我希望这两个脚本的结果类似于:
Original command: yarn run foo
Original command: yarn run bar
Run Code Online (Sandbox Code Playgroud)
但我实际得到的是:Original command: /bin/sh。
如果它有所不同,它只是我需要的脚本的名称,而不是部分yarn run,所以像这样的输出Original command: foo就可以了。
NPM 添加npm_lifecycle_event环境变量。它类似于package.json vars。
在*nix平台上,npm 使用sh作为运行 npm 脚本的默认 shell,因此您的脚本可以定义为:
"scripts": {
"foo": "echo The script run was: $npm_lifecycle_event",
"bar": "echo The script run was: $npm_lifecycle_event"
}
Run Code Online (Sandbox Code Playgroud)
注意:$引用变量的美元前缀。
在 Windows 上,npm 使用cmd.exe作为运行 npm 脚本的默认 shell,因此您的脚本可以定义为:
"scripts": {
"foo": "echo The script run was: %npm_lifecycle_event%",
"bar": "echo The script run was: %npm_lifecycle_event%"
}
Run Code Online (Sandbox Code Playgroud)
注意:%用于引用变量的前导和尾随百分号。
对于跨平台,您可以:
利用cross-var启用单一语法,即$按照*nix语法使用美元符号前缀。
或者,利用 node.js 命令行选项-p来评估并打印以下内联 JavaScript 的结果:
"scripts": {
"foo": "node -e \"console.log('The script run was:', process.env.npm_lifecycle_event)\"",
"bar": "node -e \"console.log('The script run was:', process.env.npm_lifecycle_event)\""
}
Run Code Online (Sandbox Code Playgroud)
注意在这个例子中我们:
npm_lifecycle_event使用node.js process.env属性访问环境变量。console.log(而不是echo)将结果打印到stdout| 归档时间: |
|
| 查看次数: |
2093 次 |
| 最近记录: |