-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathwebpack.config.js
70 lines (60 loc) · 1.65 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
"use strict";
var path = require("path");
var webpack = require("webpack");
var HtmlWebpackPlugin = require("html-webpack-plugin");
var DEBUG = process.env.NODE_ENV !== "production";
function q(loaders, query) {
return loaders + "?" + JSON.stringify(query);
}
function st(filename) {
return path.join("static", filename);
}
function getNameBySuffix(suffix, stats) {
return stats.assets.filter(function(asset) {
return asset.name.slice(-suffix.length) === suffix;
})[0].name;
}
var commonPlugins = [
new HtmlWebpackPlugin({
template: path.join("src", "index.html"),
bySuffix: getNameBySuffix,
DEBUG: DEBUG,
}),
];
module.exports = {
entry: {
vendor: "./src/vendor",
bitchan: "./src/bitchan",
},
output: {
path: path.join(__dirname, "dist"),
filename: st(DEBUG ? "[name].js" : "[chunkhash:15].[name].js"),
},
module: {
loaders: [
// All JS sources except vendor.
// TODO(Kagami): Move React and babel runtime code to vendor.
{
test: new RegExp("^" + path.join(__dirname, "src", "(?!vendor).+\\.js$")),
loaders: ["babel"],
},
// Vendor SCSS.
{
test: /\.scss$/,
loaders: [
q("file", {
name: st(DEBUG ? "[name].css" : "[hash:15].[name].css"),
}),
q("sass", {
outputStyle: DEBUG ? "expanded" : "compressed",
includePaths: ["bower_components/foundation/scss"],
}),
],
},
],
},
plugins: DEBUG ? commonPlugins : commonPlugins.concat([
new webpack.optimize.UglifyJsPlugin({compress: {warnings: false}}),
new webpack.optimize.OccurenceOrderPlugin(),
]),
};