使用npm package.json脚本增加节点内存

时间:2017-08-14 16:42:58

标签: node.js reactjs npm electron electron-builder

如果要增加节点中的内存限制,则要传递的选项为:

node --max-old-space-size=4096 yourFile.js

但在我的场景中我使用的是纱线,我的package.json看起来像这样:

{
  "name": "myapp",
  "productName": "myapp",
  "version": "1.0.0",
  "main": "app/main.js",
  ...
  "scripts": {
    "package-win": "npm run build && build --win --x64",
    "package-mac": "npm run build && build --mac",
    ...
  },
  ...

我在Windows机器上执行yarn package-win以调用使用react.js构建的电子应用程序的电子构建器。但我总是npm ERR! code ELIFECYCLE由于记忆力不足。在我的mac中也遇到FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory错误,但在调用yarn package-mac时仍然生成了包(如何?我不知道)。

我搜索了很多关于如何使用--max-old-space-size=4096选项的内容,但我没有发现任何可行的内容。

我试过"package-win": "node --max-old-space-size=4096 npm run build && build --win --x64",但路径在找到npm时遇到了问题。即使我使用了哪个npm,仍然无法识别which

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

回答自己:在package-win中使用此选项是错误的。当package-win执行构建任务时,则:

"build": "npm run build-main && npm run build-renderer",
...
"build-main": "cross-env NODE_ENV=production node --max_old_space_size=6144 --optimize_for_size --stack_size=6144 --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.main.prod.js --progress --profile --colors",
"build-renderer": "cross-env NODE_ENV=production node --max_old_space_size=6144 --optimize_for_size --stack_size=6144 --trace-warnings -r babel-register ./node_modules/webpack/bin/webpack --config webpack.config.renderer.prod.js --progress --profile --colors",

这种方式有效!

答案 1 :(得分:0)

您不必在 package-win 中使用选项。 你应该使用的方式-

    "build-ts-prod": "node --max-old-space-size=1024 
    ./node_modules/typescript/bin/tsc --skipLibCheck --diagnostics",