有没有办法清理node_modules目录,只留下所需的依赖文件?

时间:2016-04-22 18:40:46

标签: node.js deployment npm npm-publish

使用npm安装和管理软件包非常棒!我不能发现的是它可以留下的混乱。

我已经开始使用npm进行客户端和节点依赖关系管理,并且我已经注意到我依赖的各种包的许多不同的安排。其中一些包含lib个文件夹,一些包含src个文件夹,一些dist,一些docs,一些examples等。 我知道这是因为通常这些包直接来自源代码。

我的问题是:

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

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

修改

正如Alexander Mac(下文)所指出的,前端dep的一个好策略是将客户端依赖包括为dev依赖和构建。所以我的问题只与nodejs apps有关。

2 个答案:

答案 0 :(得分:1)

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

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

这样做的一个明智之举也是:

rm -rf ./node_modules ./bower_components npm install

最好在发布到生产之前进行干净的构建。

此外,我使用sinopia在本地缓存模块,这可以减轻网络流量,因此这些重新安装的时间会少一些。

答案 1 :(得分:0)

我建议您使用rollup.jswebpack2将代码(和deps)构建到一个捆绑包中。

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