2024-02-29 07:28:15 -08:00
|
|
|
const packageEnvs = (vals, prefix, env = {}) => {
|
2020-10-02 17:52:19 -04:00
|
|
|
for (const [key, val] of Object.entries(vals)) {
|
2022-02-24 21:41:49 +00:00
|
|
|
if (val === undefined) {
|
2020-10-02 17:52:19 -04:00
|
|
|
continue
|
2024-02-29 07:28:15 -08:00
|
|
|
} else if (val === null || val === false) {
|
|
|
|
env[`${prefix}${key}`] = ''
|
|
|
|
} else if (Array.isArray(val)) {
|
|
|
|
val.forEach((item, index) => {
|
|
|
|
packageEnvs({ [`${key}_${index}`]: item }, `${prefix}`, env)
|
|
|
|
})
|
|
|
|
} else if (typeof val === 'object') {
|
|
|
|
packageEnvs(val, `${prefix}${key}_`, env)
|
2022-02-24 21:41:49 +00:00
|
|
|
} else {
|
2024-02-29 07:28:15 -08:00
|
|
|
env[`${prefix}${key}`] = String(val)
|
2022-02-24 21:41:49 +00:00
|
|
|
}
|
2020-10-02 17:52:19 -04:00
|
|
|
}
|
|
|
|
return env
|
|
|
|
}
|
|
|
|
|
2024-02-29 07:28:15 -08:00
|
|
|
// https://github.com/npm/rfcs/pull/183 defines which fields we put into the environment
|
|
|
|
module.exports = pkg => {
|
|
|
|
return packageEnvs({
|
|
|
|
name: pkg.name,
|
|
|
|
version: pkg.version,
|
|
|
|
config: pkg.config,
|
|
|
|
engines: pkg.engines,
|
|
|
|
bin: pkg.bin,
|
|
|
|
}, 'npm_package_')
|
|
|
|
}
|