forked from djaodjin/djaoapp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.common.js
79 lines (76 loc) · 2.73 KB
/
webpack.common.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
// these modules are resolved in node_modules relative to the directory
// in which this file is located
const fs = require('fs');
const BundleTracker = require('webpack-bundle-tracker');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
var djaodjin = JSON.parse(fs.readFileSync('djaodjin-webpack.json').toString())
console.log(djaodjin)
module.exports = {
entry: {
// these modules are resolved based on the values provided
// in `resolve` setting
css_base: 'base.scss',
css_email: 'email.scss',
css_dashboard: 'dashboard.scss',
css_pages: 'pages.scss',
js_base: 'base.js',
js_saas: 'saas.js',
js_auth: 'auth.js',
'js_vendor-vue': 'vendor-vue.js',
js_dashboard: 'dashboard.js',
js_pages: 'pages.js',
'js_djaodjin-vue': 'djaodjin_vue.js',
'js_theme-editors': 'theme_editors.js',
'js_edit-tools': 'edit_tools.js',
},
output: {
filename: (chunkData) => {
// css files are intermediate files at this point so webpack
// requires a temporary name different from the final output.
var ext = chunkData.chunk.name.indexOf('js_') >= 0 ? '.js' : '-[id]' + chunkData.chunk.contentHash.javascript + '.css.js';
var assetname = chunkData.chunk.name.replace('js_', '').replace('css_', '') + ext;
return assetname;
},
path: djaodjin.assets_cache_path,
},
module: {
rules: [
// handle images via webpack
{
test: /\.(png|svg|jpg|gif)$/,
loader: 'file-loader',
},
// handle fonts via webpack
{
test: /\.(woff|woff2|eot|ttf|otf)$/,
loader: 'file-loader',
}
]
},
plugins: [
// used by Django to look up a bundle file
new BundleTracker({
path: djaodjin.webpack_loader_stats_path,
filename: djaodjin.webpack_loader_stats_filename
}),
// removes artifacts from previous builds
new CleanWebpackPlugin({
// clean everything except i18n code -- needed if we develop in
// watch mode
cleanOnceBeforeBuildPatterns: ['**/*', '!djaoapp-i18n.js']
}),
],
// used in resolution of modules inside all js and css files,
// also in webpack entry points declared in the beginning of this config
resolve: {
alias: {
// using full build of Vue (runtime + compiler)
vue$: 'vue/dist/vue.esm.js',
},
modules: djaodjin.djaodjin_modules,
},
// needed for webpack modules resolution
resolveLoader: {
modules: djaodjin.node_modules,
},
};