fra*_*ana 3 npm reactjs package.json npm-scripts yarnpkg
标题是发生的错误。我在 package.json 中创建脚本,但我想动态使用npmor yarn。我读过可以使用名为“$npm_execpath”的环境变量来实现此目的,但它不适用于我的配置。这是 package.json 部分的示例:
"scripts": {
"start": "run-p start:jsonserver start:dev",
"start:dev": "node --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js --config ./config/webpack/webpack.standalone.dev.js --open",
"start:prod": "webpack-dev-server --config ./config/webpack/webpack.standalone.prod.js",
"start:container": "webpack-dev-server --host 0.0.0.0 --port 4555",
"start:jsonserver": "node ../Testing.GtP.UI.MockServer/server.js",
"build:dev": "npm run build:standalone:dev && npm run build:module:dev"
},
Run Code Online (Sandbox Code Playgroud)
我正在尝试运行“构建”脚本,如下所示:
yarn build / npm run build
但在每个都显示错误:
“$npm_execpath”未被识别为内部或外部命令、程序或可执行批处理文件
我希望你可以帮助我。提前致谢。
每个操作系统使用不同的语法引用环境变量:
在*nix操作系统(例如 macOS 和 Linux)上,使用美元符号前缀引用它们。例如:
$npm_execpath
^
Run Code Online (Sandbox Code Playgroud)在 Windows 上,它们使用两侧的百分号来引用。例如:
%npm_execpath%
^ ^
Run Code Online (Sandbox Code Playgroud)首先,npm_execpath通过临时将新脚本添加到package.jsonscripts的部分来检查变量是否存在。让我们根据您运行的操作系统来命名该脚本并按如下方式定义它:test-var
对于 Windows(cmd)
如果您运行的是 Windows,请按如下方式定义脚本:
"scripts": {
"test-var": "echo %npm_execpath%",
...
}
Run Code Online (Sandbox Code Playgroud)对于 macOS/Linux (bash)
如果您运行的是 macOS/Linux(即 bash),则按如下方式定义脚本:
"scripts": {
"test-var": "echo $npm_execpath",
...
}
Run Code Online (Sandbox Code Playgroud)然后通过运行以下命令来调用脚本:npm run test-var和yarn test-var。
如果该npm_execpath变量存在,您应该会看到打印到控制台的路径。例如,在 macOS 上运行npm run test-var将打印如下内容:
/usr/local/lib/node_modules/npm/bin/npm-cli.js
在 Windows 上,它将打印类似于以下内容的内容:
C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
运行时它还应该打印路径yarn test-var。但是,路径指向的文件将是对yarn.js. 例如,在 macOS 上它会打印如下内容:
/Users/someone/.yarn/bin/yarn.js
注意:如果运行上述命令时没有将路径打印到控制台,请考虑重新安装yarn和/或npm。
对于 macOS/Linux (bash)
$npm_execpath像您当前所做的那样利用该变量。
对于 Windows (cmd)
将所有脚本中的所有实例替换为:$npm_execpath
node \"%npm_execpath%\"
Run Code Online (Sandbox Code Playgroud)
例如,您当前的脚本名称typecheck:watch将被重新定义为:
"scripts": {
"typecheck:watch": "node \"%npm_execpath%\" run typecheck -- --watch",
...
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我们显式地使用nodejs来调用npm_execpath变量。我们还将npm_execpath变量放在百分号之间(即%...%),并将它们也包含在 JSON 转义双引号中(即\"...\")。
跨平台
必须为每个操作系统使用不同的语法来引用变量并不理想,特别是如果您想同时支持 Windows 和 *nix 操作系统。
对于跨平台( Windows、macOS、Linux )工作的单一语法,我建议安装和使用yarpm。在这种情况下,将所有脚本中的所有实例替换为.$npm_execpathyarpm
例如,您当前的脚本名称typecheck:watch将被重新定义为:
"scripts": {
"typecheck:watch": "yarpm run typecheck -- --watch",
...
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
4276 次 |
| 最近记录: |