跨平台使用环境变量在npm脚本中

14

我正在构建一个package.json文件,并使用“npm run”运行一些脚本,具体来说请参考https://docs.npmjs.com/misc/scripts

我的脚本需要扩展一些环境变量,并且希望使它跨平台兼容。例如,我的脚本可能会这样说

"scripts": {
  "build": "md %npm_package_version%\helloworld"
}

但它目前在Windows上运行,因为使用了环境变量扩展。Linux将使用md $npm_package_version\helloworld

npm是否带有一种机制来转换环境变量扩展,以便跨平台使用?


这个回答解决了你的问题吗?如何以跨平台的方式设置环境变量? - KyleMit
2个回答

15

为了实现跨平台,请使用cross-var

"scripts": {
  "build": "cross-var md %npm_package_version%\helloworld"
}

11

npm似乎没有一种跨平台的方式来扩展环境变量,但是你可以使用node,将所有脚本实现为node脚本,然后你就可以访问process.env和跨平台文件系统函数,例如mkdirSync

package.json

"scripts": {
  "build": "node utils/mdkir.js"
}

utils/mkdir.js

'use strict';

var fs = require('fs');

fs.mkdirSync(process.env.npm_package_version + '/helloworld');

1
“npm似乎没有跨平台扩展环境变量的方法” - 我得出了同样的结论。你有官方文档的引用吗? - Pavlo
4
我找到的最相似的是这个:https://docs.npmjs.com/misc/config#shell 它解释了在Windows上默认的shell是cmd - morloch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接