22

我有一个与 webpack 捆绑的 JavaScript 应用程序。根据文档,我正在使用此命令开始捆绑:

npx webpack

每次我得到这个输出:

npx: installed 1 in 2.775s

我已经验证了 webpack 命令存在于我./node_modules/.bin正在查找 npx 的目录中。谁能想到为什么每次都下载webpack?完成此步骤最多可能需要 7 秒,这会减慢我的构建速度。

4

2 回答 2

4

npx不会重用以前安装的包,而是在每次运行时拉下该包的依赖项。

于 2019-10-31T11:36:11.850 回答
1

我同意laggingreflex。可能不是webpack每次都在您的情况下安装它。参考这个问题,大约是同一时间。我认为它不适用于较新的版本。


另一个答案具有误导性,或者至少我不太了解它的上下文。

引用自述文件

<command>从本地或中央缓存执行node_modules/.bin,安装运行所需的任何包<command>

默认情况下,npx将检查是否<command>存在于$PATH或本地项目二进制文件中,然后执行。如果<command>没有找到,它将在执行之前安装。

引用发布博客

npx如果调用已经安装的二进制文件,基本上没有开销——将工具的代码直接加载到当前运行的节点进程中就足够聪明了!

调用npx <command>when <command>is not already in your $PATHwill自动npm为你从注册表中安装一个具有该名称的包,并调用它。完成后,已安装的包将不会在您的全局变量中的任何位置,因此您不必担心长期污染。

虽然上面npx作为单独的包引用的内容现在已弃用,npx现在是 的一部分npm-cli,但本质还是一样的,也可以通过官方文档进行验证:

npm此命令允许您从包(本地安装或远程获取)运行任意命令。

如果本地项目依赖项中不存在任何请求的包,则将它们安装到npm缓存中的文件夹中,该文件夹将添加到PATH执行过程中的环境变量中。

于 2021-07-17T15:28:47.647 回答