2017-10-09 17 views
0

Nous avons une application NodeJS + Express et voudrions forcer l'application à exécuter avec succès que si npm installnpm -v est égal à process.env.npm_package_engines_npm, qui est la version de NPM définie dans package.jsonVersion NPM forcé dans l'application NodeJS

Est-ce possible en quelque sorte?

La raison de cette exigence est d'être 100% sûr que toutes les dépendances seront installées de la même manière dans toutes les instances de développement depuis récemment nous avons rencontré quelques problèmes que certains développeurs avaient la version 5.2.0 et 5.3.0 et à cause de cela, les résultats n'étaient pas les mêmes.

Répondre

2

Vous pouvez utiliser un fichier de script js et exécuter node preinstall.js

// preinstall.js 
const exec = require('child_process').exec; 

exec('npm -v', function (error, stdout, stderr) { 
    if (error) { 
    console.log('error: ' + error + stderr); 
    return; 
    } 

    const nodeVersion = stdout; 

    if (process.env.npm_package_engines_npm === nodeVersion) { 
    exec('npm install'); 
    } 
}); 
1

Vous pouvez spécifier le engines property in your package.json

qui imprimera des avertissements si la version NGP ne correspond pas à ce que vous avez spécifié (ce à moins indique clairement à l'utilisateur qu'il doit mettre à jour npm même si cela n'empêche pas l'installation proprement dite).

Si vous passez le drapeau engine-strict CLI puis MNP erreur si les versions ne correspondent pas: sais

$ npm install --engine-strict 
+0

Je ne l'ai pas celui-ci. Aussi très bon en tant qu'exigence secondaire pour exécuter 'npm install' –