var HtmlWebpackPlugin = require('html-webpack-plugin');
var WriteFileWebpackPlugin = require('write-file-webpack-plugin');
var autoPrefixer = require('autoprefixer');
var path = require('path');
var webpack = require('webpack');
var outDir = path.resolve(__dirname, 'dist');
module.exports = {
devServer: {
contentBase: outDir,
outputPath: outDir,
port: 4000,
historyApiFallback: true
},
devtool: 'cheap-module-source-map',
// Externals copied to /dist via CopyWebpackPlugin
externals:
{
'angular': true,
// Wrapped in window because of hyphens
'angular-ui-router': 'window["angular-ui-router"]',
'angular-translate': 'window["angular-translate"]'
},
module: {
preLoaders: [
{
test: /\.ts$/,
loader: 'tslint'
}
],
loaders: [
{
test: /\.ts$/,
loader: 'ts',
exclude: /node_modules/
},
{
test: /index\.html$/,
loader: 'html',
exclude: /node_modules/
},
{
test: /\.html$/,
loader: 'ngtemplate?relativeTo=' + (path.resolve(__dirname, './src')) + '/!html',
exclude: /index\.html$/
},
{
test: /\.scss$/,
loaders: [ 'style', 'css', 'sass', 'postcss' ]
},
{
test: /\.json/,
loaders: [ 'json' ]
},
{
test: /\.(png|jpg|jpeg|gif|svg)$/,
loaders: [ 'url?limit=25000' ]
}
]
},
// [name] is replaced by entry point name
output: {
filename: '[name].js',
path: outDir
},
plugins: [
new HtmlWebpackPlugin({
template: 'index.html',
inject: 'body'
}),
// Because we copy the output to another directory, we need file system watch support.
// Webpack-dev-server does not do this without the plugin.
new WriteFileWebpackPlugin()
],
postcss: function() {
return [
autoPrefixer({
browsers: ['last 2 versions']
})
];
},
resolve: {
extensions: [ '', '.ts', '.js', '.json' ],
modulesDirectories: ['./src', './vendor', 'node_modules']
}
};