pulsar/script/lib/backup-node-modules.js
Wliu 7a93e9d8c4 👕
2017-05-30 15:42:16 -04:00

42 lines
1.3 KiB
JavaScript

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