为什么npx每次都安装webpack?

时间:2018-03-15 14:44:23

标签: node.js npm webpack npx

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

npx: installed 1 in 2.775s

每次我得到这个输出:

./node_modules/.bin

我已经验证了webpack命令存在于我的TRANSFORM Sum(Format([Chg_TtlElecChg],"Currency")) AS Expr2 SELECT (Format([Date],"mmm"" '""yy")) AS Expr1 FROM xtblRate_Calc WHERE (((xtblRate_Calc.Name)="GSD" OR (xtblRate_Calc.Name)="GSDT") AND (((Year([Date])*12+Month([Date])-1))<>"")) GROUP BY (Year([Date])*12+Month([Date])-1), (Format([Date],"mmm"" '""yy")) ORDER BY Year([Date]), Month([date]) PIVOT xtblRate_Calc.Name; 目录中,其中npx正在查找。谁能想到为什么每次下载webpack?完成此步骤最多可能需要7秒钟,这会减慢我的构建速度。

3 个答案:

答案 0 :(得分:1)

您是否尝试安装webpack-cli?

npm i webpack-cli -D

然后运行

npx webpack

答案 1 :(得分:0)

npx不会重复使用以前安装的软件包,而是在每次运行它时都会拉下该软件包的依赖关系。

答案 2 :(得分:0)

我同意laggingreflex。可能不是每次都安装在您的机箱中的 webpack。参考this issue,时间差不多。我认为它不适用于较新的版本。


other answer 具有误导性,或者至少我不太了解它的上下文。

引用 the readme

<块引用>

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

<块引用>

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

引用 release blog

<块引用>

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

<块引用>

npx <command> 不在您的 <command> 中时调用 $PATH 会自动为您安装 npm 注册表中具有该名称的软件包,并调用它。完成后,安装的包将不会在您的全局变量中的任何位置,因此您不必担心长期污染。

虽然上面引用的npx作为一个单独的包现在已经弃用了,npx现在是npm-cli的一部分,但是本质还是一样的,也可以通过official docs

<块引用>

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

<块引用>

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