问题: 在脚本中: 我们要查看env。变量{dev / test / mock}并根据它运行以下脚本。
如果 $ mock为true,则运行脚本 start-mock 其他继续访问真正的测试服务器
方案1: 我们添加了在package.json脚本部分中聚合的命令
e.g. : "test": "export NODE_ENV=dev; grunt", [on linux]
which is "test": "(SET NODE_ENV=dev) & (grunt)", [on win32]
方案2: 可能是bat / sh脚本坐在包中,我们从package.json
中调出它们方案3:(永久解决方案) 不确定它是否已经可用
类似
get arguments from script section: to give flexibility and freedom to end user.
e.g. : "test": "solution.env NODE_ENV=dev; solution grunt"
我们可以让脚本处理(使用process.platform输入)输出取决于操作系统。
“start-pm2”:“if \”%MOCK%\“== \”true \“(npm run mock& pm2 start process.json --env test)else(pm2 start process.json)” ,[windows] for linux if .. fi
答案 0 :(得分:5)
让我们考虑实施第3个解决方案,例如
"scripts": {
"command" : "node bin/command.js"
}
const spawn = require("child_process").spawn
const platform = require("os").platform()
const cmd = /^win/.test(platform)
? `${process.cwd()}\\bin\\command.bat`
: `${process.cwd()}/bin/command.sh`
spawn(cmd, [], { stdio: "inherit" }).on("exit", code => process.exit(code))
取决于环境脚本将执行command.bat
或command.sh
答案 1 :(得分:5)
例如:
// from pacakge.json
"scripts": {
// ...
"dist": "run-script-os",
"dist:win32": "tar -C dist -cvzf %npm_package_name%-%npm_package_version%.tgz .",
"dist:linux": "tar -C dist -cvzf $npm_package_name-$npm_package_version.tgz ."
},
答案 2 :(得分:3)
您需要实施解决方案3.
您可以使用为您执行此操作的cross-env包。