Basically a couple things change:
tsconfig.base.json
gets some new rules:
"compilerOptions": {
"strict": true,
"forceConsistentCasingInFileNames": true,
"noFallthroughCasesInSwitch": true
},
"angularCompilerOptions": {
"strictInjectionParameters": true,
"strictTemplates": true
}
- the
tslint.json
gets updated
"no-any": true
- the bundle budget sizes are reduced in your
angular.json
:
"configurations": {
//...
[envName]: {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb",
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb",
},
]
}
}
and a schematics addition to your projects.[projectName].schematics
path in the angular.json
:
schematics: {
"@schematics/angular:application": {
"strict": true
}
}
- the app
package.json
gets updated with a sideEffects
property:
sideEffects: false
For an explanation what this does, I can refer you to this answer.
This package.json
is located inside your app folder. It should be added there with the migration while using the ng update
option. If you do not have this file, you can use this template
To convert a current codebase, especially the tsconfig updates and the no-any
will give you some headache to fix. But it will be definitely worth it to get a better (less hidden bugs) and easier to refactor codebase.