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} }