-
Notifications
You must be signed in to change notification settings - Fork 123
/
webpack.config.js
134 lines (128 loc) · 3.81 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
var version = require('./package.json').version;
var webpack = require('webpack');
var nodeExternals = require('webpack-node-externals');
// var Visualizer = require('webpack-visualizer-plugin');
// Custom webpack loaders are generally the same for all webpack bundles, hence
// stored in a separate local variable.
var rules = [
{
test: /\.(png|jpg|gif|svg|eot|ttf|woff|woff2)$/,
use: 'url-loader'
},
{
test: /\.glsl/,
use: 'raw-loader'
}
];
var mode = 'production';
var plugins = [];
plugins.push(new webpack.optimize.AggressiveMergingPlugin());
// plugins.push(new Visualizer({
// filename: './webpack-statistics.html'
// }));
module.exports = [
{// Notebook extension
//
// This bundle only contains the part of the JavaScript that is run on
// load of the notebook. This section generally only performs
// some configuration for requirejs, and provides the legacy
// "load_ipython_extension" function which is required for any notebook
// extension.
//
entry: './src/extension.js',
output: {
filename: 'extension.js',
path: __dirname + '/../k3d/static',
libraryTarget: 'amd'
},
module: {
rules: rules
},
mode: mode,
plugins: plugins
},
{// Bundle for the notebook containing the custom widget views and models
//
// This bundle contains the implementation for the custom widget views and
// custom widget.
// It must be an amd module
//
entry: './src/index.js',
output: {
filename: 'index.js',
path: __dirname + '/../k3d/static',
libraryTarget: 'amd'
},
mode: mode,
plugins: plugins,
devtool: 'source-map',
module: {
rules: rules
},
externals: ['@jupyter-widgets/base']
},
{// Embeddable K3D-jupyter bundle
//
// This bundle is generally almost identical to the notebook bundle
// containing the custom widget views and models.
//
// The only difference is in the configuration of the webpack public path
// for the static assets.
//
// It will be automatically distributed by unpkg to work with the static
// widget embedder.
//
// The target bundle is always `dist/index.js`, which is the path required
// by the custom widget embedder.
//
entry: './src/embed.js',
output: {
filename: 'index.js',
path: __dirname + '/dist/',
libraryTarget: 'amd',
publicPath: 'https://unpkg.com/k3d@' + version + '/dist/'
},
mode: mode,
devtool: 'source-map',
module: {
rules: rules
},
plugins: plugins,
externals: ['@jupyter-widgets/base']
},
{
entry: './src/standalone.js',
output: {
filename: 'standalone.js',
path: __dirname + '/../k3d/static',
library: "k3d",
libraryTarget: 'amd',
publicPath: 'https://unpkg.com/k3d@' + version + '/dist/'
},
mode: mode,
devtool: 'source-map',
module: {
rules: rules
},
plugins: plugins
},
{ // Lab extension is just our JS source + shaders
entry: './src/labplugin.js',
output: {
filename: 'labplugin.js',
path: __dirname + '/dist/',
libraryTarget: 'amd'
},
mode: mode,
devtool: 'source-map',
module: {
rules: [
{
test: /\.glsl/,
use: 'raw-loader'
}
]
},
externals: [nodeExternals()]
}
];