2

使用 npm 安装和管理软件包非常棒!我觉得不太妙的是它可以留下的烂摊子。

我已经开始将 npm 用于客户端和节点依赖管理,并且我注意到我所依赖的各种包有很多不同的安排。有些有lib文件夹,有些有src文件夹,有些dist,有些docs,有些examples等等。我知道这是因为这些包通常直接来自源代码。

我的问题是:

有没有一种方法可以识别甚至自动删除任何不需要的文件以部署到生产环境?我在想:删除任何 readme.md(我猜很容易)或示例文件(可能很容易)。

理想情况下,我希望能够从我的入口点准确计算依赖树的样子并删除不需要/未使用的文件......对于依赖图像或字体或 HTML 的客户端包来说,这显然要困难得多。

编辑:

正如 Alexander Mac 所指出的(下),前端开发人员的一个好策略是将客户端依赖项包含为开发依赖项并构建。所以我的问题只与 nodejs 应用程序有关。

4

2 回答 2

1

我可能会建议将您的代码(和 deps)与rollup.jswebpack2 构建到一个包中。

这些模块加载器利用tree-shaking方法仅包含实际使用的代码。

于 2016-04-23T22:51:10.767 回答
1

您可以运行:npm prune这将从 ./node_modules 中删除未在 packages.json 中指定为依赖项的模块。

npm dedupe将通过将等效模块拉到根 ./node_modules/ 来删除重复的依赖项。我不知道这有多大用处。我做到了,然后意识到我间接使用了一大堆模块,我也可以直接使用,所以就是这样。

这样做的可靠方法也是:

rm -rf ./node_modules ./bower_components npm install

无论如何,在发布到生产之前进行干净的构建是一种很好的做法。

此外,我使用sinopia在本地缓存模块,这减轻了网络流量,因此这些重新安装的时间密集度稍低。

于 2016-05-08T21:48:18.350 回答