Note: for support questions, please use one of these channels:
https://forum.ionicframework.com/
http://ionicworldwide.herokuapp.com/
I switched from v1.3.0 to v1.3.4 and webpack build time increased from 6 sec to 70 sec as shown below.
Faster webpack build in latest version.
Steps to reproduce:
v1.3.0
Anku@Ankushs-MacBook-Pro:ionic2-mosum$ ionic build ios --prod
> ionic2-mosum@ ionic:build /Users/Anku/Documents/IdeaProjects/ionic2-mosum
> ionic-app-scripts build "--prod"
[20:03:19] ionic-app-scripts 1.3.0
[20:03:19] build prod started ...
[20:03:19] clean started ...
[20:03:19] clean finished in 2 ms
[20:03:19] copy started ...
[20:03:19] ngc started ...
[20:03:28] ngc finished in 9.01 s
[20:03:28] preprocess started ...
[20:03:28] deeplinks started ...
[20:03:29] deeplinks finished in 375 ms
[20:03:29] optimization started ...
[20:03:29] copy finished in 9.51 s
[20:03:38] optimization finished in 9.15 s
[20:03:38] preprocess finished in 9.53 s
[20:03:38] webpack started ...
[20:03:44] webpack finished in 6.21 s
[20:03:44] sass started ...
[20:03:44] uglifyjs started ...
[20:03:45] sass finished in 1.00 s
[20:03:45] cleancss started ...
[20:03:46] cleancss finished in 1.11 s
WARN: Output exceeds 32000 characters
[20:04:04] uglifyjs finished in 19.73 s
[20:04:04] postprocess started ...
[20:04:04] postprocess finished in 19 ms
[20:04:04] lint started ...
[20:04:04] build prod finished in 44.53 s
[20:04:06] lint finished in 2.02 s
Building project: /Users/Anku/Documents/IdeaProjects/ionic2-mosum/platforms/ios/Mosum.xcworkspace
v1.3.4
Anku@Ankushs-MacBook-Pro:ionic2-mosum$ ionic build ios --prod
> ionic2-mosum@ ionic:build /Users/Anku/Documents/IdeaProjects/ionic2-mosum
> ionic-app-scripts build "--prod"
[20:07:51] ionic-app-scripts 1.3.4
[20:07:51] build prod started ...
[20:07:51] clean started ...
[20:07:51] clean finished in 2 ms
[20:07:51] copy started ...
[20:07:51] ngc started ...
[20:08:01] ngc finished in 9.46 s
[20:08:01] preprocess started ...
[20:08:01] deeplinks started ...
[20:08:01] deeplinks finished in 381 ms
[20:08:01] optimization started ...
[20:08:01] copy finished in 9.98 s
[20:08:12] optimization finished in 10.74 s
[20:08:12] preprocess finished in 11.12 s
[20:08:12] webpack started ...
[20:09:22] webpack finished in 69.70 s
[20:09:22] sass started ...
[20:09:22] uglifyjs started ...
[20:09:23] sass finished in 1.05 s
[20:09:23] cleancss started ...
[20:09:24] cleancss finished in 1.17 s
WARN: Output exceeds 32000 characters
[20:09:42] uglifyjs finished in 20.25 s
[20:09:42] postprocess started ...
[20:09:42] postprocess finished in 40 ms
[20:09:42] lint started ...
[20:09:42] build prod finished in 110.59 s
[20:09:44] lint finished in 1.99 s
Building project: /Users/Anku/Documents/IdeaProjects/ionic2-mosum/platforms/ios/Mosum.xcworkspace
Which @ionic/app-scripts version are you using?
Other information: (e.g. stacktraces, related issues, suggestions how to fix, stackoverflow links, forum links, etc)
Try nightly. We achieved what we wanted to achieve in 1.3.4 but it is definitely slow. nightly will be much faster for all non-prod builds. Still slow for prod builds.
Thanks,
Dan
nightly is still slow for non-prod(60 sec) and prod is failing :( Attaching ionic-info as well, might be it can help in debugging.
non-prod slow
Anku@Ankushs-MacBook-Pro:ionic2-mosum$ ionic build ios
> ionic2-mosum@ ionic:build /Users/Anku/Documents/IdeaProjects/ionic2-mosum
> ionic-app-scripts build
[20:28:16] ionic-app-scripts 1.3.4-201704241624
[20:28:16] build dev started ...
[20:28:16] clean started ...
[20:28:16] clean finished in 1 ms
[20:28:16] copy started ...
[20:28:16] transpile started ...
[20:28:19] transpile finished in 2.67 s
[20:28:19] preprocess started ...
[20:28:19] deeplinks started ...
[20:28:19] deeplinks finished in 99 ms
[20:28:19] preprocess finished in 99 ms
[20:28:19] webpack started ...
[20:28:19] copy finished in 2.89 s
[20:29:17] webpack finished in 58.27 s
[20:29:17] sass started ...
[20:29:18] sass finished in 798 ms
[20:29:18] postprocess started ...
[20:29:18] postprocess finished in 1 ms
[20:29:18] lint started ...
[20:29:18] build dev finished in 61.88 s
[20:29:20] lint finished in 1.95 s
Building project: /Users/Anku/Documents/IdeaProjects/ionic2-mosum/platforms/ios/Mosum.xcworkspace
Prod failing
Anku@Ankushs-MacBook-Pro:ionic2-mosum$ ionic build ios --prod
> ionic2-mosum@ ionic:build /Users/Anku/Documents/IdeaProjects/ionic2-mosum
> ionic-app-scripts build "--prod"
[20:24:41] ionic-app-scripts 1.3.4-201704241624
[20:24:41] build prod started ...
[20:24:41] clean started ...
[20:24:41] clean finished in 2 ms
[20:24:41] copy started ...
[20:24:41] ngc started ...
[20:24:49] ngc finished in 8.34 s
[20:24:49] preprocess started ...
[20:24:49] deeplinks started ...
[20:24:50] deeplinks finished in 356 ms
[20:24:50] optimization started ...
[20:24:50] copy finished in 8.84 s
[20:24:54] ionic-app-script task: "build"
[20:24:54] Error: ./src/pages/settings/settings.module.ngfactory.ts Module parse failed:
/Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js!/Users/Anku/Documents/IdeaProjects/ionic2-mosum/src/pages/settings/settings.module.ngfactory.ts
Unexpected token (74:66) You may need an appropriate loader to handle this file type. | import * as import63
from './settings'; | import * as import64 from 'ionic-angular/util/module-loader'; | class
SettingsPageModuleInjector extends import0.ɵNgModuleInjector<import1.SettingsPageModule> { |
_CommonModule_0:import2.CommonModule; | _ɵba_1:import3.ɵba; @ ./src async @
./~/ionic-angular/util/ng-module-loader.js @ ./src/app/app.module.ngfactory.js @
./src/app/main.ts,./src/pages/tabs/tabs.module.ngfactory.ts Module parse failed:
/Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js!/Users/Anku/Documents/IdeaProjects/ionic2-mosum/src/pages/tabs/tabs.module.ngfactory.ts
Unexpected token (74:62) You may need an appropriate loader to handle this file type. | import * as import63
from './tabs'; | import * as import64 from 'ionic-angular/util/module-loader'; | class
TabsPageModuleInjector extends import0.ɵNgModuleInjector<import1.TabsPageModule> { |
_CommonModule_0:import2.CommonModule; | _ɵba_1:import3.ɵba; @ ./src async @
./~/ionic-angular/util/ng-module-loader.js @ ./src/app/app.module.ngfactory.js @
./src/app/main.ts,./src/pages/weather-detail/weather-detail.module.ngfactory.ts Module parse failed:
/Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js!/Users/Anku/Documents/IdeaProjects/ionic2-mosum/src/pages/weather-detail/weather-detail.module.ngfactory.ts
Unexpected token (74:71) You may need an appropriate loader to handle this file type. | import * as import63
from './weather-detail'; | import * as import64 from 'ionic-angular/util/module-loader'; | class
WeatherDetailPageModuleInjector extends import0.ɵNgModuleInjector<import1.WeatherDetailPageModule> { |
_CommonModule_0:import2.CommonModule; | _ɵba_1:import3.ɵba; @ ./src async @
./~/ionic-angular/util/ng-module-loader.js @ ./src/app/app.module.ngfactory.js @
./src/app/main.ts,./src/pages/world-weather/world-weather.module.ngfactory.ts Module parse failed:
/Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js!/Users/Anku/Documents/IdeaProjects/ionic2-mosum/src/pages/world-weather/world-weather.module.ngfactory.ts
Unexpected token (74:70) You may need an appropriate loader to handle this file type. | import * as import63
from './world-weather'; | import * as import64 from 'ionic-angular/util/module-loader'; | class
WorldWeatherPageModuleInjector extends import0.ɵNgModuleInjector<import1.WorldWeatherPageModule> { |
_CommonModule_0:import2.CommonModule; | _ɵba_1:import3.ɵba; @ ./src async @
./~/ionic-angular/util/ng-module-loader.js @ ./src/app/app.module.ngfactory.js @ ./src/app/main.ts
Error: ./src/pages/settings/settings.module.ngfactory.ts
Module parse failed: /Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js!/Users/Anku/Documents/IdeaProjects/ionic2-mosum/src/pages/settings/settings.module.ngfactory.ts Unexpected token (74:66)
You may need an appropriate loader to handle this file type.
| import * as import63 from './settings';
| import * as import64 from 'ionic-angular/util/module-loader';
| class SettingsPageModuleInjector extends import0.ɵNgModuleInjector<import1.SettingsPageModule> {
| _CommonModule_0:import2.CommonModule;
| _ɵba_1:import3.ɵba;
@ ./src async
@ ./~/ionic-angular/util/ng-module-loader.js
@ ./src/app/app.module.ngfactory.js
@ ./src/app/main.ts,./src/pages/tabs/tabs.module.ngfactory.ts
Module parse failed: /Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js!/Users/Anku/Documents/IdeaProjects/ionic2-mosum/src/pages/tabs/tabs.module.ngfactory.ts Unexpected token (74:62)
You may need an appropriate loader to handle this file type.
| import * as import63 from './tabs';
| import * as import64 from 'ionic-angular/util/module-loader';
| class TabsPageModuleInjector extends import0.ɵNgModuleInjector<import1.TabsPageModule> {
| _CommonModule_0:import2.CommonModule;
| _ɵba_1:import3.ɵba;
@ ./src async
@ ./~/ionic-angular/util/ng-module-loader.js
@ ./src/app/app.module.ngfactory.js
@ ./src/app/main.ts,./src/pages/weather-detail/weather-detail.module.ngfactory.ts
Module parse failed: /Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js!/Users/Anku/Documents/IdeaProjects/ionic2-mosum/src/pages/weather-detail/weather-detail.module.ngfactory.ts Unexpected token (74:71)
You may need an appropriate loader to handle this file type.
| import * as import63 from './weather-detail';
| import * as import64 from 'ionic-angular/util/module-loader';
| class WeatherDetailPageModuleInjector extends import0.ɵNgModuleInjector<import1.WeatherDetailPageModule> {
| _CommonModule_0:import2.CommonModule;
| _ɵba_1:import3.ɵba;
@ ./src async
@ ./~/ionic-angular/util/ng-module-loader.js
@ ./src/app/app.module.ngfactory.js
@ ./src/app/main.ts,./src/pages/world-weather/world-weather.module.ngfactory.ts
Module parse failed: /Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/webpack/optimization-loader.js!/Users/Anku/Documents/IdeaProjects/ionic2-mosum/src/pages/world-weather/world-weather.module.ngfactory.ts Unexpected token (74:70)
You may need an appropriate loader to handle this file type.
| import * as import63 from './world-weather';
| import * as import64 from 'ionic-angular/util/module-loader';
| class WorldWeatherPageModuleInjector extends import0.ɵNgModuleInjector<import1.WorldWeatherPageModule> {
| _CommonModule_0:import2.CommonModule;
| _ɵba_1:import3.ɵba;
@ ./src async
@ ./~/ionic-angular/util/ng-module-loader.js
@ ./src/app/app.module.ngfactory.js
@ ./src/app/main.ts
at new BuildError (/Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/util/errors.js:16:28)
at /Users/Anku/Documents/IdeaProjects/ionic2-mosum/node_modules/@ionic/app-scripts/dist/preprocess.js:18:21
at process._tickCallback (internal/process/next_tick.js:103:7)
npm ERR! Darwin 16.5.0
npm ERR! argv "/usr/local/Cellar/node/7.3.0/bin/node" "/usr/local/bin/npm" "run" "ionic:build" "--" "--prod"
npm ERR! node v7.3.0
npm ERR! npm v4.0.5
npm ERR! code ELIFECYCLE
npm ERR! ionic2-mosum@ ionic:build: `ionic-app-scripts build "--prod"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the ionic2-mosum@ ionic:build script 'ionic-app-scripts build "--prod"'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the ionic2-mosum package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! ionic-app-scripts build "--prod"
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs ionic2-mosum
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls ionic2-mosum
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR! /Users/Anku/Documents/IdeaProjects/ionic2-mosum/npm-debug.log
Ionic info
Anku@Ankushs-MacBook-Pro:ionic2-mosum$ ionic info
Your system information:
Cordova CLI: 6.5.0
Ionic Framework Version: 3.0.1
Ionic CLI Version: 2.2.3
Ionic App Lib Version: 2.2.1
Ionic App Scripts Version: 1.3.4-201704241624
ios-deploy version: 1.9.1
ios-sim version: 5.0.13
OS: macOS Sierra
Node Version: v7.3.0
Xcode version: Xcode 8.3.2 Build version 8E2002
The same error!
Same error, i think i open an issue in the wrong place, but...
https://github.com/driftyco/ionic/issues/11388
Try nightly. npm install @ionic/app-scripts@nightly. A PR introduced this issue, sorry. I'll publish a fix today.
Thanks,
Dan
non-prod still slow (60sec) but the good thing is --prod is working in nightly. I don't care about source map and stuff, can I do anything to get the faster build? Setting source map to eval fails as mentioned here https://github.com/driftyco/ionic-app-scripts#tips
non-prod
Anku@Ankushs-MacBook-Pro:ionic2-mosum$ ionic build ios
> ionic2-mosum@ ionic:build /Users/Anku/Documents/IdeaProjects/ionic2-mosum
> ionic-app-scripts build
[09:10:29] ionic-app-scripts 1.3.5-201704271445
[09:10:29] build dev started ...
[09:10:29] clean started ...
[09:10:29] clean finished in 3 ms
[09:10:29] copy started ...
[09:10:29] transpile started ...
[09:10:32] transpile finished in 2.76 s
[09:10:32] preprocess started ...
[09:10:32] deeplinks started ...
[09:10:32] deeplinks finished in 92 ms
[09:10:32] preprocess finished in 94 ms
[09:10:32] webpack started ...
[09:10:32] copy finished in 3.00 s
[09:11:31] webpack finished in 59.44 s
[09:11:31] sass started ...
[09:11:32] sass finished in 859 ms
[09:11:32] postprocess started ...
[09:11:32] postprocess finished in 1 ms
[09:11:32] lint started ...
[09:11:32] build dev finished in 63.19 s
[09:11:34] lint finished in 1.90 s
Building project: /Users/Anku/Documents/IdeaProjects/ionic2-mosum/platforms/ios/Mosum.xcworkspace
prod
Anku@Ankushs-MacBook-Pro:ionic2-mosum$ ionic build ios --prod
> ionic2-mosum@ ionic:build /Users/Anku/Documents/IdeaProjects/ionic2-mosum
> ionic-app-scripts build "--prod"
[09:13:15] ionic-app-scripts 1.3.5-201704271445
[09:13:15] build prod started ...
[09:13:15] clean started ...
[09:13:15] clean finished in 4 ms
[09:13:15] copy started ...
[09:13:15] ngc started ...
[09:13:24] ngc finished in 8.73 s
[09:13:24] preprocess started ...
[09:13:24] deeplinks started ...
[09:13:24] deeplinks finished in 373 ms
[09:13:24] optimization started ...
[09:13:24] copy finished in 9.23 s
[09:13:33] optimization finished in 8.88 s
[09:13:33] preprocess finished in 9.26 s
[09:13:33] webpack started ...
[09:14:33] webpack finished in 60.05 s
[09:14:33] sass started ...
[09:14:33] uglifyjs started ...
[09:14:34] sass finished in 1.14 s
[09:14:34] cleancss started ...
[09:14:35] cleancss finished in 1.03 s
WARN: Output exceeds 32000 characters
[09:14:51] uglifyjs finished in 18.21 s
[09:14:51] postprocess started ...
[09:14:51] postprocess finished in 2 ms
[09:14:51] lint started ...
[09:14:51] build prod finished in 96.28 s
[09:14:53] lint finished in 1.92 s
Building project: /Users/Anku/Documents/IdeaProjects/ionic2-mosum/platforms/ios/Mosum.xcworkspace
@aggarwalankush,
There is a setting to build_to_es5. Check out the readme and you can turn it off.
Thanks,
Dan
@danbucholtz Setting following makes the build process ultra fast again :)
"config": {
"ionic_build_to_es5": false
}
Would you mind telling the effect of using this flag? Is it safe to not build to es5 as some browser might not fully support es6? Do I need to disable this flag in --prod build?
@danbucholtz I've set "ionic_build_to_es5": false in package.json but build & serve does not seems "fast".
How do I check if it's disabled or not? Can you add it to build log?
Here is my build log:
$ ionic serve browser
Starting app-scripts server: --port 8100 --livereload-port 35729 --address 0.0.0.0
[20:09:03] watch started ...
[20:09:03] build dev started ...
[20:09:03] clean started ...
[20:09:03] clean finished in 2 ms
[20:09:03] copy started ...
[20:09:03] transpile started ...
[20:09:10] transpile finished in 6.74 s
[20:09:10] preprocess started ...
[20:09:10] deeplinks started ...
[20:09:11] deeplinks finished in 993 ms
[20:09:11] preprocess finished in 995 ms
[20:09:11] webpack started ...
[20:09:12] copy finished in 8.58 s
[20:09:49] webpack finished in 37.91 s
[20:09:49] sass started ...
[20:09:51] sass finished in 2.12 s
[20:09:51] postprocess started ...
[20:09:51] postprocess finished in 8 ms
[20:09:51] lint started ...
[20:09:51] build dev finished in 47.85 s
[20:09:51] watch ready in 47.98 s
[20:09:51] dev server running: http://localhost:8100/
[20:10:02] lint finished in 10.97 s
@aggarwalankush is your numbers better?
@astec Yes, setting config makes it as fast as v1.3.0
$ ionic serve browser
> [email protected] ionic:serve /Users/Anku/Documents/IdeaProjects/ionic2-mosum
> ionic-app-scripts serve "--v2" "--address" "0.0.0.0" "--port" "8100" "--livereload-port" "35730"
[12:24:54] ionic-app-scripts 1.3.6
[12:24:54] watch started ...
[12:24:54] build dev started ...
[12:24:54] clean started ...
[12:24:54] clean finished in 4 ms
[12:24:54] copy started ...
[12:24:54] transpile started ...
[12:24:56] transpile finished in 2.33 s
[12:24:56] preprocess started ...
[12:24:56] deeplinks started ...
[12:24:56] deeplinks finished in 99 ms
[12:24:56] preprocess finished in 100 ms
[12:24:56] webpack started ...
[12:24:56] copy finished in 2.53 s
[12:25:04] webpack finished in 8.07 s
[12:25:04] sass started ...
[12:25:05] sass finished in 1.05 s
[12:25:05] postprocess started ...
[12:25:05] postprocess finished in 8 ms
[12:25:05] lint started ...
[12:25:05] build dev finished in 11.60 s
[12:25:05] watch ready in 11.66 s
[12:25:05] dev server running: http://localhost:8100/
[12:25:08] lint finished in 2.91 s
This is resolved for all non-prod builds.
Thanks,
Dan
Most helpful comment
@danbucholtz Setting following makes the build process ultra fast again :)
Would you mind telling the effect of using this flag? Is it safe to not build to es5 as some browser might not fully support es6? Do I need to disable this flag in
--prodbuild?