Maison >interface Web >js tutoriel >[Organisation et partage] Comment déterminer quel gestionnaire de packages npm est actuellement utilisé

[Organisation et partage] Comment déterminer quel gestionnaire de packages npm est actuellement utilisé

青灯夜游
青灯夜游avant
2023-02-01 20:00:352249parcourir

Comment déterminer le gestionnaire de packages npm actuel ? L'article suivant vous expliquera comment déterminer quel gestionnaire de packages npm vous utilisez actuellement. J'espère qu'il vous sera utile. Il est plus courant d'utiliser npm pour l'installation des dépendances. Cependant, à mesure que la taille et le nombre de projets augmentent, npm aura des problèmes de vitesse d'installation lente et de taille excessive. L'utilisation de gestionnaires de packages tels que fil et pnpm peut résoudre les problèmes ci-dessus.

Si vous souhaitez forcer les membres de l'équipe à utiliser le même gestionnaire de packages, ou si vous souhaitez gérer une logique différente pour différents gestionnaires de packages. Vous devez déterminer quel gestionnaire de packages vous utilisez actuellement. [Organisation et partage] Comment déterminer quel gestionnaire de packages npm est actuellement utilisé

Méthode d'implémentation

Vue Warehouse oblige actuellement les développeurs à utiliser pnpm, et la méthode d'implémentation est également très intelligente.

Tout d'abord, lors de l'exécution du script npm, exécutez le pré-script via la commande intégrée pre et obtenez le gestionnaire de packages via process.env.npm_execpath dans le pré-script. -chemin du fichier script pour déterminer le type de gestionnaire de packages utilisé par le développeur. [Tutoriels associés recommandés : tutoriel vidéo nodejs

]Le code pertinent est le suivant :

// package.json
"scripts": {
    "preinstall": "node ./scripts/preinstall.mjs",
},
// preinstall.mjs
if (!/pnpm/.test(process.env.npm_execpath || '')) {
  console.warn(
    `\u001b[33mThis repository requires using pnpm as the package manager ` +
      ` for scripts to work properly.\u001b[39m\n`
  )
  process.exit(1)
}

pre commandpre 命令运行前置脚本,在前置脚本中通过 process.env.npm_execpath 获取包管理器的文件路径,从而判断开发者使用的包管理器种类。【相关教程推荐:nodejs视频教程

相关代码如下:

"scripts": {
    "dev": "vite",
},
"scripts": {
    "dev": "vite",
    "predev": "node predev.js"
    "postdev": "node postdev.js"
},

pre 命令

在 package.json 中,我们应该非常熟悉 npm script 的运行方式。

// scripts/checkYarn.js
if (!/yarn\.js$/.test(process.env.npm_execpath || '')) {
    console.warn(
    '\u001b[33mThis repository requires Yarn 1.x for scripts to work properly.\u001b[39m\n'
  )
  process.exit(1)
}

通过阅读以上代码,我们就可以通过 npm run dev 来运行脚本了。

除了自定义脚本名称,npm 还内置了两个 prepost 指令,把 pre 拼接到自定义名称前,就可以实现前置钩子指令了。

// preinstall.mjs
if (!/pnpm/.test(process.env.npm_execpath || '')) {
  console.warn(
    `\u001b[33mThis repository requires using pnpm as the package manager ` +
      ` for scripts to work properly.\u001b[39m\n`
  )
  process.exit(1)
}

这样运行 npm run dev 指令的时候,终端会自动先运行 npm run predev ,再运行 npm run dev ,最后运行 npm run postdev,通过这种方式,我们就可以在自定义脚本运行前,先对包管理器进行判断了。

process.env.npm_execpath

vue@3.2.20 之前,Vue 的包管理器为 yarn ,之后改为了 pnpm。

使用 yarn 时,包管理器检查的代码为:

rrreee

改为 pnpm 时,包管理器检查的代码为:

rrreee

通过对比,vue 是通过 process.env.npm_execpath 来判断包管理器的种类的,通过获取包管理器的路径,配合关键词检索,就可以完成包管理的种类判断了。

总结

通过借助 Vue 仓库 的这个方式,我们可以通过 npm script 内置的 pre 命令运行前置脚本,在前置脚本中通过 process.env.npm_execpath

Dans package.json, nous devrions être très familiers avec la façon dont le script npm s'exécute.

rrreeeEn lisant le code ci-dessus, nous pouvons exécuter le script via npm run dev.

En plus des noms de script personnalisés, npm dispose également de deux commandes pre et post intégrées avant le nom personnalisé Pre. -des instructions de crochet peuvent être implémentées. 🎜rrreee🎜Lorsque vous exécutez la commande npm run dev comme ceci, le terminal exécutera automatiquement npm run predev d'abord, puis npm run dev, et enfin exécutez npm run postdev, de cette façon, nous pouvons juger le gestionnaire de paquets avant d'exécuter le script personnalisé. 🎜

🎜process.env.npm_execpath🎜

🎜Dans vue@3.2.20🎜 Avant, le gestionnaire de paquets de Vue était fil, et plus tard, il a été remplacé par pnpm. 🎜🎜Lors de l'utilisation de fil, le code vérifié par le gestionnaire de paquets est : 🎜rrreee🎜Lorsqu'il est modifié en pnpm, le code vérifié par le gestionnaire de paquets est : 🎜rrreee🎜Par comparaison, vue passe process.env.npm_execpath code > Pour déterminer le type de gestionnaire de packages, en obtenant le chemin du gestionnaire de packages et en effectuant une recherche par mots-clés, vous pouvez compléter la détermination du type de gestion de packages. 🎜<h2 data-id="heading-4">🎜Résumé🎜🎜🎜En utilisant l'🎜Vue Warehouse🎜, nous pouvons utiliser le <code>pré intégré du script npm La commande exécute le pré-script. Dans le pré-script, utilisez process.env.npm_execpath pour obtenir le chemin du fichier du gestionnaire de packages afin de déterminer le type de gestionnaire de packages utilisé par le développeur. 🎜🎜Pour plus de connaissances sur les nœuds, veuillez visiter : 🎜tutoriel Nodejs🎜 ! 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer