We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
随着项目越来越大,现在模块已经有100多个了,一开始我想着把它们拆开,打算使用angular-cli提供的自定义库的功能(ng generate library my-lib),发现有个bug,我自己摸索一下,算是解决这个bug,下次把它贴出给大家遛遛。
angular-cli
我们还是要解决暂时的问题,打包慢,还有打包会失败的问题:
我们使用的是jenkins自动打包。
在我本地打包了5次成功了1次,全是这个错误。
其实这个问题也是算是nodejs的锅了。那我们需要解决,不然怎么继续愉快的玩耍。
找问题得到答案:修改node --max_old_space_size=size
node --max_old_space_size=size
这个size随意,大概就是1024*n,推荐4和8,看你自己系统的内存吧,合理选择,我电脑16g,选择的是8。
size
1024*n
4和8
最后结果就是:node --max_old_space_size=8192。(数学问题不用我教了)
node --max_old_space_size=8192
因为angular-cli是我们每次npm install都会自动安装,如果我直接去改.bi/ng这个命令不是很靠谱,一次重装你就回到解放前了。
npm install
.bi/ng
在写Angular时候,满屏的装饰器,也有一个对应的设计模式叫装饰器模式,允许向一个现有的对象添加新的功能,同时又不改变其结构。简单理解是不改变原有的功能,给它去添加新功能。我们需要这样思路。
Angular
我们可以最简单的去复制.bi/ng,这个玩意叫shell命令,其实我不会玩。
话不多说,开始干活。
在项目的根创建一个scripts文件夹,以后需要写脚本都可以丢进去。
scripts
在scripts创建一个ng.sh文件。
ng.sh
#!/bin/sh basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac if [ -x "$basedir/node" ]; then "$basedir/node" --max_old_space_size=8192 "./node_modules/@angular/cli/bin/ng" "$@" ret=$? else node --max_old_space_size=8192 "./node_modules/@angular/cli/bin/ng" "$@" ret=$? fi exit $ret
这是.bin/ng的代码:
.bin/ng
#!/bin/sh basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')") case `uname` in *CYGWIN*) basedir=`cygpath -w "$basedir"`;; esac if [ -x "$basedir/node" ]; then "$basedir/node" "$basedir/../@angular/cli/bin/ng" "$@" ret=$? else node "$basedir/../@angular/cli/bin/ng" "$@" ret=$? fi exit $ret
其实没有太大的改变,这个意思先告诉nodejs设置--max_old_space_size=8192,然后再去运行angular-cli命令。
nodejs
--max_old_space_size=8192
怎么使用:
你创建的一个新项目或者正在使用的项目,package.json画风应该是这样的:
package.json
{ ... "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, ... }
这里ng指向就是.bin/ng。
ng
这里我们需要去修改一下代码:
{ ... "scripts": { "ng": "ng", "start": "bash ./scripts/ng.sh serve", "build": "bash ./scripts/ng.sh build", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, ... }
同样的代码规模模块,同样的操作,我们来做下对比:
开发状态:
bash ./scripts/ng.sh serve
56s
ng serve
62s
发布状态:
bash ./scripts/ng.sh build
1分55秒
ng build
5分35秒
相信很多人会卡在75%和92%这个2个点上面。现在大家看到了吧,没有对比就没有伤害。
75%
92%
最后:build一定要加,serve根据自己需求吧。差别也不大,6s左右。赶紧给你build提速吧,再也不用看到<------ JS stacktrace ------>错误啦。这个不光适用于angular-cli,react的cli也有个这个问题。看了上面你应该也会改了。
build
serve
6s
<------ JS stacktrace ------>
react
cli
重要:发现一个bug,上面ng.sh代码本身在windows上面没有毛病,去jenkins就报错了,我让后台帮我修复一下错误。克隆或者下载项目,使用scripts/ng.sh即可。
jenkins
scripts/ng.sh
当然也可以使用更简单的方式: 传送门
"scripts": { "ng-high-memory": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng", "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" },
The text was updated successfully, but these errors were encountered:
大佬
Sorry, something went wrong.
为啥不在package.json的scripts里直接写
node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --prod
有用,点赞!!另外windows环境下需要安装cygwin环境来支持bash
No branches or pull requests
随着项目越来越大,现在模块已经有100多个了,一开始我想着把它们拆开,打算使用
angular-cli
提供的自定义库的功能(ng generate library my-lib),发现有个bug,我自己摸索一下,算是解决这个bug,下次把它贴出给大家遛遛。我们还是要解决暂时的问题,打包慢,还有打包会失败的问题:
我们使用的是jenkins自动打包。
在我本地打包了5次成功了1次,全是这个错误。
其实这个问题也是算是nodejs的锅了。那我们需要解决,不然怎么继续愉快的玩耍。
找问题得到答案:修改
node --max_old_space_size=size
这个
size
随意,大概就是1024*n
,推荐4和8
,看你自己系统的内存吧,合理选择,我电脑16g,选择的是8。最后结果就是:
node --max_old_space_size=8192
。(数学问题不用我教了)因为
angular-cli
是我们每次npm install
都会自动安装,如果我直接去改.bi/ng
这个命令不是很靠谱,一次重装你就回到解放前了。在写
Angular
时候,满屏的装饰器,也有一个对应的设计模式叫装饰器模式,允许向一个现有的对象添加新的功能,同时又不改变其结构。简单理解是不改变原有的功能,给它去添加新功能。我们需要这样思路。我们可以最简单的去复制
.bi/ng
,这个玩意叫shell命令,其实我不会玩。话不多说,开始干活。
在项目的根创建一个
scripts
文件夹,以后需要写脚本都可以丢进去。在
scripts
创建一个ng.sh
文件。这是
.bin/ng
的代码:其实没有太大的改变,这个意思先告诉
nodejs
设置--max_old_space_size=8192
,然后再去运行angular-cli
命令。怎么使用:
你创建的一个新项目或者正在使用的项目,
package.json
画风应该是这样的:这里
ng
指向就是.bin/ng
。这里我们需要去修改一下代码:
同样的代码规模模块,同样的操作,我们来做下对比:
开发状态:
bash ./scripts/ng.sh serve
运行一次需要56s
ng serve
运行一次需要62s
发布状态:
bash ./scripts/ng.sh build
运行一次需要1分55秒
每次都成功ng build
运行一次需要5分35秒
打包三次才成功相信很多人会卡在
75%
和92%
这个2个点上面。现在大家看到了吧,没有对比就没有伤害。最后:
build
一定要加,serve
根据自己需求吧。差别也不大,6s
左右。赶紧给你build
提速吧,再也不用看到<------ JS stacktrace ------>
错误啦。这个不光适用于angular-cli
,react
的cli
也有个这个问题。看了上面你应该也会改了。当然也可以使用更简单的方式: 传送门
The text was updated successfully, but these errors were encountered: