webpack 打包时单个 node 能飙到 3G+ 内存( top 观察还会有另外一个 node 进程,占 1G 左右)
机器内存较小,构建经常失败。请问如何能降低 webpack 构建内存占用?
SF 上的方法说: 设置 `NODE_OPTIONS=–-max-old-space-size=2048` ,测试无效。
附上 package.json
{
"name": "",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "export NODE_OPTIONS=–-max-old-space-size=2048 && vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.1.1",
"@fortawesome/free-brands-svg-icons": "^6.1.1",
"@fortawesome/free-regular-svg-icons": "^6.1.1",
"@fortawesome/free-solid-svg-icons": "^6.1.1",
"@fortawesome/vue-fontawesome": "^2.0.6",
"@stoplight/json-schema-ref-parser": "^9.2.2",
"@stoplight/json-schema-sampler": "^0.2.2",
"axios": "^0.24.0",
"core-js": "^3.8.3",
"echarts": "^5.2.2",
"element-ui": "^2.15.9",
"lodash": "^4.17.21",
"marked": "^4.0.13",
"moment": "^2.29.4",
"monaco-editor": "^0.33.0",
"monaco-editor-webpack-plugin": "^7.0.1",
"url": "^0.11.0",
"util": "^0.12.4",
"uuid": "^8.3.2",
"vue": "^2.6.14",
"vue-codemirror": "^4.0.6",
"vue-contextmenujs": "^1.3.13",
"vue-echarts": "^6.0.0",
"vue-grid-layout": "^2.3.12",
"vue-multipane": "^0.9.5",
"vue-router": "^3.5.1",
"vuex": "^3.6.2"
},
"devDependencies": {
"@babel/core": "^7.17.8",
"@babel/eslint-parser": "^7.17.0",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-plugin-router": "~5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"@vue/composition-api": "^1.4.9",
"eslint": "^8.12.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^4.0.0",
"eslint-plugin-vue": "^8.6.0",
"node-sass": "^7.0.1",
"prettier": "^2.6.2",
"process": "^0.11.10",
"sass-loader": "^12.6.0",
"vue-template-compiler": "^2.6.14"
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}
1
ragnaroks 2022-08-01 20:30:47 +08:00
不懂帮顶,不过你们这是几千个页面的巨型项目么,以前还用 vue 的时候用 nuxt 撸几百个页面的后台打包也不超过 1 GiB 占用。
|
2
rabbbit 2022-08-01 20:34:45 +08:00
项目底下有多个 node_modules 吗?
如果是的话可以改成硬、链接到一个公共的 node_modules 。 |
3
IvanLi127 2022-08-01 20:39:02 +08:00 via Android 1
加 swap 。。。打包机内存小可不行
|
4
dingyaguang117 OP @ragnaroks 页面不多,感觉可能是 引用了一些巨型组件: monaco 这种
|
5
dingyaguang117 OP @rabbbit 只有一个呢.. 怎么分析是 构建哪个库 的问题?删掉一些依赖 试试?
|
6
dingyaguang117 OP PS:机器本身 8G , 还跑了 Jenkins 占 1-3G 左右。每次挂的其实不是 node 进程,而是 Jenkins 。 观察到内存一大飙起来 Jenkins 先挂了,导致构建也失败了。 也不知道为啥杀进程策略每次都是先杀 Jenkins 。Jenkins 重启之后刚开始内存还不大,这时候立即构建一次一般能成功。
|
7
makelove 2022-08-01 20:48:21 +08:00 1
|
8
makelove 2022-08-01 21:14:46 +08:00 1
我的 app 进程我一般还加 --max_old_space_size=512 --max_semi_space_size=8
以前也很有效果,现在过了这么多版本效果未知,可能是你这个 2048 太大了 |
9
dingyaguang117 OP @makelove 加了 2g 实际跑到 2.9G 不知道为啥没生效
|
10
dingyaguang117 OP @makelove 我试试你的
|
11
dingyaguang117 OP @IvanLi127 测试 加 SWAP 可行,目前没再挂过了
|