我必须开始一个网络项目的那天,我感到畏缩。我使用yeoman
和gulp-angular
生成器来设置我的工作流程。 npm install
成功的时间没有失败过一次。
此外,对于要设置的项目,我在平均互联网连接上花费3-4个小时。它没有打败工具的整个目的吗?我最终花的时间比没有npm
时更多。此外,它还为每个项目安装类似的软件包(约120MB的膨胀)。
我知道有像npm_lazy
这样的工具以及缓存和东西,但这些只会使前端工具比现在更加复杂。
是什么让npm
如此低效?
答案 0 :(得分:2)
我也感觉到你的痛苦...如果你正在积极开发一个新的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
这是使用-g标志安装npm软件包时填充的全局npm软件包存储位置。使用所有上游npm包而不是存储在nodejs app / node_modules /目录中的$ NODE_PATH将变得臃肿
在没有这个包袱的情况下开发...当你准备好分发时,请用你的上游npm包填充你的package.json文件并发出你的npm install来填充dir / node_modules / ...当然将你的node_modules添加到你的.gitignore,这样dir就不会被发送到git
了您也可以通过清空package.json文件的“dependencies”标记并删除目录/ node_modules / ...直到您准备好发布
来对现有的nodejs应用程序执行此操作