Skip to content

Commit a9d12ed

Browse files
committed
Enabled support for both material2 e2e testing but also demo-app and e2e app.
1 parent d166b65 commit a9d12ed

File tree

6 files changed

+120
-14
lines changed

6 files changed

+120
-14
lines changed

addon/ng2/commands/serve.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ module.exports = Command.extend({
4545
{ name: 'live-reload-base-url', type: String, aliases: ['lrbu'], description: 'Defaults to baseURL' },
4646
{ name: 'live-reload-port', type: Number, aliases: ['lrp'], description: '(Defaults to port number within [49152...65535])' },
4747
{ name: 'live-reload-live-css', type: Boolean, default: true, description: 'Whether to live reload CSS (default true)' },
48-
{ name: 'environment', type: String, default: 'development', aliases: ['e', { 'dev': 'development' }, { 'prod': 'production' }] },
48+
{ name: 'environment', type: String, default: 'development', aliases: ['e', { 'dev': 'development' }, { 'mat': 'material'}, { 'prod': 'production' }] },
4949
{ name: 'output-path', type: 'Path', default: 'dist/', aliases: ['op', 'out'] },
5050
{ name: 'ssl', type: Boolean, default: false },
5151
{ name: 'ssl-key', type: String, default: 'ssl/server.key' },

addon/ng2/models/webpack-build-development.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { webpackCommonConfig } from '../models';
2-
import { webpackMaterialConfig } from './webpack-build-material2';
2+
import { webpackMaterialConfig, webpackMaterialE2EConfig } from './webpack-build-material2';
33
import { ngAppResolve } from './webpack-build-utils';
44

55
const webpackMerge = require('webpack-merge');
@@ -31,4 +31,5 @@ const devConfigPartial = {
3131
export const webpackDevConfig = webpackMerge(webpackCommonConfig, devConfigPartial);
3232

3333
export const webpackDevMaterialConfig = webpackMerge(webpackMaterialConfig, devConfigPartial);
34-
});
34+
35+
export const webpackDevMaterialE2EConfig = webpackMerge(webpackMaterialE2EConfig, devConfigPartial);

addon/ng2/models/webpack-build-material2.ts

+89
Original file line numberDiff line numberDiff line change
@@ -131,3 +131,92 @@ export const webpackMaterialConfig = {
131131
setImmediate: false
132132
}
133133
};
134+
135+
export const webpackMaterialE2EConfig = {
136+
devtool: 'inline-source-map',
137+
resolve: {
138+
extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js', '.css', '.scss'],
139+
root: ngAppResolve('./'),
140+
alias: aliasMap
141+
},
142+
sassLoader: {
143+
includePaths: [
144+
// This allows for automatic resolving of @import's for sass for variables.
145+
ngAppResolve('./src/core/style')
146+
]
147+
},
148+
debug: true,
149+
context: path.resolve(__dirname, './'),
150+
entry: {
151+
main: [ngAppResolve('./src/e2e-app/main.ts')],
152+
vendor: ngAppResolve('./src/e2e-app/vendor.ts')
153+
},
154+
output: {
155+
path: './dist',
156+
filename: '[name].bundle.js'
157+
},
158+
module: {
159+
preLoaders: [
160+
{
161+
test: /\.js$/,
162+
loader: 'source-map-loader',
163+
exclude: [
164+
ngAppResolve('node_modules/rxjs'),
165+
ngAppResolve('node_modules/@angular'),
166+
]
167+
}
168+
],
169+
ts: {
170+
configFileName: ngAppResolve('./src/e2e-app/tsconfig.json')
171+
},
172+
loaders: [
173+
{
174+
test: /\.ts$/,
175+
loaders: [
176+
'ts-loader', 'angular2-template-loader'
177+
],
178+
exclude: [/\.(spec|e2e)\.ts$/]
179+
},
180+
{ test: /\.json$/, loader: 'json-loader'},
181+
{ test: /\.css$/, loaders: ['raw-loader', 'postcss-loader'] },
182+
{ test: /\.styl$/, loaders: ['raw-loader', 'postcss-loader', 'stylus-loader'] },
183+
{ test: /\.less$/, loaders: ['raw-loader', 'postcss-loader', 'less-loader'] },
184+
{ test: /\.s?css$/, loaders: ['raw-loader', 'postcss-loader', 'sass-loader'] },
185+
{ test: /\.(jpg|png)$/, loader: 'url-loader?limit=128000'},
186+
{ test: /\.html$/, loader: 'raw-loader' }
187+
]
188+
},
189+
plugins: [
190+
// new DebugWebpackPlugin({
191+
// // Defaults to ['webpack:*'] which can be VERY noisy, so try to be specific
192+
// // scope: [
193+
// // 'webpack:compiler:*', // include compiler logs
194+
// // 'webpack:plugin:ExamplePlugin' // include a specific plugin's logs
195+
// // ],
196+
197+
// // // Inspect the arguments passed to an event
198+
// // // These are triggered on emits
199+
// // listeners: {
200+
// // 'webpack:compiler:run': function(compiler) {
201+
// // // Read some data out of the compiler
202+
// // }
203+
// // },
204+
// // Defaults to the compiler's setting
205+
// debug: true
206+
// }),
207+
new webpack.optimize.CommonsChunkPlugin({name: 'vendor'}),
208+
new ForkCheckerPlugin(),
209+
new HtmlWebpackPlugin({
210+
template: ngAppResolve('./src/e2e-app/index.html'),
211+
chunksSortMode: 'dependency'
212+
}),
213+
],
214+
node: {
215+
global: 'window',
216+
crypto: 'empty',
217+
module: false,
218+
clearImmediate: false,
219+
setImmediate: false
220+
}
221+
};
222+

