From 3a2864234d1e3833650e79b277fdc91e52a1d6a4 Mon Sep 17 00:00:00 2001 From: Hans Larsen Date: Tue, 30 Aug 2016 17:43:07 -0700 Subject: [PATCH 1/2] refactor: move base-href webpack plugin into its own package. --- addon/ng2/models/webpack-build-common.ts | 4 +- addon/ng2/package.json | 1 - addon/ng2/tsconfig.json | 1 + packages/ast-tools/package.json | 2 +- packages/base-href-webpack/package.json | 27 ++++++++ .../src/base-href-webpack-plugin.spec.ts | 66 +++++++++++++++++++ .../src}/base-href-webpack-plugin.ts | 0 packages/base-href-webpack/src/index.ts | 2 + packages/base-href-webpack/tsconfig.json | 24 +++++++ scripts/run-packages-spec.js | 4 +- .../base-href-webpack-plugin.spec.js | 50 -------------- 11 files changed, 123 insertions(+), 58 deletions(-) create mode 100644 packages/base-href-webpack/package.json create mode 100644 packages/base-href-webpack/src/base-href-webpack-plugin.spec.ts rename {addon/ng2/utilities => packages/base-href-webpack/src}/base-href-webpack-plugin.ts (100%) create mode 100644 packages/base-href-webpack/src/index.ts create mode 100644 packages/base-href-webpack/tsconfig.json delete mode 100644 tests/acceptance/base-href-webpack-plugin.spec.js diff --git a/addon/ng2/models/webpack-build-common.ts b/addon/ng2/models/webpack-build-common.ts index cbe92ef13711..d4291f118851 100644 --- a/addon/ng2/models/webpack-build-common.ts +++ b/addon/ng2/models/webpack-build-common.ts @@ -4,12 +4,10 @@ const HtmlWebpackPlugin = require('html-webpack-plugin'); import * as webpack from 'webpack'; const atl = require('awesome-typescript-loader'); +import { BaseHrefWebpackPlugin } from '@angular-cli/base-href-webpack'; import { findLazyModules } from './find-lazy-modules'; -import { BaseHrefWebpackPlugin } from '../utilities/base-href-webpack-plugin'; - - export function getWebpackCommonConfig( projectRoot: string, environment: string, diff --git a/addon/ng2/package.json b/addon/ng2/package.json index 53d9f38255cc..8a0c28b1cd33 100644 --- a/addon/ng2/package.json +++ b/addon/ng2/package.json @@ -2,7 +2,6 @@ "name": "ng2", "version": "0.0.0", "description": "An addon to generate an ng2 project", - "author": "rodyhaddad", "license": "MIT", "keywords": [ "ember-addon" diff --git a/addon/ng2/tsconfig.json b/addon/ng2/tsconfig.json index 116aa140dbe1..f347288cb434 100644 --- a/addon/ng2/tsconfig.json +++ b/addon/ng2/tsconfig.json @@ -20,6 +20,7 @@ "baseUrl": "", "paths": { "@angular-cli/ast-tools": [ "../../packages/ast-tools/src" ], + "@angular-cli/base-href-webpack": [ "../../packages/base-href-webpack/src" ], "@angular-cli/webpack": [ "../../packages/webpack/src" ] } }, diff --git a/packages/ast-tools/package.json b/packages/ast-tools/package.json index f95f5bcd049c..c5c3e930e6ab 100644 --- a/packages/ast-tools/package.json +++ b/packages/ast-tools/package.json @@ -2,7 +2,7 @@ "name": "@angular-cli/ast-tools", "version": "1.0.0-beta.11-webpack.5", "description": "CLI tool for Angular", - "main": "./index.js", + "main": "./src/index.js", "keywords": [ "angular", "cli", diff --git a/packages/base-href-webpack/package.json b/packages/base-href-webpack/package.json new file mode 100644 index 000000000000..05a005a8bd53 --- /dev/null +++ b/packages/base-href-webpack/package.json @@ -0,0 +1,27 @@ +{ + "name": "@angular-cli/base-href-webpack", + "version": "1.0.0", + "description": "Base HREF Webpack plugin", + "main": "./src/index.js", + "keywords": [ + "angular", + "cli", + "ast", + "tool" + ], + "repository": { + "type": "git", + "url": "https://github.com/angular/angular-cli.git" + }, + "author": "angular", + "license": "MIT", + "bugs": { + "url": "https://github.com/angular/angular-cli/issues" + }, + "homepage": "https://github.com/angular/angular-cli", + "dependencies": { + "rxjs": "^5.0.0-beta.11", + "denodeify": "^1.2.1", + "typescript": "^2.0.0" + } +} diff --git a/packages/base-href-webpack/src/base-href-webpack-plugin.spec.ts b/packages/base-href-webpack/src/base-href-webpack-plugin.spec.ts new file mode 100644 index 000000000000..b86b707d2313 --- /dev/null +++ b/packages/base-href-webpack/src/base-href-webpack-plugin.spec.ts @@ -0,0 +1,66 @@ +import {oneLineTrim} from 'common-tags'; +import {BaseHrefWebpackPlugin} from './base-href-webpack-plugin'; + + +function mockCompiler(indexHtml, callback) { + return { + plugin: function (event, compilerCallback) { + const compilation = { + plugin: function (hook, compilationCallback) { + const htmlPluginData = { + html: indexHtml + }; + compilationCallback(htmlPluginData, callback); + } + }; + compilerCallback(compilation); + } + }; +} + +describe('base href webpack plugin', () => { + const html = oneLineTrim` + + + + + `; + + it('should do nothing when baseHref is null', () => { + const plugin = new BaseHrefWebpackPlugin({ baseHref: null }); + + const compiler = mockCompiler(html, (x, htmlPluginData) => { + expect(htmlPluginData.html).toEqual(''); + }); + plugin.apply(compiler); + }); + + it('should insert base tag when not exist', function () { + const plugin = new BaseHrefWebpackPlugin({ baseHref: '/' }); + const compiler = mockCompiler(html, (x, htmlPluginData) => { + expect(htmlPluginData.html).toEqual(oneLineTrim` + + + + + `); + }); + + plugin.apply(compiler); + }); + + it('should replace href attribute when base tag already exists', function () { + const plugin = new BaseHrefWebpackPlugin({ baseHref: '/myUrl/' }); + + const compiler = mockCompiler(oneLineTrim` + + + `, (x, htmlPluginData) => { + expect(htmlPluginData.html).toEqual(oneLineTrim` + + + `); + }); + plugin.apply(compiler); + }); +}); diff --git a/addon/ng2/utilities/base-href-webpack-plugin.ts b/packages/base-href-webpack/src/base-href-webpack-plugin.ts similarity index 100% rename from addon/ng2/utilities/base-href-webpack-plugin.ts rename to packages/base-href-webpack/src/base-href-webpack-plugin.ts diff --git a/packages/base-href-webpack/src/index.ts b/packages/base-href-webpack/src/index.ts new file mode 100644 index 000000000000..3140fa868c4e --- /dev/null +++ b/packages/base-href-webpack/src/index.ts @@ -0,0 +1,2 @@ + +export * from './base-href-webpack-plugin'; diff --git a/packages/base-href-webpack/tsconfig.json b/packages/base-href-webpack/tsconfig.json new file mode 100644 index 000000000000..a607ecd030db --- /dev/null +++ b/packages/base-href-webpack/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "declaration": true, + "experimentalDecorators": true, + "mapRoot": "", + "module": "commonjs", + "moduleResolution": "node", + "noEmitOnError": true, + "noImplicitAny": true, + "outDir": "../../dist/base-href-webpack", + "rootDir": ".", + "sourceMap": true, + "sourceRoot": "/", + "target": "es5", + "lib": ["es6"], + "typeRoots": [ + "../../node_modules/@types" + ], + "types": [ + "jasmine", + "node" + ] + } +} diff --git a/scripts/run-packages-spec.js b/scripts/run-packages-spec.js index 07f18f5140cb..8e798a7402ce 100644 --- a/scripts/run-packages-spec.js +++ b/scripts/run-packages-spec.js @@ -11,9 +11,7 @@ const projectBaseDir = path.join(__dirname, '../packages'); // Create a Jasmine runner and configure it. const jasmine = new Jasmine({ projectBaseDir: projectBaseDir }); -jasmine.loadConfig({ - spec_dir: projectBaseDir -}); +jasmine.loadConfig({}); jasmine.addReporter(new JasmineSpecReporter()); // Run the tests. diff --git a/tests/acceptance/base-href-webpack-plugin.spec.js b/tests/acceptance/base-href-webpack-plugin.spec.js deleted file mode 100644 index 58bf73442e25..000000000000 --- a/tests/acceptance/base-href-webpack-plugin.spec.js +++ /dev/null @@ -1,50 +0,0 @@ -/*eslint-disable no-console */ -'use strict'; - -var expect = require('chai').expect; -var BaseHrefWebpackPlugin = require('../../addon/ng2/utilities/base-href-webpack-plugin').BaseHrefWebpackPlugin; - -function mockCompiler(indexHtml, callback) { - return { - plugin: function (event, compilerCallback) { - var compilation = { - plugin: function (hook, compilationCallback) { - var htmlPluginData = { - html: indexHtml - }; - compilationCallback(htmlPluginData, callback); - } - }; - compilerCallback(compilation); - } - }; -} - -describe('base href webpack plugin', function () { - it('should do nothing when baseHref is null', function () { - var plugin = new BaseHrefWebpackPlugin({ baseHref: null }); - - var compiler = mockCompiler('', function (x, htmlPluginData) { - expect(htmlPluginData.html).to.equal(''); - }); - plugin.apply(compiler); - }); - - it('should insert base tag when not exist', function () { - var plugin = new BaseHrefWebpackPlugin({ baseHref: '/' }); - - var compiler = mockCompiler('', function (x, htmlPluginData) { - expect(htmlPluginData.html).to.equal(''); - }); - plugin.apply(compiler); - }); - - it('should replace href attribute when base tag already exists', function () { - var plugin = new BaseHrefWebpackPlugin({ baseHref: '/myUrl/' }); - - var compiler = mockCompiler('', function (x, htmlPluginData) { - expect(htmlPluginData.html).to.equal(''); - }); - plugin.apply(compiler); - }); -}); From 25e7ac66606a88de0a8b81315b5e29fed8b085da Mon Sep 17 00:00:00 2001 From: Hans Larsen Date: Tue, 30 Aug 2016 17:51:24 -0700 Subject: [PATCH 2/2] Fix typescript to 2.0.0 so the tests will pass. --- addon/ng2/blueprints/ng2/files/package.json | 2 +- package.json | 2 +- packages/ast-tools/package.json | 2 +- packages/base-href-webpack/package.json | 6 ++---- tsconfig.json | 1 + 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/addon/ng2/blueprints/ng2/files/package.json b/addon/ng2/blueprints/ng2/files/package.json index 169e02a48055..bddfdd9563d3 100644 --- a/addon/ng2/blueprints/ng2/files/package.json +++ b/addon/ng2/blueprints/ng2/files/package.json @@ -45,6 +45,6 @@ "protractor": "4.0.3", "ts-node": "1.2.1", "tslint": "3.13.0", - "typescript": "^2.0.0" + "typescript": "2.0.0" } } diff --git a/package.json b/package.json index 67a56cc62e00..f95f508de2ac 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "ts-loader": "^0.8.2", "tslint-loader": "^2.1.4", "typedoc": "^0.4.2", - "typescript": "^2.0.0", + "typescript": "2.0.0", "url-loader": "^0.5.7", "webpack": "2.1.0-beta.21", "webpack-dev-server": "2.1.0-beta.0", diff --git a/packages/ast-tools/package.json b/packages/ast-tools/package.json index c5c3e930e6ab..90591e58782c 100644 --- a/packages/ast-tools/package.json +++ b/packages/ast-tools/package.json @@ -22,6 +22,6 @@ "dependencies": { "rxjs": "^5.0.0-beta.11", "denodeify": "^1.2.1", - "typescript": "^2.0.0" + "typescript": "2.0.0" } } diff --git a/packages/base-href-webpack/package.json b/packages/base-href-webpack/package.json index 05a005a8bd53..43f31ab33f5e 100644 --- a/packages/base-href-webpack/package.json +++ b/packages/base-href-webpack/package.json @@ -6,7 +6,8 @@ "keywords": [ "angular", "cli", - "ast", + "webpack", + "plugin", "tool" ], "repository": { @@ -20,8 +21,5 @@ }, "homepage": "https://github.com/angular/angular-cli", "dependencies": { - "rxjs": "^5.0.0-beta.11", - "denodeify": "^1.2.1", - "typescript": "^2.0.0" } } diff --git a/tsconfig.json b/tsconfig.json index 7d2ae56c1324..6b1b9c40b8dd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -22,6 +22,7 @@ ], "paths": { "@angular-cli/ast-tools": [ "./packages/ast-tools/src" ], + "@angular-cli/base-href-webpack": [ "./packages/base-href-webpack/src" ], "@angular-cli/webpack": [ "./packages/webpack/src" ] } },