Skip to content
Snippets Groups Projects
webpack.aot.js 2.22 KiB
Newer Older
Xiao Gui's avatar
Xiao Gui committed
const common = require('./webpack.common.js')
const path = require('path')
const ngtools = require('@ngtools/webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const AngularCompilerPlugin = ngtools.AngularCompilerPlugin
const ClosureCompilerPlugin = require('webpack-closure-compiler')
const merge = require('webpack-merge')
const staticAssets = require('./webpack.staticassets')
const TerserPlugin = require('terser-webpack-plugin')
const webpack = require('webpack')
Xiao Gui's avatar
Xiao Gui committed

Xiao Gui's avatar
Xiao Gui committed
module.exports = merge(staticAssets, {
  mode: 'production',
Xiao Gui's avatar
Xiao Gui committed
    main : './src/main-aot.ts'
Xiao Gui's avatar
Xiao Gui committed
  output : {
Xiao Gui's avatar
Xiao Gui committed
    path : path.resolve(__dirname,'dist/aot')
  },
  module: {
    rules: [
      {
Xiao Gui's avatar
Xiao Gui committed
        test : /third_party.*?\.js$|worker\.js/,
Xiao Gui's avatar
Xiao Gui committed
        use : {
          loader : 'file-loader',
          options: {
            name : '[name].[ext]'
          }
        }
      },
      {
        test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/,
        loader: '@ngtools/webpack',
        exclude : /third_party|plugin_example|spec\.ts$/
Xiao Gui's avatar
Xiao Gui committed
      },
      {
        test : /\.(html|css)$/,
        exclude : /export\_nehuba|index|res\/css|plugin_example|material\/prebuilt-themes/,
Xiao Gui's avatar
Xiao Gui committed
        use : {
          loader : 'raw-loader',
        }
      },
      {
        test : /res\/css.*?css$/,
        use : {
          loader : 'file-loader',
          options : {
            name : '[name].[ext]'
          }
        }
Xiao Gui's avatar
Xiao Gui committed
      }
    ]
  },
  plugins : [
    new HtmlWebpackPlugin({
      template : 'src/index.html'
    }),
    new AngularCompilerPlugin({
      tsConfigPath: 'tsconfig-aot.json',
      entryModule: 'src/main.module#MainModule',
      directTemplateLoading: true
    }),
    new webpack.DefinePlugin({
      // TODO have to figure out how to set this properly
      // needed to avoid inline eval
      // shouldn't mode: 'production' do that already?
      ngDevMode: false,
      ngJitMode: false
Xiao Gui's avatar
Xiao Gui committed
    })
  ],
  optimization: {
    minimizer: [
      new TerserPlugin({
        extractComments: false
      })
Xiao Gui's avatar
Xiao Gui committed
  resolve : {
    extensions : [
      '.ts',
      '.js',
      '.json'
Xiao Gui's avatar
Xiao Gui committed
      "third_party" : path.resolve(__dirname,'third_party'),
      "src" : path.resolve(__dirname,'src')
Xiao Gui's avatar
Xiao Gui committed
  }