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

Com*_*lim 13 cross-platform npm

我正在构建一个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提供了一种转换环境变量扩展的机制,以便它可以跨平台工作?

Mar*_*oon 11

要使其跨平台,请使用cross-var:

"scripts": {
  "build": "cross-var md %npm_package_version%\helloworld"
}
Run Code Online (Sandbox Code Playgroud)


mor*_*och 9

npm似乎没有跨平台的方式来扩展环境变量,但你确实有自己的节点,所以我建议你将所有的脚本都作为节点脚本实现,然后你可以访问process.env和跨平台文件系统功能,比如mkdirSync.

的package.json

"scripts": {
  "build": "node utils/mdkir.js"
}
Run Code Online (Sandbox Code Playgroud)

utils的/ mkdir.js

'use strict';

var fs = require('fs');

fs.mkdirSync(process.env.npm_package_version + '/helloworld');
Run Code Online (Sandbox Code Playgroud)

  • 我得到的最近的是:https://docs.npmjs.com/misc/config#shell,它解释了Windows上的默认shell是`cmd`. (4认同)