我从在 Mac OSX 下开发的第三方那里得到了一些 NPM 包。他们的构建可以使用 package.json 中的“脚本”对象分为开发或生产。例如:
"scripts": {
"build": "NODE_ENV=dev node make.js --build",
"build-prod": "NODE_ENV=prod node make.js --build",
}
在 Unix 下,可以运行“npm run build”或“npm run build-prod”来构建任一目录(当然,make.js 中有一些条件语句)。 当然,它在 Windows 下不起作用 - 我不得不更改类似这样的命令:
"scripts": {
"build": "set NODE_ENV=dev&& node make.js --build",
"build-prod": "set NODE_ENV=prod&& node make.js --build",
}
(请注意,重要的是不要在'&&'之前放置一个空格 - 否则创建的环境变量中有一个额外的空格,这会破坏 make.js 中的所有这些比较).
但是,我想要一些通用源代码树,无需编辑即可在 Unix 或 Windows 下运行。您能否就如何根据操作系统有条件地拆分构建提出一些想法?
最佳答案
这个问题已经很老了,但是对于现在遇到这个问题的人来说,npm 从 >=5.1.0 版本开始支持设置 shell 来处理脚本。默认情况下,在 Windows 上,npm 在内部使用 cmd.exe 来运行脚本,即使 npm 命令本身是在 git-bash 中键入的。将 git-bash 设置为 shell 后,使用 bash 语法的脚本在 Windows 上可以正常运行:
npm config set script-shell "C:\\Program Files\\Git\\bin\\bash.exe"
这里需要将他的正确路径替换为 git-bash 可执行文件。
关于json - NPM : make package. json 在 Unix (Mac OSX) 和 Windows 下工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24636049/