diff --git a/aio/README.md b/aio/README.md index baab409b53..4cdc193eb6 100644 --- a/aio/README.md +++ b/aio/README.md @@ -19,9 +19,6 @@ Here are the most important tasks you might need to use: * `yarn build` - create a production build of the application (after installing dependencies, boilerplate, etc). * `yarn build-local` - same as `build`, but use `setup-local` instead of `setup`. -* `yarn build-local-with-viewengine` - same as `build-local`, but in addition also turns on `ViewEngine` (pre-Ivy) mode in aio. - (Note: To turn on `ViewEngine` mode in docs examples, see `yarn boilerplate:add:viewengine` below.) - * `yarn start` - run a development web server that watches the files; then builds the doc-viewer and reloads the page, as necessary. * `yarn serve-and-sync` - run both the `docs-watch` and `start` in the same console. * `yarn lint` - check that the doc-viewer code follows our style rules. @@ -35,7 +32,6 @@ Here are the most important tasks you might need to use: * `yarn docs-test` - run the unit tests for the doc generation code. * `yarn boilerplate:add` - generate all the boilerplate code for the examples, so that they can be run locally. -* `yarn boilerplate:add:viewengine` - same as `boilerplate:add` but also turns on `ViewEngine` (pre-Ivy) mode. * `yarn boilerplate:remove` - remove all the boilerplate code that was added via `yarn boilerplate:add`. * `yarn create-example` - create a new example directory containing initial source files. @@ -46,7 +42,6 @@ Here are the most important tasks you might need to use: - `--setup`: generate boilerplate, force webdriver update & other setup, then run tests. - `--local`: run e2e tests with the local version of Angular contained in the "dist" folder. _Requires `--setup` in order to take effect._ - - `--viewengine`: run e2e tests in `ViewEngine` (pre-Ivy) mode. - `--filter=foo`: limit e2e tests to those containing the word "foo". > **Note for Windows users** diff --git a/aio/package.json b/aio/package.json index 004523410a..e697ed19bf 100644 --- a/aio/package.json +++ b/aio/package.json @@ -18,10 +18,6 @@ "build-local": "yarn ~~build", "prebuild-local-ci": "yarn setup-local-ci", "build-local-ci": "yarn ~~build --progress=false", - "prebuild-local-with-viewengine": "node scripts/switch-to-viewengine && yarn setup-local", - "build-local-with-viewengine": "yarn ~~build", - "prebuild-local-with-viewengine-ci": "node scripts/switch-to-viewengine && yarn setup-local-ci", - "build-local-with-viewengine-ci": "yarn ~~build --progress=false", "extract-cli-command-docs": "node tools/transforms/cli-docs-package/extract-cli-commands.js d902a289b", "lint": "yarn check-env && yarn docs-lint && ng lint && yarn example-lint && yarn tools-lint", "test": "yarn check-env && ng test", @@ -65,7 +61,6 @@ "preserve-and-sync": "yarn docs", "serve-and-sync": "run-p \"docs-watch --watch-only\" \"start {@}\" --", "boilerplate:add": "node ./tools/examples/example-boilerplate add", - "boilerplate:add:viewengine": "yarn boilerplate:add --viewengine", "boilerplate:remove": "node ./tools/examples/example-boilerplate remove", "boilerplate:test": "node tools/examples/test.js", "generate-stackblitz": "node ./tools/stackblitz-builder/generateStackblitz", diff --git a/aio/scripts/switch-to-viewengine.js b/aio/scripts/switch-to-viewengine.js deleted file mode 100644 index c8e194c8a2..0000000000 --- a/aio/scripts/switch-to-viewengine.js +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env node - -// Imports -const {extend, parse} = require('cjson'); -const {readFileSync, writeFileSync} = require('fs'); -const {join, resolve} = require('path'); - -// Constants -const ROOT_DIR = resolve(__dirname, '..'); -const TS_CONFIG_PATH = join(ROOT_DIR, 'tsconfig.json'); -const NG_COMPILER_OPTS = { - angularCompilerOptions: { - enableIvy: false, - }, -}; - -// Run -_main(process.argv.slice(2)); - -// Functions - Definitions -function _main() { - // Enable ViewIngine/Disable Ivy in TS config. - console.log(`\nModifying \`${TS_CONFIG_PATH}\`...`); - const oldTsConfigStr = readFileSync(TS_CONFIG_PATH, 'utf8'); - const oldTsConfigObj = parse(oldTsConfigStr); - const newTsConfigObj = extend(true, oldTsConfigObj, NG_COMPILER_OPTS); - const newTsConfigStr = `${JSON.stringify(newTsConfigObj, null, 2)}\n`; - console.log(`\nNew config: ${newTsConfigStr}`); - writeFileSync(TS_CONFIG_PATH, newTsConfigStr); - - // Done. - console.log('\nReady to build with ViewEngine!'); - console.log('(To switch back to Ivy (with packages from npm), undo the changes in ' + - `\`${TS_CONFIG_PATH}\` and run \`yarn aio-use-npm && yarn example-use-npm\`.)`); -} diff --git a/aio/tools/examples/README.md b/aio/tools/examples/README.md index 20c3459a36..1d5182f8fa 100644 --- a/aio/tools/examples/README.md +++ b/aio/tools/examples/README.md @@ -47,9 +47,6 @@ Currently, the following project types are supported: There are also the following special folders: - `common`: Contains files used in many examples. (See the [next section](#example-config) for info on how to exclude common files in certain examples.) -- `viewengine/cli`: Additional configuration for running CLI-based examples with `ViewEngine` (the pre-Ivy compiler/renderer). - This applies to all CLI-based examples, such as `cli-ajs`, `elements`, `getting-started`, etc. -- `viewengine/systemjs`: Additional configuration for running SystemJS-based examples with `ViewEngine` (the pre-Ivy compiler/renderer). diff --git a/aio/tools/examples/example-boilerplate.js b/aio/tools/examples/example-boilerplate.js index 5a2909f0ec..ecec737d77 100644 --- a/aio/tools/examples/example-boilerplate.js +++ b/aio/tools/examples/example-boilerplate.js @@ -11,13 +11,12 @@ const SHARED_NODE_MODULES_PATH = path.resolve(SHARED_PATH, 'node_modules'); const BOILERPLATE_BASE_PATH = path.resolve(SHARED_PATH, 'boilerplate'); const BOILERPLATE_CLI_PATH = path.resolve(BOILERPLATE_BASE_PATH, 'cli'); const BOILERPLATE_COMMON_PATH = path.resolve(BOILERPLATE_BASE_PATH, 'common'); -const BOILERPLATE_VIEWENGINE_PATH = path.resolve(BOILERPLATE_BASE_PATH, 'viewengine'); class ExampleBoilerPlate { /** * Add boilerplate files to all the examples */ - add(viewengine = false) { + add() { // Get all the examples folders, indicated by those that contain a `example-config.json` file const exampleFolders = this.getFoldersContaining(EXAMPLES_BASE_PATH, EXAMPLE_CONFIG_FILENAME, 'node_modules'); @@ -30,9 +29,7 @@ class ExampleBoilerPlate { 'Perhaps you need to run "yarn example-use-npm" or "yarn example-use-local" to install the dependencies?'); } - if (!viewengine) { - shelljs.exec(`yarn --cwd ${SHARED_PATH} ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points`); - } + shelljs.exec(`yarn --cwd ${SHARED_PATH} ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points`); exampleFolders.forEach(exampleFolder => { const exampleConfig = this.loadJsonFile(path.resolve(exampleFolder, EXAMPLE_CONFIG_FILENAME)); @@ -58,13 +55,6 @@ class ExampleBoilerPlate { if (exampleConfig.useCommonBoilerplate !== false) { this.copyDirectoryContents(BOILERPLATE_COMMON_PATH, exampleFolder, isPathIgnored); } - - // Copy ViewEngine (pre-Ivy) specific files - if (viewengine) { - const veBoilerPlateType = boilerPlateType === 'systemjs' ? 'systemjs' : 'cli'; - const veBoilerPlateBasePath = path.resolve(BOILERPLATE_VIEWENGINE_PATH, veBoilerPlateType); - this.copyDirectoryContents(veBoilerPlateBasePath, exampleFolder, isPathIgnored); - } }); } @@ -75,7 +65,7 @@ class ExampleBoilerPlate { main() { yargs.usage('$0 [args]') - .command('add', 'add the boilerplate to each example', yrgs => this.add(yrgs.argv.viewengine)) + .command('add', 'add the boilerplate to each example', yrgs => this.add()) .command('remove', 'remove the boilerplate from each example', () => this.remove()) .demandCommand(1, 'Please supply a command from the list above') .argv; diff --git a/aio/tools/examples/example-boilerplate.spec.js b/aio/tools/examples/example-boilerplate.spec.js index f716f5c434..93b806baab 100644 --- a/aio/tools/examples/example-boilerplate.spec.js +++ b/aio/tools/examples/example-boilerplate.spec.js @@ -133,66 +133,6 @@ describe('example-boilerplate tool', () => { expect(exampleBoilerPlate.loadJsonFile).toHaveBeenCalledWith(path.resolve('a/b/example-config.json')); expect(exampleBoilerPlate.loadJsonFile).toHaveBeenCalledWith(path.resolve('c/d/example-config.json')); }); - - describe('(viewengine: true)', () => { - it('should not run `ngcc`', () => { - exampleBoilerPlate.add(true); - expect(shelljs.exec).not.toHaveBeenCalled(); - }); - - it('should copy all the source boilerplate files for systemjs', () => { - const boilerplateDir = path.resolve(sharedDir, 'boilerplate'); - exampleBoilerPlate.loadJsonFile.and.returnValue({ projectType: 'systemjs' }); - - exampleBoilerPlate.add(true); - - expect(exampleBoilerPlate.copyDirectoryContents).toHaveBeenCalledTimes(6); - expect(exampleBoilerPlate.copyDirectoryContents.calls.allArgs()).toEqual([ - [`${boilerplateDir}/systemjs`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/common`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/viewengine/systemjs`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/systemjs`, 'c/d', jasmine.any(Function)], - [`${boilerplateDir}/common`, 'c/d', jasmine.any(Function)], - [`${boilerplateDir}/viewengine/systemjs`, 'c/d', jasmine.any(Function)], - ]); - }); - - it('should copy all the source boilerplate files for cli', () => { - const boilerplateDir = path.resolve(sharedDir, 'boilerplate'); - exampleBoilerPlate.loadJsonFile.and.returnValue({ projectType: 'cli' }); - - exampleBoilerPlate.add(true); - - expect(exampleBoilerPlate.copyDirectoryContents).toHaveBeenCalledTimes(6); - expect(exampleBoilerPlate.copyDirectoryContents.calls.allArgs()).toEqual([ - [`${boilerplateDir}/cli`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/common`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/viewengine/cli`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/cli`, 'c/d', jasmine.any(Function)], - [`${boilerplateDir}/common`, 'c/d', jasmine.any(Function)], - [`${boilerplateDir}/viewengine/cli`, 'c/d', jasmine.any(Function)], - ]); - }); - - it('should copy all the source boilerplate files for elements', () => { - const boilerplateDir = path.resolve(sharedDir, 'boilerplate'); - exampleBoilerPlate.loadJsonFile.and.returnValue({ projectType: 'elements' }); - - exampleBoilerPlate.add(true); - - expect(exampleBoilerPlate.copyDirectoryContents).toHaveBeenCalledTimes(8); - expect(exampleBoilerPlate.copyDirectoryContents.calls.allArgs()).toEqual([ - [`${boilerplateDir}/cli`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/elements`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/common`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/viewengine/cli`, 'a/b', jasmine.any(Function)], - [`${boilerplateDir}/cli`, 'c/d', jasmine.any(Function)], - [`${boilerplateDir}/elements`, 'c/d', jasmine.any(Function)], - [`${boilerplateDir}/common`, 'c/d', jasmine.any(Function)], - [`${boilerplateDir}/viewengine/cli`, 'c/d', jasmine.any(Function)], - ]); - }); - }); }); describe('remove', () => { diff --git a/aio/tools/examples/run-example-e2e.js b/aio/tools/examples/run-example-e2e.js index d5798fecfe..121c2e895c 100644 --- a/aio/tools/examples/run-example-e2e.js +++ b/aio/tools/examples/run-example-e2e.js @@ -23,12 +23,6 @@ const DEFAULT_CLI_EXAMPLE_PORT = 4200; const DEFAULT_CLI_SPECS_CONCURRENCY = 1; const IGNORED_EXAMPLES = []; -const fixmeIvyExamples = []; - -if (!argv.viewengine) { - IGNORED_EXAMPLES.push(...fixmeIvyExamples); -} - /** * Run Protractor End-to-End Tests for Doc Samples * @@ -43,8 +37,6 @@ if (!argv.viewengine) { * Must be used in conjunction with --setup as this is when the packages are copied. * e.g. --setup --local * - * --viewengine to turn on `ViewEngine` mode - * * --shard to shard the specs into groups to allow you to run them in parallel * e.g. --shard=0/2 // the even specs: 0, 2, 4, etc * e.g. --shard=1/2 // the odd specs: 1, 3, 5, etc @@ -61,9 +53,8 @@ function runE2e() { // Run setup. console.log('runE2e: setup boilerplate'); const installPackagesCommand = `example-use-${argv.local ? 'local' : 'npm'}`; - const addBoilerplateCommand = `boilerplate:add${argv.viewengine ? ':viewengine' : ''}`; shelljs.exec(`yarn ${installPackagesCommand}`, {cwd: AIO_PATH}); - shelljs.exec(`yarn ${addBoilerplateCommand}`, {cwd: AIO_PATH}); + shelljs.exec(`yarn boilerplate:add`, {cwd: AIO_PATH}); } const outputFile = path.join(AIO_PATH, './protractor-results.txt'); @@ -180,14 +171,7 @@ function runE2eTestsSystemJS(appDir, outputFile) { const appBuildSpawnInfo = spawnExt('yarn', [config.build], {cwd: appDir}); const appRunSpawnInfo = spawnExt('yarn', [config.run, '-s'], {cwd: appDir}, true); - let run = runProtractorSystemJS(appBuildSpawnInfo.promise, appDir, appRunSpawnInfo, outputFile); - - // Only run AOT tests in ViewEngine mode. The current AOT setup does not work in Ivy. - // See https://github.com/angular/angular/issues/35989. - if (argv.viewengine && fs.existsSync(appDir + '/aot/index.html')) { - run = run.then((ok) => ok && runProtractorAoT(appDir, outputFile)); - } - return run; + return runProtractorSystemJS(appBuildSpawnInfo.promise, appDir, appRunSpawnInfo, outputFile); } function runProtractorSystemJS(prepPromise, appDir, appRunSpawnInfo, outputFile) { @@ -320,14 +304,6 @@ function reportStatus(status, outputFile) { log.push(' ' + val); }); - if (!argv.viewengine) { - log.push(''); - log.push('Suites ignored due to breakage with Ivy:'); - fixmeIvyExamples.forEach(function(val) { - log.push(' ' + val); - }); - } - log.push(''); log.push('Suites passed:'); status.passed.forEach(function(val) { diff --git a/aio/tools/examples/shared/boilerplate/viewengine/cli/tsconfig.json b/aio/tools/examples/shared/boilerplate/viewengine/cli/tsconfig.json deleted file mode 100644 index 2c974301ff..0000000000 --- a/aio/tools/examples/shared/boilerplate/viewengine/cli/tsconfig.json +++ /dev/null @@ -1,31 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - // TODO(gkalpak): Fix the code and enable this. - // "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2015", - "module": "es2020", - "lib": [ - "es2018", - "dom" - ] - }, - "angularCompilerOptions": { - "enableIvy": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/aio/tools/examples/shared/boilerplate/viewengine/systemjs/rollup-config.js b/aio/tools/examples/shared/boilerplate/viewengine/systemjs/rollup-config.js deleted file mode 100644 index eb60d134c3..0000000000 --- a/aio/tools/examples/shared/boilerplate/viewengine/systemjs/rollup-config.js +++ /dev/null @@ -1,22 +0,0 @@ -// #docregion -import nodeResolve from 'rollup-plugin-node-resolve' -import commonjs from 'rollup-plugin-commonjs'; -import {terser} from 'rollup-plugin-terser' - -//paths are relative to the execution path -export default { - input: 'app/main-aot.js', - output: { - file: 'aot/dist/build.js', // output a single application bundle - format: 'iife', - sourcemap: true, - sourcemapFile: 'aot/dist/build.js.map' - }, - plugins: [ - nodeResolve({jsnext: true, module: true}), - commonjs({ - include: ['node_modules/rxjs/**'] - }), - terser() - ] -} diff --git a/aio/tools/examples/shared/boilerplate/viewengine/systemjs/tsconfig-aot.json b/aio/tools/examples/shared/boilerplate/viewengine/systemjs/tsconfig-aot.json deleted file mode 100644 index b56690d6bb..0000000000 --- a/aio/tools/examples/shared/boilerplate/viewengine/systemjs/tsconfig-aot.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "module": "es2020", - "moduleResolution": "node", - "sourceMap": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "lib": [ - "es2015", - "dom" - ], - "removeComments": false, - "noImplicitAny": true, - "skipLibCheck": true, - "suppressImplicitAnyIndexErrors": true, - "typeRoots": [ - "node_modules/@types" - ] - }, - "files": [ - "app/app.module.ts", - "app/main-aot.ts" - ], - "angularCompilerOptions": { - "enableIvy": false, - "skipMetadataEmit": true - } -} diff --git a/aio/tools/examples/shared/sync-boilerplate-dependencies.js b/aio/tools/examples/shared/sync-boilerplate-dependencies.js index 439c627fe9..654ecc8ceb 100644 --- a/aio/tools/examples/shared/sync-boilerplate-dependencies.js +++ b/aio/tools/examples/shared/sync-boilerplate-dependencies.js @@ -7,21 +7,17 @@ * ``` * * Updates the dependency versions of the top-level `package.json` files in each sub-folder of - * `./boilerplate/` and `./boilerplate/viewengine/` to match the ones in `./package.json`. + * `./boilerplate/` to match the ones in `./package.json`. */ const fs = require('fs'); const path = require('path'); const BOILERPLATE_DIR = `${__dirname}/boilerplate`; -const VIEWENGINE_DIR = `${BOILERPLATE_DIR}/viewengine`; const SHARED_PACKAGE_JSON_PATH = `${__dirname}/package.json`; const sharedPkgJson = loadJsonFile(SHARED_PACKAGE_JSON_PATH); -const boilerplatePkgJsonPaths = [ - ...collectPackageJsonFiles(BOILERPLATE_DIR), - ...collectPackageJsonFiles(VIEWENGINE_DIR), -]; +const boilerplatePkgJsonPaths = collectPackageJsonFiles(BOILERPLATE_DIR); boilerplatePkgJsonPaths.forEach(syncDependencies); diff --git a/goldens/size-tracking/aio-payloads.json b/goldens/size-tracking/aio-payloads.json index 6ffc1a1e26..9c4ee1c9ef 100755 --- a/goldens/size-tracking/aio-payloads.json +++ b/goldens/size-tracking/aio-payloads.json @@ -16,14 +16,5 @@ "polyfills-es2015": 55230 } } - }, - "aio-local-viewengine": { - "master": { - "uncompressed": { - "runtime-es2015": 3153, - "main-es2015": 438824, - "polyfills-es2015": 55230 - } - } } }