使用npm安装和管理软件包非常棒!我不能发现的是它可以留下的混乱。
我已经开始使用npm进行客户端和节点依赖关系管理,并且我已经注意到我依赖的各种包的许多不同的安排。其中一些包含lib
个文件夹,一些包含src
个文件夹,一些dist
,一些docs
,一些examples
等。
我知道这是因为通常这些包直接来自源代码。
我的问题是:
有没有办法识别甚至自动删除任何不需要的文件,以便部署到生产环境? 我在想:删除任何readme.md(我觉得很容易)或示例文件(可能很容易)。
理想情况下,我希望能够从我的入口点准确计算出依赖树的外观并删除不需要/未使用的文件......对于依赖于图像或字体的客户端软件包来说,这显然要困难得多或HTML,例如。
修改
正如Alexander Mac(下文)所指出的,前端dep的一个好策略是将客户端依赖包括为dev依赖和构建。所以我的问题只与nodejs apps有关。
答案 0 :(得分:1)
您可以运行:npm prune
,它将删除未在packages.json中指定为依赖项的./node_modules中的模块。
npm dedupe
将通过将等效模块拉到根./node_modules/来删除重复的依赖项。我不知道这有多大用处。我做了它然后意识到有一大堆我间接使用的模块,我也可以直接使用,所以就是这样。
这样做的一个明智之举也是:
rm -rf ./node_modules ./bower_components
npm install
最好在发布到生产之前进行干净的构建。
此外,我使用sinopia
在本地缓存模块,这可以减轻网络流量,因此这些重新安装的时间会少一些。
答案 1 :(得分:0)
我建议您使用rollup.js或webpack2将代码(和deps)构建到一个捆绑包中。
这些模块加载器利用tree-shaking方法仅包含实际使用的代码。