¿Hay alguna manera de que npm reconstruya todos los módulos en node_modules? ¿Algo como npm Rebuild que elimina todos los artefactos de compilación pero no los reconstruye?Módulos limpios de NPM
Respuesta
Usted puede simplemente eliminar el directorio node_module
rm -rf node_modules/
Esto eliminaría la fuente de node_modules así como la salida compilada, por lo que no responde la pregunta. – theGecko
Si tiene dependencias vinculadas con el enlace npm, también podría eliminar estos módulos fuente en su directorio de origen, lo que puede ser bastante doloroso ... – cschuff
De hecho, me gusta esto. A veces todo lo que necesita es eliminar los node_modules y volver a instalarlos –
Usted puede tomar ventaja del comando 'NPM caché' que descarga el archivo comprimido del paquete y descomprime en el directorio de caché de la NGP.
La fuente puede ser copiado en.
Usando las ideas extraídas de https://groups.google.com/forum/?fromgroups=#!topic/npm-/mwLuZZkHkfU me ocurrió con la escritura siguiente nodo. Sin garantías, YMMV, etcétera.
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 %[email protected]%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());
Me resulta muy extraño que una funcionalidad tan básica, que en realidad es recomendada por npm, requiera un hack para lograrlo. ¿Qué hacen todos los demás? Simplemente ignore la recomendación y use 'npm install'? – VitalyB
En una palabra sin.
En dos, aún no.
Hay, sin embargo, un problema abierto para --no-build
para npm install
para realizar una instalación sin compilación, que podría utilizarse para hacer lo que está pidiendo.
Ver this open issue.
- 1. Weblogic clientes de servicio web. (Referencias limpios)
- 2. Node Manager Versión (NVM) NPM la instalación de módulos de carpeta común
- 3. ¿Dónde colocamos los módulos de nodos que instalamos por npm en un proyecto Meteor?
- 4. ¿Cómo podemos o podemos usar módulos de nodos vía npm con Meteor?
- 5. npm gestión de dependencias anidadas
- 6. ¿Cómo arreglo la ubicación global de npm?
- 7. NodeJS y NPM: problemas siguientes recomendación para comprobar módulos en git
- 8. Determine los módulos NPM utilizados desde una aplicación node.js en ejecución
- 9. ¿Dónde busca npm un archivo package.json?
- 10. Evite la actualización npm después de cada implementación en Heroku
- 11. npm install sin ssl
- 12. npm package.json install globally?
- 13. npm install sqlite3 error
- 14. Node.js: NPM instalación falla
- 15. Cómo administrar los módulos internos Node.JS
- 16. Mejor flujo de trabajo usando node.js npm y git
- 17. módulos Zend en módulos
- 18. ¿Cómo actualizo devDependencies en NPM?
- 19. Compilación coffeescript en npm install
- 20. UglifyJS utilizando NPM en Windows
- 21. Cómo puedo clonar entornos limpios para probar un instalador
- 22. NPM paquete de scripts 'bin' para Windows
- 23. npm error de instalación en Linux (ubuntu)
- 24. Error de NPM en cualquier comando
- 25. NPM en Cygwin: fin de archivo inesperado
- 26. ayuda que requiere un módulo de NPM en Node.js
- 27. NodeJS requiriendo módulos
- 28. ¿Cómo usar el módulo npm en el cliente Meteor?
- 29. npm instalar git bifurcado con el submódulo
- 30. paquete.json generación/npm paquetes no utilizados
¿Podría explicar por qué necesita hacer esto? –
Pensé que nunca preguntarías. He estado revisando mi directorio node_modules en git como se recomienda en http://www.mikealrogers.com/posts/nodemodules-in-git.html. Cuando agrego un módulo nuevo o actualizo uno actual, termino con artefactos de construcción en git que no deberían estar allí y tengo que limpiarlos. Estaba pensando que si podía limpiarlos primero el proceso sería un poco más suave. –
Una nota rápida: ahora que NPM admite 'shrinkwrap' (vea http://npmjs.org/doc/shrinkwrap.html), puede bloquear las versiones de TODAS sus dependencias (en lugar de solo las de nivel superior). –