1

我必须开始一个网络项目的那一天,我畏缩了。我使用yeomangulp-angular生成器来设置我的工作流程。从来没有npm install一次成功而没有失败过。

此外,在我的平均互联网连接上,建立一个项目需要 3 到 4 个小时。它不会破坏工具的全部目的吗?我最终会花更多的时间等待而不是没有npm。它还为每个项目安装类似的包(约 120MB 的膨胀)。

我知道有诸如npm_lazy缓存之类的工具,但是这些只会使前端工具变得比它更复杂。

是什么让npm效率如此低下?

4

1 回答 1

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 包存储位置。$NODE_PATH 将与所有上游 npm 包一起变得臃肿,而不是存储在你的 nodejs 应用程序 /node_modules/ 目录中

在这种模式下开发没有这个包袱......当你准备好分发时,用你的上游 npm 包填充你的 package.json 文件并发出你的 npm install 来填充目录 /node_modules/ ...当然添加你的node_modules 到您的 .gitignore 以便不会将 dir 发送到 git

您还可以通过清空 package.json 文件的“依赖项”标签并删除目录 /node_modules/ 来对现有的 nodejs 应用程序执行此操作...直到您准备好分发

于 2015-12-20T15:41:39.907 回答