package-envs.js 826 B

1234567891011121314151617181920212223242526272829
  1. const 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. // https://github.com/npm/rfcs/pull/183 defines which fields we put into the environment
  20. module.exports = pkg => {
  21. return packageEnvs({
  22. name: pkg.name,
  23. version: pkg.version,
  24. config: pkg.config,
  25. engines: pkg.engines,
  26. bin: pkg.bin,
  27. }, 'npm_package_')
  28. }