-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
92 lines (89 loc) · 3.05 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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
var webpack = require('webpack');
var path = require('path');
var envFile = require('node-env-file');
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
try {
envFile(path.join(__dirname, 'config/' + process.env.NODE_ENV + '.env'));
} catch (e) {
}
module.exports = {
entry: [
//load scripts before App.jsx, make use of the script-loader through 'script!'
'script!jquery/dist/jquery.min.js',
'script!foundation-sites/dist/foundation.min.js',
'./src/App.jsx'
],
externals: {
//make jquery available globally through the var 'jQuery'
jquery: 'jQuery'
},
plugins: [
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV),
API_KEY: JSON.stringify(process.env.API_KEY),
AUTH_DOMAIN: JSON.stringify(process.env.AUTH_DOMAIN),
DATABASE_URL: JSON.stringify(process.env.DATABASE_URL),
STORAGE_BUCKET: JSON.stringify(process.env.STORAGE_BUCKET),
GITHUB_ACCESS_TOKEN: JSON.stringify(process.env.GITHUB_ACCESS_TOKEN)
}
}),
//allows the usage of jquery module through '$' and 'jQuery' without importing the module
new webpack.ProvidePlugin({
//tell webpack to watch for '$' and 'jQuery' and replace those with jquery module
'$': 'jquery',
'jQuery': 'jquery'
}),
//new webpack.optimize.UglifyJsPlugin({
// compressor:{
// warnings: false
// }
//})
],
output: {
path: __dirname,
filename: './public/bundle.js'
},
resolve: {
root: __dirname,
alias: {
//Place aliases here
//Example:
//NameModule: 'path of own module to include'
//NOTE: DO NOT USE ./
firebaseConfig: 'src/firebase/index.js',
applicationStyles: 'src/styles/app.scss',
routes: 'src/routes/routes.jsx',
App: 'src/App.jsx',
actions: 'src/actions/actions.jsx',
reducers: 'src/reducers/reducers.jsx',
configureStore: 'src/store/configureStore.jsx'
},
//import modules without specifying aliases (must include node_modules)
modulesDirectories: ['node_modules', './src/components', './src/api'],
extensions:['', '.js', '.jsx']
},
module: {
loaders: [
{
loader: 'babel-loader',
query: {
presets: ['react', 'es2015', 'stage-0']
},
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/
}
],
devServer: {
historyApiFallback: true,
contentBase: './public/',
progress: true
}
},
sassLoader: {
includePaths: [
path.resolve(__dirname, './node_modules/foundation-sites/scss')
]
},
devtool: process.env.NODE_ENV === 'production' ? undefined : 'source-map'
};