json - NPM : make package. json 在 Unix (Mac OSX) 和 Windows 下工作

标签 json windows node.js unix

我从在 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/

相关文章:

iphone - AlamofireNetworkActivityIndi​​cator 不工作

json - PlayFramework:如何在不将可选字段设置为 null 的情况下生成 JSON

node.js - 快速应用程序中的工作线程

node.js - 缓存来自 Node/Express/Redis 的压缩响应

javascript - 如何使用 jQuery 修改 JSON 内容

android - 如何从我的位置在 Google Maps API V2 中绘制路线

windows - 如何在 Windows 上通过 bash 访问 AWS SAM-CLI?

c# - 发送 HTTP header 后,Windows Auth Server 无法设置状态

windows - 我可以设置一个COM +应用程序来创建 “single-use”外向服务器吗?

javascript - 在我的 Nodejs Controller 中 promise 不会互相等待