NPM清洁模块
有没有办法让npmbuild立node_modules下的所有模块? 像npm重build,删除所有构build工件,但不重build它们?
您可以删除node_module目录
rm -rf node_modules/
您可以利用“npm cache”命令下载软件包压缩包并将其解压到npmcaching目录中。
然后可以复制源代码。
使用从https://groups.google.com/forum/?fromgroups=#!topic/npm-/mwLuZZkHkfU收集的想法,我想出了以下节点脚本。; 没有保证,YMMV,等等。
var fs = require('fs'), path = require('path'), exec = require('child_process').exec, util = require('util'); var packageFileName = 'package.json'; var modulesDirName = 'node_modules'; var cacheDirectory = process.cwd(); var npmCacheAddMask = 'npm cache add %s@%s; echo %s'; var sourceDirMask = '%s/%s/%s/package'; var targetDirMask = '%s/node_modules/%s'; function deleteFolder(folder) { if (fs.existsSync(folder)) { var files = fs.readdirSync(folder); files.forEach(function(file) { file = folder + "/" + file; if (fs.lstatSync(file).isDirectory()) { deleteFolder(file); } else { fs.unlinkSync(file); } }); fs.rmdirSync(folder); } } function downloadSource(folder) { var packageFile = path.join(folder, packageFileName); if (fs.existsSync(packageFile)) { var data = fs.readFileSync(packageFile); var package = JSON.parse(data); function getVersion(data) { var version = data.match(/-([^-]+)\.tgz/); return version[1]; } var callback = function(error, stdout, stderr) { var dependency = stdout.trim(); var version = getVersion(stderr); var sourceDir = util.format(sourceDirMask, cacheDirectory, dependency, version); var targetDir = util.format(targetDirMask, folder, dependency); var modulesDir = folder + '/' + modulesDirName; if (!fs.existsSync(modulesDir)) { fs.mkdirSync(modulesDir); } fs.renameSync(sourceDir, targetDir); deleteFolder(cacheDirectory + '/' + dependency); downloadSource(targetDir); }; for (dependency in package.dependencies) { var version = package.dependencies[dependency]; exec(util.format(npmCacheAddMask, dependency, version, dependency), callback); } } } if (!fs.existsSync(path.join(process.cwd(), packageFileName))) { console.log(util.format("Unable to find file '%s'.", packageFileName)); process.exit(); } deleteFolder(path.join(process.cwd(), modulesDirName)); process.env.npm_config_cache = cacheDirectory; downloadSource(process.cwd());
一句话没有 。
在两个, 还没有 。
然而,有一个开放的问题--no-build
无编译标志npm install
执行安装,而不build设,这可以用来做你在问什么。
看到这个公开的问题 。