【发布时间】:2014-07-08 15:38:49
【问题描述】:
我从在 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 下工作而无需编辑。您能否就如何根据操作系统有条件地拆分构建提供一些想法?
【问题讨论】:
-
@alandarev:第二个链接很有趣,但我不确定如何将其压缩到“脚本”下的命令中。我想我需要创建两个脚本——比如 dev-make 和 prod-make——它们只会设置 NODE_ENV 并调用 make。请原谅我没有直接回复你 - 只是最初的声誉,我还不能回复......
-
使用npmjs.com/package/cross-env,它非常易于使用。