codekingpro/portable-devtools
115k
1const packageEnvs = (vals, prefix, env = {}) => {
2 for (const [key, val] of Object.entries(vals)) {
3 if (val === undefined) {
4 continue
5 } else if (val === null || val === false) {
6 env[`${prefix}${key}`] = ''
7 } else if (Array.isArray(val)) {
8 val.forEach((item, index) => {
9 packageEnvs({ [`${key}_${index}`]: item }, `${prefix}`, env)
10 })
11 } else if (typeof val === 'object') {
12 packageEnvs(val, `${prefix}${key}_`, env)
13 } else {
14 env[`${prefix}${key}`] = String(val)
15 }
16 }
17 return env
18}
19
20// https://github.com/npm/rfcs/pull/183 defines which fields we put into the environment
21module.exports = pkg => {
22 return packageEnvs({
23 name: pkg.name,
24 version: pkg.version,
25 config: pkg.config,
26 engines: pkg.engines,
27 bin: pkg.bin,
28 }, 'npm_package_')
29}
30 