当我必须开始一个网络项目的那一天,我感到畏缩。我使用
yeoman
和 gulp-angular
生成器来设置我的工作流程。 npm install
从来没有一次成功而不失败过。
此外,在我的互联网连接上,平均需要 3 到 4 个小时才能建立一个项目。这不是违背了工具的全部目的吗?我最终会花更多的时间等待,而不是没有
npm
。它还为每个项目安装类似的软件包(约 120MB 的膨胀)。
我知道有像
npm_lazy
和缓存之类的工具,但这些只会让前端工具变得更加复杂。
是什么让
npm
如此低效?
我也感受到你的痛苦......如果你正在积极开发一个新的nodejs项目,并且希望始终使用所有上游npm包的最新版本,那么请避免在你的package.json文件中提及任何依赖项,直到你准备好分发为止。我们遇到的这种减速是由于不必要地将这些上游包存储在 dir /node_modules/ 的项目目录中,这在您分发应用程序之前是没有用的。
这里我提到此 package.json 文件中没有上游包:
{
... other tags here ...
"dependencies" : {
}
}
还可以使用 -g 标志全局安装项目的上游 npm 包,如下所示:
npm install -g some_cool_package
因此这些包可供您的项目使用,但不会驻留在其根目录中,从而降低您的工作效率。同时,请勿发布
npm install
在 Nodejs 项目根目录中,因为所有上游 npm 包都位于由环境变量 NODE_PATH 定义的全局安装目录中
echo $NODE_PATH
其值类似于
/home/stens/node-v5.3.0/lib/node_modules
这是全局 npm 包存储位置,当您使用 -g 标志安装 npm 包时,该位置会被填充。 $NODE_PATH 将因所有上游 npm 包而变得臃肿,而不是存储在您的 Nodejs 应用程序 /node_modules/ 目录中
以这种模式进行开发,摆脱这种包袱...当您准备好分发时,请使用上游 npm 包填充 package.json 文件,并发出 npm install 来填充目录 /node_modules/ ...当然将您的 node_modules 添加到您的 .gitignore 中,这样 dir 就不会发送到 git 中
您还可以通过清空 package.json 文件的“依赖项”标签并删除目录 /node_modules/ ...来对现有的 Nodejs 应用程序执行此操作,直到您准备好分发
npm 并不是低效,如果你的连接不够好,你可以切换到现代 Wifi 互联网连接,我在安装 Next.js 时经历过超过 6 次, Rect vite@latest ,但每当我切换我的 wi-fi 连接时,它都会在 1 分钟内安装它们,至少需要 2-3 小时才会弹出超时错误而不安装。