-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.config.js
75 lines (70 loc) · 1.91 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
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const extractHTML = new ExtractTextPlugin('[name].html');
const stringify = require('webpack-stringify-loaders');
const customLoader = require('custom-loader');
const riot = require('riot-compiler');
const utils = require('loader-utils');
customLoader.loaders.riot = function(source) {
const query = utils.parseQuery(this.query);
return riot.compile(source, query.options || {});
};
customLoader.loaders.dummy = function(source) {
"version,context,request,query,data,cacheable,loaders,loaderIndex,resource,resourcePath,resourceQuery,value,inputValue,options,debug,minimize,sourceMap,target,webpack".split(",").forEach((name) => {
console.log(name, this[name]);
});
"ext,name,path,folder".split(",").forEach((name) => {
var value = utils.interpolateName(this, `[${name}]`, {context: this.options.context});
console.log(name, value);
});
return source;
};
module.exports = {
entry: {
index: './src/js/index.js',
},
output: {
path: __dirname + '/publish',
filename: './js/[name].js',
},
module: {
loaders: [{
test: /\.tag\.pug$/,
exclude: /node_modules/,
loader: stringify([{
loader: 'babel',
query:{
presets: ['es2015']
},
}, {
loader: 'custom',
query: {
name: 'riot',
},
}, {
loader: 'pug-html',
query: {
pretty: true,
exports: false,
plugins: ['pug-plugin-no-yield'],
},
}]),
}, {
test: /\.html\.pug$/,
exclude: /node_modules/,
loader: extractHTML.extract(stringify([{
loader: 'pug-html',
query: {
pretty: true,
plugins: ['pug-plugin-no-yield'],
},
}])),
}]
},
plugins: [
extractHTML,
new webpack.ProvidePlugin({
riot: 'riot'
}),
],
}