forked from jordwest/news-feed-eradicator
/
webpack.config.js
76 lines (71 loc) · 1.79 KB
/
webpack.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
var webpack = require( 'webpack' );
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var browser = 'chrome';
var env = process.env.NODE_ENV || 'dev';
if(process.env.BROWSER) {
browser = process.env.BROWSER;
console.log('Building', browser, 'extension');
}else{
console.log('Defaulting to', browser, 'build. To specify browser, '+
'use the BROWSER env var, eg', 'BROWSER=firefox');
}
var eradicateJS = '[name].js';
var eradicateCSS = 'eradicate.css';
var reactExternal = false;
// Firefox expects included scripts to be under the 'data' directory
if(browser === 'firefox') {
eradicateJS = 'data/' + eradicateJS;
eradicateCSS = 'data/' + eradicateCSS;
reactExternal = 'React';
}
module.exports = {
context: __dirname + '/src',
entry: {
eradicate: './eradicate',
intercept: './intercept',
},
resolve: {
alias: {
'browser-specific': __dirname + '/browsers/' + browser + '.js'
},
extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.ts', '.tsx']
},
output: {
path: __dirname + '/build/' + browser,
filename: eradicateJS
},
externals: [
{
'sdk/simple-storage': 'require( "sdk/simple-storage" )',
'react': reactExternal
}
],
module: {
loaders: [
{
test: /\.css$/,
loader: ExtractTextPlugin.extract("style-loader", "css-loader")
},
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
presets: [ 'react', 'es2015' ],
}
},
{
test: /\.tsx?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel-loader!ts-loader',
}
]
},
// Use the plugin to specify the resulting filename (and add needed behavior to the compiler)
plugins: [
new ExtractTextPlugin(eradicateCSS),
new webpack.DefinePlugin({
'process.env': { NODE_ENV: JSON.stringify( env ) }
})
]
};