有最小化 node_modules 的工具吗

2018-05-22 15:37:34 +08:00
 sneezry
node_modules 的体积非常庞大,但是里面有很多不必要的东西,比如 ts 文件啊,md 文件啊,真正用到的 js 并没那么大。还有的 module 是同时提供了 js 和 min.js ,也是没有必要的。那么有没有一个工具可以 clean up 一下 node_modules 呢,感觉可以压缩很大的空间。
6168 次点击
所在节点    Node.js
32 条回复
duan602728596
2018-05-22 15:49:52 +08:00
自己写过一个工具:node-modules-clean,你可以试一试。https://github.com/duan602728596/node-modules-clean
htfy96
2018-05-22 15:49:56 +08:00
yarn autoclean
crs0910
2018-05-22 16:29:45 +08:00
tj 有个 go 写的工具 忘记叫啥了
crs0910
2018-05-22 16:30:23 +08:00
对了 现在 npm 挂了 装不了包
cxbig
2018-05-22 16:34:01 +08:00
空间占用主要是出于何种考虑?本机开发无所谓的吧?
我们线上服务器部署完,生成的文件一般放到 public 下的子目录,然后把这个 node_modules 直接删掉。
yhxx
2018-05-22 16:36:15 +08:00
@cxbig 这样的话每次部署都要重新 npm install 一遍?
crs0910
2018-05-22 16:38:55 +08:00
sneezry
2018-05-22 16:40:10 +08:00
@cxbig #5 我们在做 vscode 扩展,node_modules 最后会包进去。目前整个包是 9.4MB ,node_modules 占了 7 兆多。本来空间不是大问题,但是考虑到下载速度这就是个问题了。大部分 vscode 扩展是点了安装马上就可以 work,我们这个点了 vscode 没反应,因为在后台下载呢。
cxbig
2018-05-22 16:53:28 +08:00
@yhxx 是的,我们的 web 项目部署有专用机器,测试开绿灯以后,repo 那边的 hook 会呼叫这台机器打包最新版本。不必要的文件都不会被打包的。
cxbig
2018-05-22 16:54:07 +08:00
@sneezry 啊,这个领域不大了解。抱歉没有进一步的建议。
yhxx
2018-05-22 17:25:37 +08:00
@cxbig 这样的话部署一次 5 分钟的节奏?
感觉还是增量 install 更合理一点
hahastudio
2018-05-22 17:39:56 +08:00
用 Webpack 之类的编译一下?
cxbig
2018-05-22 18:09:03 +08:00
@yhxx 我这里没那么夸张,自动部署一次流程 node 部分大概不超过 30 秒。用的是 AWS EC2 m4.large
项目服务器是不装 node 组件的,部署服务器跑完了打包放 S3,呼叫 CodeDeploy 部署到线上机器,线上机器部署 1 ~ 2 秒就搞定了。
AllOfMe
2018-05-22 18:13:39 +08:00
讲究
Rocka
2018-05-22 19:02:56 +08:00
标准的解决方案不应该是用 Rollup 或者 Webpack 打包一下么
Rocka
2018-05-22 19:04:18 +08:00
或者 TJ 的这个工具 https://github.com/tj/node-prune
summerqing
2018-05-22 20:01:04 +08:00
知道哪些文件不需要了,为啥觉得 gitignore 一下就哦了?
sneezry
2018-05-22 20:26:53 +08:00
@summerqing 其实是大部分 node module 都没有正确使用.npmignore。我和 ray 还有 zhiqing 正在考虑要不要像 @types 那样帮常用 node module 补上.npmignore
hxsf
2018-05-22 21:50:14 +08:00
@sneezry #18 补充 npmignore 这个事情不太可行。

比如一个通用模块同时提供 .min.js 和 .js 的,前端使用的话,正常是通过构建工具把 .min.js 拷贝到 输出目录,或者直接把 .js 按需合并进 bundle.js 这个时候你排除哪个都不好。

另外,你帮别人补 npmignore 是提 pr 的形式? 如果是 @types 的形式,那 包已经下好了,你补的 ignore 又怎么发挥作用呢?
sneezry
2018-05-22 22:01:58 +08:00
@hxsf 再发布个工具,根据我补的 ignore 开始删。我也很绝望的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/456847

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX