Using environment variables in npm scripts across

2019-04-19 18:23发布

I am building a package.json and use "npm run" to run some scripts, to be exactly, https://docs.npmjs.com/misc/scripts.

My script would need to expand some environment variables and I want to make it cross platform compatible. For example, my script would say

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

But it's currently running on Windows because the expansion of environment variables. Linux would use md $npm_package_version\helloworld.

Does npm comes with a mechanism to convert environment variables expansion so that it works across platforms?

2条回答
Juvenile、少年°
2楼-- · 2019-04-19 18:44

npm doesn't appear to have a cross platform way to expand environment variables, but you do have node at your disposal, so I'd recommend implementing all your scripts as node scripts, then you can access process.env and cross-platform filesystem functions, like 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');
查看更多
兄弟一词,经得起流年.
3楼-- · 2019-04-19 18:47

To make it cross-platform, use cross-var:

"scripts": {
  "build": "cross-var md %npm_package_version%\helloworld"
}
查看更多
登录 后发表回答