升级angular 10的坑

为了用上responsive flex-layout, 因为它的依赖关系,我的相册app还是基于angular 7的,具体哪个库过时已经记不得了。反正既然angular要升级,就干脆都升了吧。结果踏入了一个坑,记录一下:

  1. 升级前ng update会提示你本地如果有未commit的文件,必须先commit或stash,算是和git结合紧密了。
  2. ng update 是个好帮手,但是未必能一步到位,它只是给出了一个列表,有哪些库是需要upgdate的,但并不执行。需要你自己选择执行。而运行ng update时如果分开update有冲突,可以一条命令执行ng update rxjs angular/core ….
  3. 系统级别(-g)的angular cli最好先升级到10(不指定@~xx.x.x就会升到最新版),否则可能有问题。
  4. npm最为包安装工具也要升级以及clear cache:npm cache clean –force

    npm install npm@latest -g

  5. 除了package.json的变动, angular.json里也删除了一行 “es5BrowserSupport”: true
  6. angular material的一个大变动,就是引入的时候不再用 import {…} from ‘@angular/material’; 而是不同的模块属于不同的路径, 比如import {MatGridListModule} from ‘@angular/material/grid-list’;
    import {MatButtonModule} from ‘@angular/material/button’;
  7. 有某个库碰到提示zone.js版本不兼容,于是只能单独安装npm install zone.js@~0.10.3,angular升级自动升级到0.11.x会太高。
  8. typescript要降级,我使用的一个mat-video的库目前只支持angular 8和9,typescript如果用4.0.2会提示错误,之类重写了父类定义的属性,可以使用的版本”typescript”: “^3.9.7”
  9. 有些库比如codelyzer还是要自己手动升级,提示有不兼容又不自动升级。