1const reifyOutput = require('./reify-output.js') 2const ini = require('ini') 3const { writeFile } = require('fs').promises 4const { resolve } = require('path') 5 6const reifyFinish = async (npm, arb) => { 7 await saveBuiltinConfig(npm, arb) 8 reifyOutput(npm, arb) 9} 10 11const saveBuiltinConfig = async (npm, arb) => { 12 const { options: { global }, actualTree } = arb 13 if (!global) { 14 return 15 } 16 17 // if we are using a builtin config, and just installed npm as 18 // a top-level global package, we have to preserve that config. 19 const npmNode = actualTree.inventory.get('node_modules/npm') 20 if (!npmNode) { 21 return 22 } 23 24 const builtinConf = npm.config.data.get('builtin') 25 if (builtinConf.loadError) { 26 return 27 } 28 29 const content = ini.stringify(builtinConf.raw).trim() + '\n' 30 await writeFile(resolve(npmNode.path, 'npmrc'), content) 31} 32 33module.exports = reifyFinish 34