1
duan602728596 2018-05-22 15:49:52 +08:00 via iPhone 1
自己写过一个工具:node-modules-clean,你可以试一试。https://github.com/duan602728596/node-modules-clean
|
2
htfy96 2018-05-22 15:49:56 +08:00 via Android 2
yarn autoclean
|
3
crs0910 2018-05-22 16:29:45 +08:00 via Android 1
tj 有个 go 写的工具 忘记叫啥了
|
4
crs0910 2018-05-22 16:30:23 +08:00 via Android 1
对了 现在 npm 挂了 装不了包
|
5
cxbig 2018-05-22 16:34:01 +08:00 1
空间占用主要是出于何种考虑?本机开发无所谓的吧?
我们线上服务器部署完,生成的文件一般放到 public 下的子目录,然后把这个 node_modules 直接删掉。 |
7
crs0910 2018-05-22 16:38:55 +08:00 1
|
8
sneezry OP @cxbig #5 我们在做 vscode 扩展,node_modules 最后会包进去。目前整个包是 9.4MB ,node_modules 占了 7 兆多。本来空间不是大问题,但是考虑到下载速度这就是个问题了。大部分 vscode 扩展是点了安装马上就可以 work,我们这个点了 vscode 没反应,因为在后台下载呢。
|
9
cxbig 2018-05-22 16:53:28 +08:00
@yhxx 是的,我们的 web 项目部署有专用机器,测试开绿灯以后,repo 那边的 hook 会呼叫这台机器打包最新版本。不必要的文件都不会被打包的。
|
12
hahastudio 2018-05-22 17:39:56 +08:00 via Android 1
用 Webpack 之类的编译一下?
|
13
cxbig 2018-05-22 18:09:03 +08:00 1
@yhxx 我这里没那么夸张,自动部署一次流程 node 部分大概不超过 30 秒。用的是 AWS EC2 m4.large
项目服务器是不装 node 组件的,部署服务器跑完了打包放 S3,呼叫 CodeDeploy 部署到线上机器,线上机器部署 1 ~ 2 秒就搞定了。 |
14
AllOfMe 2018-05-22 18:13:39 +08:00
讲究
|
15
Rocka 2018-05-22 19:02:56 +08:00 2
标准的解决方案不应该是用 Rollup 或者 Webpack 打包一下么
|
16
Rocka 2018-05-22 19:04:18 +08:00
或者 TJ 的这个工具 https://github.com/tj/node-prune
|
17
summerqing 2018-05-22 20:01:04 +08:00
知道哪些文件不需要了,为啥觉得 gitignore 一下就哦了?
|
18
sneezry OP @summerqing 其实是大部分 node module 都没有正确使用.npmignore。我和 ray 还有 zhiqing 正在考虑要不要像 @types 那样帮常用 node module 补上.npmignore
|
19
hxsf 2018-05-22 21:50:14 +08:00
|
21
hxsf 2018-05-22 23:14:41 +08:00
@sneezry #20 vsce 发布的时候会根据 npmignore (没有就继承 gitignore ) 忽略 node_modules 下的东西
用户下载插件后,会根据 package.json 重新安装依赖的啊。不是很理解为什么你要把 node_modules 也打包进去啊 |
22
sneezry OP @hxsf vsc 扩展会自动安装依赖的么?这个我还没试过。不过即使可以,npm install 岂不是更慢
|
23
hxsf 2018-05-23 00:11:25 +08:00
@sneezry #22 sorry,刚刚重新看了下,atom 的插件会这么做。
vscode 是把项目目录,和依赖(貌似默认不打包开发依赖)一起打包。然后通过 CDN ( gallerycdn.vsassets.io )分发。 能说下是什么依赖吗? 我注意到 比如 eslint 扩展,其实并没有打包 eslint,而是找项目目录或者全局的 eslint 来使用。 如 go 扩展,其实安装后会检测环境中有没有一些关于 go 的工具,然后提示用户主动安装。 或许可以通过这种方式进行体积的缩减。。 或者简单点,直接写一份 .vsceignore 好了。 |
24
FrankFang128 2018-05-23 00:13:27 +08:00
npm 设计的时候就应该用白名单机制,而不是 npmignore 黑名单机制。
|
25
M4ster 2018-05-23 00:21:23 +08:00
https://yarnpkg.com/zh-Hans/docs/workspaces
workspace 了解一下 |
26
sneezry OP @FrankFang128 好像 package.json 里有个 file 字段是白名单。问题是没几个开发者认真对待 file 和 npmignore。我发现 lodash 做得是比较好的。
|
28
orzfly 2018-05-23 04:19:44 +08:00 via Android
之前就有人提到了,我还是觉得挺好奇的...
Webpack/Rollup 打包一下不能满足你的原始需求嘛? |
29
vghdjgh 2018-05-23 07:06:40 +08:00
|
30
h1367500190 2018-05-23 11:59:22 +08:00
题外话: 为什么界面是黑的?
|
31
Kokororin 2018-05-23 17:38:00 +08:00
.vscodeignore
|
32
XGHeaven 2018-05-31 10:55:00 +08:00
其实你们在乎包体积最大的问题在于 Node.js 开发的时候包是本地安装的。而不像是 Python/Ruby 全局安装。
所以我觉得不如引入一个新的管理工具,这个工具会自动将所有的包安装到全局,然后软连接到本地来。 对于需要编译的包,那么还是选择本地安装比较好。 |