-
Notifications
You must be signed in to change notification settings - Fork 1
/
webpack.config.js
97 lines (82 loc) · 2.39 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
93
94
95
96
97
var fs = require('fs');
var fileExists = fs.existsSync;
var mkdirp = require('mkdirp');
var path = require('path');
var Webpack = require('webpack');
var React = require('react');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var CODE = __dirname;
var IGNORE = ['shared'];
var galleries = process.env.NODE_ENV === 'galleries';
var index = galleries ? 'index_2' : 'index';
var buildPath = path.resolve(__dirname, 'build');
var appPath = path.resolve(__dirname, 'src');
makeIndex('app');
var sassLoaders = [
"css-loader",
"autoprefixer-loader?browsers=last 2 version",
"sass-loader?indentedSyntax=sass&includePaths[]=" + path.resolve(CODE, "./src"),
];
module.exports = {
context: __dirname,
devtool: 'eval-source-map',
entry: [
'webpack-dev-server/client?http://localhost:3000',
'webpack/hot/dev-server',
path.resolve(appPath, 'index.js')],
output: {
path: buildPath,
filename: 'app.js',
publicPath: '/build/'
},
resolve: {
extensions: [ '', '.js', '.sass' ],
modulesDirectories: ['src', 'node_modules']
},
module: {
loaders: [
{ test: /\.js$/, loaders: ['babel-loader'], exclude: /node_modules/ },
{
test: /\.sass$/,
loader: ExtractTextPlugin.extract("style-loader", sassLoaders.join("!")),
},
{ test: require.resolve('jquery'), loader: "expose?jQuery" },
{test: /\.png/, loader: 'url?limit=100000&mimeetype=image/png' }
]
},
plugins: [
new ExtractTextPlugin("app.css"),
new Webpack.HotModuleReplacementPlugin()
]
};
function makeIndex(dir) {
var index = './build/index.html'
if(galleries){
fs.writeFileSync(index, makeGalleries('app'));
} else {
fs.writeFileSync(index, makeMarkup('app'));
}
}
function makeMarkup(mainFile) {
return React.renderToStaticMarkup((
React.DOM.html({},
React.DOM.link({ rel: 'stylesheet', href: './' + mainFile + '.css' }),
React.DOM.body({},
React.DOM.div({ id: 'app' }),
React.DOM.script({ src: './' + mainFile + '.js' })
)
)
));
}
function makeGalleries(mainFile) {
return React.renderToStaticMarkup((
React.DOM.html({},
React.DOM.link({ rel: 'stylesheet', href: './' + mainFile + '.css' }),
React.DOM.body({},
React.DOM.div({ id: 'gallery1' }),
React.DOM.div({ id: 'gallery2' }),
React.DOM.script({ src: './' + mainFile + '.js' })
)
)
));
}