Existe-t-il un moyen de spécifier aux nouvelles versions de npm d'utiliser uniquement "lockfileVersion": 1 ?

Le gestionnaire de paquets de l'environnement NodeJS NPM est étroitement lié à NodeJS. Il a connu de nombreuses versions différentes au cours de son développement. Même si les développeurs ont fait leur possible pour avoir une grande compatibilité entre les versions, il existe quand même des changements cassants, par exemple avec la version 7 de NPM.

Il existe dans le fichier "package-lock.json" une directive appelée "lockfileVersion". Cette direction indique une version spécifique du fichier qui verrouille le projet et a changé au fur et à mesure des versions de NPM. Il n'y a pas de moyen de spécifier aux versions récentes de NPM d'utiliser des versions anciennes. La solution consiste à indiquer les versions spécifiques de Node et NPM pour votre projet.

Pour indiquer une version spécifique de NodeJS ou de NPM à utiliser dans votre projet, vous pouvez ajouter la directive "engines" dans votre fichier de configuration "package.json".

"engines" : {
    "node" : " >=7.5.0",
    "npm" : "8.7.0"
}

Cette restriction ne fonctionnera que pour les installations dans lesquelles la variable d'environnement "engine_strict" est paramétrée avec la valeur "true". Il est quand même possible d'imposer la contrainte de respect des versions de NodeJS et NPM en ajoutant dans votre projet le fichier ".npmrc". Ajoutez ensuite la directive suivante pour indiquer que l'utilisateur doit respecter les versions de plateformes demandées.

engine_strict=true

Si vous souhaitez utiliser un projet paramétré avec des versions spécifiques de NodeJS ou NPM, des utilitaires permettent d'avoir en parallèle plusieurs versions installées sur son ordinateur. C'est le cas de "nvm" ou "n" par exemple.

Une dernière solution, qui ne nécessite pas d'avoir NodeJS ou NPM installé, est d'utiliser le logiciel Docker et sa technologie de container. Rendez-vous sur la documentation de Docker pour connaître tout ce qu'il y a à savoir sur la création et l'utilisation d’un container : https://docs.docker.com/.

JavaScript