| 
 | 1 | +import * as webpack from 'webpack';  | 
 | 2 | +import {ngAppResolve} from './webpack-build-utils';  | 
 | 3 | + | 
 | 4 | +const path = require('path');  | 
 | 5 | +const ForkCheckerPlugin = require('awesome-typescript-loader').ForkCheckerPlugin;  | 
 | 6 | +const CopyWebpackPlugin = require('copy-webpack-plugin');  | 
 | 7 | +const HtmlWebpackPlugin = require('html-webpack-plugin');  | 
 | 8 | + | 
 | 9 | +export const webpackCommonConfig = {  | 
 | 10 | +  resolve: {  | 
 | 11 | +    extensions: ['', '.ts', '.js'],  | 
 | 12 | +    root: ngAppResolve('./src')  | 
 | 13 | +  },  | 
 | 14 | +  context: path.resolve(__dirname, './'),  | 
 | 15 | +  entry: {  | 
 | 16 | +    main: [ngAppResolve('./src/main.ts')],  | 
 | 17 | +    vendor: ngAppResolve('./src/vendor.ts'),  | 
 | 18 | +    polyfills: ngAppResolve('./src/polyfills.ts')  | 
 | 19 | +  },  | 
 | 20 | +  output: {  | 
 | 21 | +    path: ngAppResolve('./dist'),  | 
 | 22 | +    filename: '[name].bundle.js'  | 
 | 23 | +  },  | 
 | 24 | +  module: {  | 
 | 25 | +    preLoaders: [  | 
 | 26 | +      {  | 
 | 27 | +        test: /\.js$/,  | 
 | 28 | +        loader: 'source-map-loader',  | 
 | 29 | +        exclude: [  | 
 | 30 | +          ngAppResolve('node_modules/rxjs'),  | 
 | 31 | +          ngAppResolve('node_modules/@angular'),  | 
 | 32 | +        ]  | 
 | 33 | +      }  | 
 | 34 | +    ],  | 
 | 35 | +    loaders: [  | 
 | 36 | +      {  | 
 | 37 | +        test: /\.ts$/,  | 
 | 38 | +        loaders: [  | 
 | 39 | +          {  | 
 | 40 | +            loader: 'awesome-typescript-loader',  | 
 | 41 | +            query: {  | 
 | 42 | +              useWebpackText: true,  | 
 | 43 | +              tsconfig: ngAppResolve('./src/tsconfig.json'),  | 
 | 44 | +              resolveGlobs: false,  | 
 | 45 | +              module: "es2015",  | 
 | 46 | +              target: "es5",  | 
 | 47 | +              library: 'es6',  | 
 | 48 | +              useForkChecker: true  | 
 | 49 | +            }  | 
 | 50 | +          },  | 
 | 51 | +          {  | 
 | 52 | +            loader: 'angular2-template-loader'  | 
 | 53 | +          }  | 
 | 54 | +        ],  | 
 | 55 | +        exclude: [/\.(spec|e2e)\.ts$/]  | 
 | 56 | +      },  | 
 | 57 | +      { test: /\.json$/, loader: 'json-loader'},  | 
 | 58 | +      { test: /\.css$/,  loaders: ['raw-loader', 'postcss-loader'] },  | 
 | 59 | +      { test: /\.styl$/, loaders: ['raw-loader', 'postcss-loader', 'stylus-loader'] },  | 
 | 60 | +      { test: /\.less$/, loaders: ['raw-loader', 'postcss-loader', 'less-loader'] },  | 
 | 61 | +      { test: /\.scss$/, loaders: ['raw-loader', 'postcss-loader', 'sass-loader'] },  | 
 | 62 | +      { test: /\.(jpg|png)$/, loader: 'url-loader?limit=128000'},  | 
 | 63 | +      { test: /\.html$/, loader: 'raw-loader' }  | 
 | 64 | +    ]  | 
 | 65 | +  },  | 
 | 66 | +  plugins: [  | 
 | 67 | +    new ForkCheckerPlugin(),  | 
 | 68 | +    new HtmlWebpackPlugin({  | 
 | 69 | +      template: ngAppResolve('src/index.html'),  | 
 | 70 | +      chunksSortMode: 'dependency'  | 
 | 71 | +    }),  | 
 | 72 | +    new webpack.optimize.CommonsChunkPlugin({  | 
 | 73 | +      name: ['polyfills', 'vendor'].reverse()  | 
 | 74 | +    }),  | 
 | 75 | +    new webpack.optimize.CommonsChunkPlugin({  | 
 | 76 | +      minChunks: Infinity,  | 
 | 77 | +      name: 'inline',  | 
 | 78 | +      filename: 'inline.js',  | 
 | 79 | +      sourceMapFilename: 'inline.map'  | 
 | 80 | +    }),  | 
 | 81 | +    new CopyWebpackPlugin([{from: ngAppResolve('./public'), to: ngAppResolve('./dist/public')}])  | 
 | 82 | +  ],  | 
 | 83 | +  node: {  | 
 | 84 | +    global: 'window',  | 
 | 85 | +    crypto: 'empty',  | 
 | 86 | +    module: false,  | 
 | 87 | +    clearImmediate: false,  | 
 | 88 | +    setImmediate: false  | 
 | 89 | +  }  | 
 | 90 | +};  | 
0 commit comments