addon/ng2/models/webpack-build-production.ts

+13-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as webpack from 'webpack';
22
import {webpackCommonConfig} from '../models/';
3-
import { webpackMaterialConfig } from './webpack-build-material2';
3+
import {webpackMaterialConfig, webpackMaterialE2EConfig} from './webpack-build-material2';
44
import {ngAppResolve} from '../models/webpack-build-utils';
55

66
const webpackMerge = require('webpack-merge'); // used to merge webpack configs
@@ -11,10 +11,7 @@ const CompressionPlugin = require("compression-webpack-plugin");
1111

1212

1313

14-
15-
export const webpackProdMaterialConfig = webpackMerge(webpackCommonConfig, webpackMaterialConfig);
16-
17-
export const webpackProdConfig = webpackMerge(webpackCommonConfig, {
14+
export const webpackProdConfigPartial = {
1815
debug: false,
1916
devtool: 'source-map',
2017
output: {
@@ -49,7 +46,7 @@ export const webpackProdConfig = webpackMerge(webpackCommonConfig, {
4946
tslint: {
5047
emitErrors: true,
5148
failOnHint: true,
52-
resourcePath: ngAppResolve('./src/demo-app')
49+
resourcePath: ngAppResolve('./src')
5350
},
5451
htmlLoader: {
5552
minimize: true,
@@ -70,4 +67,13 @@ export const webpackProdConfig = webpackMerge(webpackCommonConfig, {
7067
clearImmediate: false,
7168
setImmediate: false
7269
}
73-
});
70+
};
71+
72+
73+
export const webpackProdConfig = webpackMerge(webpackCommonConfig, webpackProdConfigPartial);
74+
75+
// @angular-material custom builds demo-app and e2e
76+
export const webpackProdMaterialConfig = webpackMerge(webpackMaterialConfig, webpackProdConfigPartial);
77+
export const webpackProdMaterialE2EConfig = webpackMerge(webpackMaterialE2EConfig, webpackProdConfigPartial);
78+
79+

addon/ng2/models/webpack-build-vendors.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ export const webpackVendorDLLConfig = {
99
vendor: [ngAppResolve('./src/vendor.ts')]
1010
},
1111
output: {
12-
path: path.join(__dirname, "dist", "dll"),
12+
path: path.resolve(__dirname, '../models/webpack-dll/')
1313
filename: "dll.[name].js",
1414
library: "[name]"
1515
},

addon/ng2/tasks/serve-webpack.ts

+13-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {webpackCommonConfig, webpackOutputOptions, webpackDevMaterialConfig, webpackProdMaterialConfig} from '../models/';
1+
import {webpackCommonConfig, webpackOutputOptions, webpackDevMaterialConfig, webpackProdMaterialConfig, webpackDevMaterialE2EConfig, webpackDevConfig} from '../models/';
22
import {ServeTaskOptions} from '../commands/serve';
33

44
const path = require('path');
@@ -16,10 +16,20 @@ let lastHash = null;
1616

1717
module.exports = Task.extend({
1818
run: (commandOptions: ServeTaskOptions) => {
19+
let webpackCompiler: any;
20+
if (commandOptions.environment === 'material') {
21+
webpackDevMaterialConfig.entry.main.unshift(`webpack-dev-server/client?http://localhost:${commandOptions.port}/`);
22+
webpackCompiler = webpack(webpackDevMaterialConfig);
1923

20-
webpackProdMaterialConfig.entry.main.unshift(`webpack-dev-server/client?http://localhost:${commandOptions.port}/`);
24+
} else if (commandOptions.environment === 'e2e') {
25+
webpackDevMaterialE2EConfig.entry.main.unshift(`webpack-dev-server/client?http://localhost:${commandOptions.port}/`);
26+
webpackCompiler = webpack(webpackDevMaterialE2EConfig);
2127

22-
const webpackCompiler = webpack(webpackProdMaterialConfig);
28+
} else {
29+
webpackDevConfig.entry.main.unshift(`webpack-dev-server/client?http://localhost:${commandOptions.port}/`);
30+
webpackCompiler = webpack(webpackDevConfig);
31+
32+
}
2333

2434
webpackCompiler.apply(new ProgressPlugin({
2535
profile: true,

0 commit comments

Comments
 (0)