发布于:2021-01-15 09:36:38
0
131
0
如今,大多数前端项目将涉及某种NPM软件包。有时,在浏览这些软件包的文档时,我会看到建议安装这样的软件包。
yarn global add <package>
或像这样。
npm install --global <package>
在这两个示例中,软件包都是全局安装的。这意味着您可以<package>从系统上的任何目录运行命令。
这是可行的,但是全局安装软件包有一些缺点。
如果您与一组开发人员一起工作,则很难保证每个人都在运行相同的程序包。
全局只能安装一个版本。如果您有依赖于包的不同版本的不同项目,这将导致问题。
在本文中,我将向您展示三种不同的方法,您可以使用这些方法来运行软件包,而不必全局安装它们。
快速设置
在本文中,我们将安装一个名为Figlet的小型CLI工具,该工具可打印ASCII艺术文字。创建一个空目录并导航到该目录。然后添加以下package.json文件:
{ "name": "example", "license": "UNLICENSED", "dependencies": { "figlet-cli": "^0.1.0" } }
运行yarn install或npm install(根据您的喜好)安装软件包。
注意:从现在开始,yarnandnpm命令完全相同,因此我仅列出yarn版本。
编辑$ PATH
像本地安装软件包一样运行本地安装软件包的第一种方法是编辑$PATH环境变量。该$PATH变量告诉您的系统在哪个目录中查找可执行文件。
Yarn和NPM的便捷功能之一是它们都包含一个.bin目录,node_modules该目录中包含指向所有已安装的可执行文件的符号链接。您可以轻松地将此文件夹添加到您的路径。这里的窍门是修改您的目录$PATH以包含本地 node_modules/.bin目录。这将使您可以运行任何本地NPM CLI工具,就好像它是全局安装的一样。
首先,您需要确定正在运行哪个shell。为此,您可以在CLI中键入以下内容。
echo $SHELL
如果您尚未配置自定义外壳,则可能为zsh或bash。如果是bash,请打开~/.bash_profile文件。如果是zsh,请打开~/.zshenv。如果所需文件不存在,请创建它。
接下来,将以下内容添加到底部。请注意,这./node_modules/.bin是相对路径。这意味着它将被附加到您当前所在的任何目录中。
export PATH="./node_modules/.bin:$PATH"
就是这样!重新启动外壳程序,导航到创建的目录,然后尝试运行figlet。
figlet Aww yeah
你应该看到这样的东西。很整洁的,对吧?
_ __ __ _ / __ ____ __ / /__ __ _| |__ / _ / / / / / / V / _ / _` | '_ / ___ V V / V V / | | __/ (_| | | | | /_/ __/_/ _/_/ |_|___|__,_|_| |_|
纱线运行工具
接下来是在中定义命令package.json。要添加命令,您要做的就是添加一个scripts部分,其中包含您的命令名称和您要运行的内容。在此示例中,我添加了一个aww-yeah命令。
{ "name": "example", "license": "UNLICENSED", "dependencies": { "figlet-cli": "^0.1.0" }, "scripts": { "aww-yeah": "figlet Aww Yeah" } }
您可以使用运行自定义命令yarn run <command>。大多数命令也可以缩短为yarn <command>。尝试一下yarn aww-yeah!
您甚至可以将参数传递给自定义命令。尝试将ascii下面列出的命令添加到 scripts并运行yarn ascii Aww Yeah。
"scripts": { "aww-yeah": "figlet Aww Yeah", "ascii": "figlet" }
这是一个真实的例子。我是ESLint和Jest的忠实拥护者。我的几乎所有项目都在其中定义了这些命令。
"scripts": { "lint": "eslint --max-warnings=0 .", "test": "jest" }
这很棒,因为我和我的团队都可以共享这些命令。它们也是自我记录的,因此,如果某人是某个软件包的新手,他们可以浏览一下package.json以查看可用的命令。
NPX
最后,我们有NPX,它是NPM的打包程序。这个方便的工具使您可以运行CLI命令,而无需在本地安装软件包。这对于只需要运行一次的工具(例如生成器)非常有用。
如果已安装Node.js,则可能已在您的计算机上安装了NPX。如果没有,您可以使用进行全局安装yarn global add npx。
让我们试一下figlet。
npx figlet Aww Yeah
那不是那么容易吗?
有时,您会遇到NPX不知道如何查找的命令。我的Yeoman Generators存储库就是一个例子。在这种情况下,您需要通过-p标记来告诉NPX哪个程序包显式运行。
npx -p yo -p @landonschropp/generator-eslint yo @landonschropp/eslint
全部完成!
这就是结果。现在,你可以在本地安装任何NPM模块,并像运行全局模块一样运行该命令。我个人经常使用这三种方法。我希望你会发现它们像我一样有用!
作者介绍