/webpack.dev.js Secret
Last active
December 19, 2016 08:26
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const helpers = require('./helpers'); | |
const webpackMerge = require('webpack-merge'); // used to merge webpack configs | |
const commonConfig = require('./webpack.common.js'); // the settings that are common to prod and dev | |
/** | |
* Webpack Plugins | |
*/ | |
const DefinePlugin = require('webpack/lib/DefinePlugin'); | |
const NamedModulesPlugin = require('webpack/lib/NamedModulesPlugin'); | |
const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin'); | |
/** | |
* Webpack Constants | |
*/ | |
const ENV = process.env.ENV = process.env.NODE_ENV = 'development'; | |
const HOST = process.env.HOST || 'localhost'; | |
const PORT = process.env.PORT || 3000; | |
const HMR = helpers.hasProcessFlag('hot'); | |
const METADATA = webpackMerge(commonConfig({env: ENV}).metadata, { | |
host: HOST, | |
port: PORT, | |
ENV: ENV, | |
HMR: HMR | |
}); | |
/** | |
* Webpack configuration | |
* | |
* See: http://webpack.github.io/docs/configuration.html#cli | |
*/ | |
module.exports = function(options) { | |
return webpackMerge(commonConfig({env: ENV}), { | |
/** | |
* Merged metadata from webpack.common.js for index.html | |
* | |
* See: (custom attribute) | |
*/ | |
//metadata: METADATA, | |
/** | |
* Developer tool to enhance debugging | |
* | |
* See: http://webpack.github.io/docs/configuration.html#devtool | |
* See: https://github.com/webpack/docs/wiki/build-performance#sourcemaps | |
*/ | |
//devtool: 'cheap-module-source-map', | |
/** | |
* Options affecting the output of the compilation. | |
* | |
* See: http://webpack.github.io/docs/configuration.html#output | |
*/ | |
output: { | |
/** | |
* The output directory as absolute path (required). | |
* | |
* See: http://webpack.github.io/docs/configuration.html#output-path | |
*/ | |
path: helpers.root('dist'), | |
/** | |
* Specifies the name of each output file on disk. | |
* IMPORTANT: You must not specify an absolute path here! | |
* | |
* See: http://webpack.github.io/docs/configuration.html#output-filename | |
*/ | |
filename: '[name].bundle.js', | |
/** | |
* The filename of the SourceMaps for the JavaScript files. | |
* They are inside the output.path directory. | |
* | |
* See: http://webpack.github.io/docs/configuration.html#output-sourcemapfilename | |
*/ | |
sourceMapFilename: '[name].map', | |
/** The filename of non-entry chunks as relative path | |
* inside the output.path directory. | |
* | |
* See: http://webpack.github.io/docs/configuration.html#output-chunkfilename | |
*/ | |
chunkFilename: '[id].chunk.js', | |
library: 'ac_[name]', | |
libraryTarget: 'var', | |
}, | |
plugins: [ | |
/** | |
* Plugin: DefinePlugin | |
* Description: Define free variables. | |
* Useful for having development builds with debug logging or adding global constants. | |
* | |
* Environment helpers | |
* | |
* See: https://webpack.github.io/docs/list-of-plugins.html#defineplugin | |
*/ | |
// NOTE: when adding more properties, make sure you include them in custom-typings.d.ts | |
new DefinePlugin({ | |
'ENV': JSON.stringify(METADATA.ENV), | |
'HMR': METADATA.HMR, | |
'process.env': { | |
'ENV': JSON.stringify(METADATA.ENV), | |
'NODE_ENV': JSON.stringify(METADATA.ENV), | |
'HMR': METADATA.HMR, | |
} | |
}), | |
/** | |
* Plugin: NamedModulesPlugin (experimental) | |
* Description: Uses file names as module name. | |
* | |
* See: https://github.com/webpack/webpack/commit/a04ffb928365b19feb75087c63f13cadfc08e1eb | |
*/ | |
new NamedModulesPlugin(), | |
/** | |
* Plugin LoaderOptionsPlugin (experimental) | |
* | |
* See: https://gist.github.com/sokra/27b24881210b56bbaff7 | |
*/ | |
new LoaderOptionsPlugin({ | |
minimize: true, | |
debug: false, | |
options: { | |
/** | |
* Html loader advanced options | |
* | |
* See: https://github.com/webpack/html-loader#advanced-options | |
*/ | |
// TODO: Need to workaround Angular 2's html syntax => #id [bind] (event) *ngFor | |
htmlLoader: { | |
minimize: true, | |
removeAttributeQuotes: false, | |
caseSensitive: true, | |
customAttrSurround: [ | |
[/#/, /(?:)/], | |
[/\*/, /(?:)/], | |
[/\[?\(?/, /(?:)/] | |
], | |
customAttrAssign: [/\)?\]?=/] | |
}, | |
} | |
}) | |
], | |
/** | |
* Webpack Development Server configuration | |
* Description: The webpack-dev-server is a little node.js Express server. | |
* The server emits information about the compilation state to the client, | |
* which reacts to those events. | |
* | |
* See: https://webpack.github.io/docs/webpack-dev-server.html | |
*/ | |
devServer: { | |
port: METADATA.port, | |
host: METADATA.host, | |
historyApiFallback: true, | |
watchOptions: { | |
aggregateTimeout: 300, | |
poll: 1000 | |
} | |
//outputPath: helpers.root('dist') | |
}, | |
/* | |
* Include polyfills or mocks for various node stuff | |
* Description: Node configuration | |
* | |
* See: https://webpack.github.io/docs/configuration.html#node | |
*/ | |
node: { | |
global: true, | |
crypto: 'empty', | |
process: true, | |
module: false, | |
clearImmediate: false, | |
setImmediate: false | |
} | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment