const fs = require('fs-extra') const path = require('path') module.exports = function (packagePath) { const nodeModulesPath = path.join(packagePath, 'node_modules') const nodeModulesBackupPath = path.join(packagePath, 'node_modules.bak') if (fs.existsSync(nodeModulesBackupPath)) { throw new Error('Cannot back up ' + nodeModulesPath + '; ' + nodeModulesBackupPath + ' already exists') } // some packages may have no node_modules after deduping, but we still want // to "back-up" and later restore that fact if (!fs.existsSync(nodeModulesPath)) { const msg = 'Skipping backing up ' + nodeModulesPath + ' as it does not exist' console.log(msg.gray) const restore = function stubRestoreNodeModules () { if (fs.existsSync(nodeModulesPath)) { fs.removeSync(nodeModulesPath) } } return {restore, nodeModulesPath, nodeModulesBackupPath} } fs.copySync(nodeModulesPath, nodeModulesBackupPath) const restore = function restoreNodeModules () { if (!fs.existsSync(nodeModulesBackupPath)) { throw new Error('Cannot restore ' + nodeModulesPath + '; ' + nodeModulesBackupPath + ' does not exist') } if (fs.existsSync(nodeModulesPath)) { fs.removeSync(nodeModulesPath) } fs.renameSync(nodeModulesBackupPath, nodeModulesPath) } return {restore, nodeModulesPath, nodeModulesBackupPath} }