在跨平台的 npm 脚本中使用环境变量
Using environment variables in npm scripts across platforms
我正在构建一个 package.json 并使用 "npm run" 到 运行 一些脚本,确切地说,https://docs.npmjs.com/misc/scripts。
我的脚本需要扩展一些环境变量,我想让它跨平台兼容。例如,我的脚本会说
"scripts": {
"build": "md %npm_package_version%\helloworld"
}
但是目前运行ning在Windows因为环境变量的扩展。 Linux 会使用 md $npm_package_version\helloworld
.
npm
是否有一种机制来转换环境变量扩展以便跨平台工作?
npm
似乎没有跨平台的方式来扩展环境变量,但你确实有节点供你使用,所以我建议你将所有脚本实现为节点脚本,然后你就可以访问 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');
要使其成为 cross-platform,请使用 cross-var
:
"scripts": {
"build": "cross-var md %npm_package_version%\helloworld"
}
我正在构建一个 package.json 并使用 "npm run" 到 运行 一些脚本,确切地说,https://docs.npmjs.com/misc/scripts。
我的脚本需要扩展一些环境变量,我想让它跨平台兼容。例如,我的脚本会说
"scripts": {
"build": "md %npm_package_version%\helloworld"
}
但是目前运行ning在Windows因为环境变量的扩展。 Linux 会使用 md $npm_package_version\helloworld
.
npm
是否有一种机制来转换环境变量扩展以便跨平台工作?
npm
似乎没有跨平台的方式来扩展环境变量,但你确实有节点供你使用,所以我建议你将所有脚本实现为节点脚本,然后你就可以访问 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');
要使其成为 cross-platform,请使用 cross-var
:
"scripts": {
"build": "cross-var md %npm_package_version%\helloworld"
}