Angular 2 with CLI - build for production
try this
ng build --env=prod
The build system defaults to the dev environment which uses environment.ts
, but if you do ng build --env=prod
then environment.prod.ts
will be used instead.
sample result if your project is new angular cli app.
10% building mod3439ms building modules 1ms add01564ms 917ms asset45ms emittingHash: 9216e76d6f10637c945c
Version: webpack 2.1.0-beta.22
Time: 6358ms
Asset Size Chunks Chunk Names
main.bundle.js 2.6 MB 0, 2 [emitted] main
styles.bundle.js 10.2 kB 1, 2 [emitted] styles
inline.js 5.53 kB 2 [emitted] inline
main.map 2.61 MB 0, 2 [emitted] main
styles.map 14.2 kB 1, 2 [emitted] styles
inline.map 5.59 kB 2 [emitted] inline
index.html 482 bytes [emitted]
assets/.npmignore 0 bytes [emitted]
chunk {0} main.bundle.js, main.map (main) 2.06 MB {1} [initial] [rendered]
chunk {1} styles.bundle.js, styles.map (styles) 9.96 kB {2} [initial] [rendered]
chunk {2} inline.js, inline.map (inline) 0 bytes [entry] [rendered]
Child html-webpack-plugin for "index.html":
Asset Size Chunks Chunk Names
index.html 2.82 kB 0
chunk {0} index.html 350 bytes [entry] [rendered]
Done and it's under /dist unless you have changed outDir
in angular-cli.json
Updated for Angular v6+
# Prod - these are equivalent
ng build --configuration=production
ng build --c=production
ng build --prod=true
# Dev - and so are these
ng build --configuration=development
ng build --c=development
ng build --prod=false
ng build
More flag settings here
https://angular.io/cli/build
Per Angular-cli's github wiki v2+, these are the most common ways to initiate a dev and production build
# Prod these are equivalent
ng build --target=production --environment=prod
ng build --prod --env=prod
ng build --prod
# Dev and so are these
ng build --target=development --environment=dev
ng build --dev --env=dev
ng build --dev
ng build
There are different default flags that will affect --dev vs --prod builds.
Flag --dev --prod
--aot false true
--environment dev prod
--output-hashing media all
--sourcemaps true false
--extract-css false true
--prod
also sets the following non-flaggable settings:
- Adds service worker if configured in
.angular-cli.json
. - Replaces
process.env.NODE_ENV
in modules with theproduction
value (this is needed for some libraries, like react). - Runs UglifyJS on the code.
I need to do some troubleshooting in order to get AOT working. When I ran:
ng build --prod --aot=false
I would get will return a error similar to
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'
Originally, I had to do some project refactoring to get AOT to work. However, they may be a fix if you are encountering this error. Try
npm i [email protected]
https://github.com/angular/angular-cli/issues/7113
Try using: ng build --target=production This should work.
With the cli version (1.0.1) use :
ng build --prod
This will give you the dist folder with the index.html and all the bundled js file ready for production.