// package.json
{ "scripts": { "log": "node index.js", } }
// index.js
function logProcessEnv(key){ console.log(`process.env['${key}']`, process.env[key]); }
logProcessEnv('npm_config_foo');
问题:
`npm run log` 和 `yarn log` 有没有区别?
首先这里读到了npm_config_foo变量,那么这个变量怎么来的呢?
比如:
npm config set foo=123
设置变量 foo 为123, 同时会往 .npmrc (用户主目录) 写入 foo=123 的配置信息 (永久)
同时,nodejs脚本可以通过process.env.npm_config_foo读取到123
还有其他设置么?有 --xxx=yyy 的形式,优先级最高
npm run task --foo=123
yarn task 不支持 --foo=123
.npmrc
除了用户主目录外,项目根目录也可以设置.npmrc文件,自行配置foo,优先级高于全局.npmrc
foo=123
yarn config
会往.yarnc写配置,写法和 npm config有所区别,不能有等号,不然整串被当成一个整体,设置为true
yarn config set foo 123
.yarnrc
内容格式也不一样
foo 123
使用注意
用yarn run和用npm run读取的配置不同(读的.npmrc还是.yarnrc?)
当运行npm run log 时,读取的npm_config_foo 来自.npmrc
当运行yarn log时,读取的npm_config_foo来自.yarnrc (如果没有配置在.yarnrc,会读取.npmrc)
结论:别混用npm和yarn