diff --git a/integration/bazel/.bazelrc b/integration/bazel/.bazelrc index f56328b9d6..3d0c67c1b4 100644 --- a/integration/bazel/.bazelrc +++ b/integration/bazel/.bazelrc @@ -11,8 +11,9 @@ test --test_output=errors # https://circleci.com/docs/2.0/configuration-reference/#resource_class build --local_resources=14336,8.0,1.0 -# Use the Angular 6 compiler -build --define=compile=legacy +# Use the Angular Ivy compiler +# See https://github.com/angular/angular/blob/master/docs/BAZEL.md#various-flags-used-for-tests +build --define=compile=aot # Temporary define while angular depends on the legacy rollup_bundle rule. # TODO: remove this setting after https://github.com/angular/angular/pull/33201 lands. diff --git a/integration/bazel/angular-metadata.tsconfig.json b/integration/bazel/angular-metadata.tsconfig.json deleted file mode 100644 index f52c86c8d0..0000000000 --- a/integration/bazel/angular-metadata.tsconfig.json +++ /dev/null @@ -1,30 +0,0 @@ -// Workaround for https://github.com/angular/angular/issues/18810 -// This file is required because when using the Angular NPM packages and building -// with AOT compilation, NGC needs the "ngsummary.json" files. -{ - "compilerOptions": { - "lib": [ - "dom", - "es2015" - ], - "experimentalDecorators": true, - "types": [], - "module": "amd", - "moduleResolution": "node" - }, - "angularCompilerOptions": { - "enableSummariesForJit": true, - "enableIvy": false - }, - "include": [ - "node_modules/@angular/**/*" - ], - "exclude": [ - "node_modules/@angular/bazel/**", - "node_modules/@angular/**/testing/**", - "node_modules/@angular/**/schematics/**", - "node_modules/@angular/compiler-cli/**", - "node_modules/@angular/common/upgrade*", - "node_modules/@angular/router/upgrade*" - ] -} diff --git a/integration/bazel/package.json b/integration/bazel/package.json index 6961af62b8..92b894a459 100644 --- a/integration/bazel/package.json +++ b/integration/bazel/package.json @@ -25,13 +25,20 @@ "@bazel/bazel": "file:../../node_modules/@bazel/bazel", "@bazel/karma": "0.39.0", "@bazel/protractor": "0.39.0", + "@bazel/rollup": "0.39.0", + "@bazel/terser": "0.39.0", "@bazel/typescript": "0.39.0", "@types/jasmine": "2.8.8", "http-server": "^0.11.1", + "rollup": "^1.21.4", + "rollup-plugin-commonjs": "^10.1.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-sourcemaps": "^0.4.2", + "terser": "4.3.1", "typescript": "3.6.4" }, "scripts": { "test": "bazel build ... --noshow_progress && bazel test ...", - "postinstall": "ngc -p ./angular-metadata.tsconfig.json" + "postinstall": "ngcc" } } diff --git a/integration/bazel/src/BUILD.bazel b/integration/bazel/src/BUILD.bazel index f0c9f5cce4..bcc424e978 100644 --- a/integration/bazel/src/BUILD.bazel +++ b/integration/bazel/src/BUILD.bazel @@ -1,9 +1,10 @@ package(default_visibility = ["//visibility:public"]) load("@npm_angular_bazel//:index.bzl", "ng_module") -load("@build_bazel_rules_nodejs//:index.bzl", "rollup_bundle") load("@npm//http-server:index.bzl", "http_server") load("@build_bazel_rules_nodejs//internal/web_package:web_package.bzl", "web_package") +load("@npm_bazel_rollup//:index.bzl", "rollup_bundle") +load("@npm_bazel_terser//:index.bzl", "terser_minified") load("@npm_bazel_typescript//:index.bzl", "ts_devserver") # Allow targets under sub-packages to reference the tsconfig.json file @@ -48,29 +49,26 @@ ts_devserver( rollup_bundle( name = "bundle", - enable_code_splitting = False, + config_file = "rollup.config.js", entry_point = ":main.ts", deps = [ "//src", - # TODO(kyliau): These are not necessary. Bundle compiles fine without - # these deps. - # "@npm//@angular/common", - # "@npm//@angular/core", - # "@npm//@angular/platform-browser", - "@npm//@angular/router", # needed here due to additional imports generated by ngc - "@npm//rxjs", + "@npm//rollup-plugin-commonjs", + "@npm//rollup-plugin-node-resolve", ], ) +terser_minified( + name = "bundle.min", + src = ":bundle", +) + web_package( name = "prodapp", assets = [ # do not sort "@npm//:node_modules/zone.js/dist/zone.min.js", - ":bundle.min.js", - ], - data = [ - ":bundle", + ":bundle.min", ], index_html = "index.html", ) diff --git a/integration/bazel/src/main.ts b/integration/bazel/src/main.ts index beeae5e4b3..4ed5dee6c1 100644 --- a/integration/bazel/src/main.ts +++ b/integration/bazel/src/main.ts @@ -1,4 +1,4 @@ import {platformBrowser} from '@angular/platform-browser'; -import {AppModuleNgFactory} from './app.module.ngfactory'; +import {AppModule} from './app.module'; -platformBrowser().bootstrapModuleFactory(AppModuleNgFactory); +platformBrowser().bootstrapModule(AppModule); diff --git a/integration/bazel/src/rollup.config.js b/integration/bazel/src/rollup.config.js new file mode 100644 index 0000000000..6f6d3727c5 --- /dev/null +++ b/integration/bazel/src/rollup.config.js @@ -0,0 +1,11 @@ +const node = require('rollup-plugin-node-resolve'); +const commonjs = require('rollup-plugin-commonjs'); + +module.exports = { + plugins: [ + node({ + mainFields: ['browser', 'es2015', 'module', 'jsnext:main', 'main'], + }), + commonjs(), + ], +}; diff --git a/integration/bazel/yarn.lock b/integration/bazel/yarn.lock index 8d5f4f99f1..0cc1274cfd 100644 --- a/integration/bazel/yarn.lock +++ b/integration/bazel/yarn.lock @@ -116,6 +116,16 @@ dependencies: protractor "^5.4.2" +"@bazel/rollup@0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@bazel/rollup/-/rollup-0.39.0.tgz#b2c20a1436486020fc9dd86792799cfdabb6dd18" + integrity sha512-yMIPphGs7VzXVBhSW3petF3gVM/hQ1RajhwdnT69BCM9AOv3fEMJ8hjtBn43M8bQI8HbTQBFYdsaa4PT2z5GKg== + +"@bazel/terser@0.39.0": + version "0.39.0" + resolved "https://registry.yarnpkg.com/@bazel/terser/-/terser-0.39.0.tgz#be543284b9dc04063761765357dd189c7a95e6ae" + integrity sha512-ztXdxP5eAXdJXHbklLHqnFds3mVxbOXFJ66LHqY2lLDgSgucK5rMpkHgn7Ngtg69FnU0/iIcf2v74vGxrE0Lpg== + "@bazel/typescript@0.39.0": version "0.39.0" resolved "https://registry.yarnpkg.com/@bazel/typescript/-/typescript-0.39.0.tgz#9e4feef3038c94419b15fbe88eef467f0f076056" @@ -232,6 +242,11 @@ resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.33.tgz#2728669427cdd74a99e53c9f457ca2866a37c52d" integrity sha512-VQgHxyPMTj3hIlq9SY1mctqx+Jj8kpQfoLvDlVSDNOyuYs8JYfkuY3OW/4+dO657yPmNhHpePRx0/Tje5ImNVQ== +"@types/estree@*", "@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + "@types/jasmine@2.8.8": version "2.8.8" resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.8.8.tgz#bf53a7d193ea8b03867a38bfdb4fbb0e0bf066c9" @@ -242,6 +257,11 @@ resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== +"@types/node@*": + version "12.11.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.7.tgz#57682a9771a3f7b09c2497f28129a0462966524a" + integrity sha512-JNbGaHFCLwgHn/iCckiGSOZ1XYHsKFwREtzPwSGCVld1SGhOlmZw2D4ZI94HQCrBHbADzW9m4LER/8olJTRGHA== + "@types/node@8.10.54": version "8.10.54" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.54.tgz#1c88eb253ac1210f1a5876953fb70f7cc4928402" @@ -257,6 +277,13 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" integrity sha1-vShOV8hPEyXacCur/IKlMoGQwMU= +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + "@types/selenium-webdriver@^3.0.0": version "3.0.16" resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.16.tgz#50a4755f8e33edacd9c406729e9b930d2451902a" @@ -275,6 +302,11 @@ accepts@~1.3.4: mime-types "~2.1.24" negotiator "0.6.2" +acorn@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" + integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== + adm-zip@^0.4.9, adm-zip@~0.4.3: version "0.4.13" resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.13.tgz#597e2f8cc3672151e1307d3e95cddbc75672314a" @@ -585,6 +617,11 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" @@ -714,7 +751,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.7.1: +commander@^2.20.0, commander@^2.7.1: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -1081,6 +1118,11 @@ escape-string-regexp@^1.0.2: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + eventemitter3@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" @@ -1659,6 +1701,11 @@ is-glob@^4.0.0: dependencies: is-extglob "^2.1.1" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -1692,6 +1739,13 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-reference@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.1.4.tgz#3f95849886ddb70256a3e6d062b1a68c13c51427" + integrity sha512-uJA/CDPO3Tao3GTrxYn6AwkM4nUPJiGGYu5+cB8qbC7WGFlrKZbiRo7SFKxUAEpFUfiHofWCXBUNhvYJMh+6zw== + dependencies: + "@types/estree" "0.0.39" + is-regex@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" @@ -1995,7 +2049,7 @@ lru-cache@4.1.x: pseudomap "^1.0.2" yallist "^2.1.2" -magic-string@^0.25.0: +magic-string@^0.25.0, magic-string@^0.25.2: version "0.25.4" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.4.tgz#325b8a0a79fc423db109b77fd5a19183b7ba5143" integrity sha512-oycWO9nEVAP2RVPbIoDoA4Y7LFIJ3xRYov93gAyJhZkET1tNuB0u7uWkZS2LpBWTJUWnmau/To8ECWRC+jKNfw== @@ -2752,7 +2806,7 @@ resolve@1.8.1: dependencies: path-parse "^1.0.5" -resolve@^1.1.6: +resolve@^1.1.6, resolve@^1.11.0, resolve@^1.11.1: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== @@ -2776,6 +2830,52 @@ rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimra dependencies: glob "^7.1.3" +rollup-plugin-commonjs@^10.1.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-10.1.0.tgz#417af3b54503878e084d127adf4d1caf8beb86fb" + integrity sha512-jlXbjZSQg8EIeAAvepNwhJj++qJWNJw1Cl0YnOqKtP5Djx+fFGkp3WRh+W0ASCaFG5w1jhmzDxgu3SJuVxPF4Q== + dependencies: + estree-walker "^0.6.1" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-node-resolve@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" + integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== + dependencies: + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.11.1" + rollup-pluginutils "^2.8.1" + +rollup-plugin-sourcemaps@^0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz#62125aa94087aadf7b83ef4dfaf629b473135e87" + integrity sha1-YhJaqUCHqt97g+9N+vYptHMTXoc= + dependencies: + rollup-pluginutils "^2.0.1" + source-map-resolve "^0.5.0" + +rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.8.1: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.21.4: + version "1.26.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.26.0.tgz#cf40fd5e1edc4d7f3d4235a0a43f1c2be1cf294b" + integrity sha512-5HljNYn9icFvXX+Oe97qY5TWvnWhKqgGT0HGeWWqFPx7w7+Anzg7dfHMtUif7YYy6QxAgynDSwK6uxbgcrVUxw== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + "rxjs@file:../../node_modules/rxjs": version "6.5.3" dependencies: @@ -3014,6 +3114,14 @@ source-map-support@~0.4.0: dependencies: source-map "^0.5.6" +source-map-support@~0.5.12: + version "0.5.15" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.15.tgz#20fe16f16e74644e21a396c78c841fa66e35df6c" + integrity sha512-wYF5aX1J0+V51BDT3Om7uXNn0ct2FWiV4bvwiGVefxkm+1S1o5jsecE5lb2U28DDblzxzxeIDbTVpXHI9D/9hA== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" @@ -3188,6 +3296,15 @@ tar@^4: safe-buffer "^5.1.2" yallist "^3.0.3" +terser@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.3.1.tgz#09820bcb3398299c4b48d9a86aefc65127d0ed65" + integrity sha512-pnzH6dnFEsR2aa2SJaKb1uSCl3QmIsJ8dEkj0Fky+2AwMMcC9doMqLOQIH6wVTEKaVfKVvLSk5qxPBEZT9mywg== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + tmp@0.0.30: version "0.0.30" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed"