Skip to content

Commit f368f96

Browse files
committed
Merge pull request #312 from SylvainCorlay/webpack
Use webpack instead of browserify
2 parents 5d27b00 + e484a22 commit f368f96

35 files changed

+152
-200
lines changed

examples/development/node/README.md

Lines changed: 0 additions & 19 deletions
This file was deleted.

examples/development/node/index.js

Lines changed: 0 additions & 18 deletions
This file was deleted.

examples/development/node/package.json

Lines changed: 0 additions & 16 deletions
This file was deleted.

examples/development/web/package.json

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,19 @@
44
"description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.",
55
"main": "index.js",
66
"scripts": {
7-
"prepublish": "browserify -g node-lessify index.js --outfile index.built.js --debug",
7+
"prepublish": "webpack index.js index.built.js",
88
"test": "echo \"Error: no test specified\" && exit 1"
99
},
1010
"author": "IPython",
1111
"license": "BSD-3-Clause",
1212
"dependencies": {
13-
"browserify": "^11.2.0",
14-
"jupyter-js-widgets": "file:../../../ipywidgets",
15-
"node-lessify": "^0.1.1"
13+
"jupyter-js-widgets": "file:../../../ipywidgets"
1614
},
1715
"devDependencies": {
18-
"bower": "^1.7.0"
16+
"bower": "^1.7.0",
17+
"css-loader": "^0.23.1",
18+
"file-loader": "^0.8.5",
19+
"style-loader": "^0.13.0",
20+
"webpack": "^1.12.10"
1921
}
2022
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module.exports = {
2+
module: {
3+
loaders: [
4+
{ test: /\.css$/, loader: "style-loader!css-loader" },
5+
// jquery-ui loads some images
6+
{ test: /\.(jpg|png|gif)$/, loader: "file" },
7+
]
8+
},
9+
externals: {
10+
"base/js/namespace": "base/js/namespace",
11+
"notebook/js/outputarea": "notebook/js/outputarea",
12+
"services/kernels/comm": "services/kernels/comm"
13+
}
14+
}

examples/development/web2/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var CodeMirror = require("codemirror");
22
require("./node_modules/codemirror/lib/codemirror.css");
3+
require("./node_modules/jupyter-js-widgets/static/widgets/css/widgets.min.css");
34
require("./node_modules/codemirror/mode/python/python");
45

56
var WidgetManager = require("./manager").WidgetManager;

examples/development/web2/package.json

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,25 @@
44
"description": "Project that tests the ability to npm install jupyter-js-widgets within an npm project.",
55
"main": "index.js",
66
"scripts": {
7-
"prepublish": "browserify -g node-lessify index.js --outfile index.built.js --debug",
7+
"prepublish": "webpack index.js index.built.js",
88
"test": "echo \"Error: no test specified\" && exit 1"
99
},
1010
"author": "IPython",
1111
"license": "BSD-3-Clause",
1212
"dependencies": {
13-
"browserify": "^11.2.0",
1413
"codemirror": "^5.9.0",
1514
"font-awesome": "^4.5.0",
16-
"jupyter-js-widgets": "file:../../../ipywidgets",
1715
"jquery": "^2.1.4",
1816
"jquery-ui": "^1.10.5",
19-
"node-lessify": "^0.1.1"
17+
"jupyter-js-widgets": "file:../../../ipywidgets"
2018
},
2119
"devDependencies": {
22-
"bower": "^1.7.0"
20+
"bower": "^1.7.0",
21+
"css-loader": "^0.23.1",
22+
"file-loader": "^0.8.5",
23+
"json-loader": "^0.5.4",
24+
"style-loader": "^0.13.0",
25+
"url-loader": "^0.5.7",
26+
"webpack": "^1.12.10"
2327
}
2428
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module.exports = {
2+
module: {
3+
loaders: [
4+
{ test: /\.css$/, loader: "style-loader!css-loader" },
5+
{ test: /\.json$/, loader: "json-loader" },
6+
// jquery-ui loads some images
7+
{ test: /\.(jpg|png|gif)$/, loader: "file" },
8+
// required to load font-awesome
9+
{ test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff" },
10+
{ test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff" },
11+
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/octet-stream" },
12+
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" },
13+
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=image/svg+xml" }
14+
]
15+
},
16+
externals: {
17+
"base/js/namespace": "base/js/namespace",
18+
"notebook/js/outputarea": "notebook/js/outputarea",
19+
"services/kernels/comm": "services/kernels/comm"
20+
}
21+
}

examples/development/web3/package.json

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,28 @@
77
"prepublish": "npm run build",
88
"build": "npm run build:es5 && npm run build:bundle",
99
"build:es5": "babel src --out-dir es5 --presets es2015",
10-
"build:bundle": "browserify -g node-lessify ./es5/index.js --outfile ./index.built.js --debug",
10+
"build:bundle": "webpack ./es5/index.js index.built.js",
1111
"test": "echo \"Error: no test specified\" && exit 1"
1212
},
1313
"author": "IPython",
1414
"license": "BSD-3-Clause",
1515
"dependencies": {
16-
"browserify": "^11.2.0",
1716
"codemirror": "^5.9.0",
1817
"font-awesome": "^4.5.0",
19-
"jupyter-js-widgets": "file:../../../ipywidgets",
2018
"jquery": "^2.1.4",
2119
"jquery-ui": "^1.10.5",
22-
"jupyter-js-services": "^0.2.2",
23-
"node-lessify": "^0.1.1"
20+
"jupyter-js-widgets": "file:../../../ipywidgets",
21+
"jupyter-js-services": "^0.2.2"
2422
},
2523
"devDependencies": {
2624
"babel-cli": "^6.3.15",
2725
"babel-preset-es2015": "^6.3.13",
28-
"bower": "^1.7.0"
26+
"bower": "^1.7.0",
27+
"css-loader": "^0.23.1",
28+
"file-loader": "^0.8.5",
29+
"json-loader": "^0.5.4",
30+
"style-loader": "^0.13.0",
31+
"url-loader": "^0.5.7",
32+
"webpack": "^1.12.10"
2933
}
3034
}

examples/development/web3/src/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var CodeMirror = require("codemirror");
22
require("../node_modules/codemirror/lib/codemirror.css");
3+
require("../node_modules/jupyter-js-widgets/static/widgets/css/widgets.min.css");
34
require("../node_modules/codemirror/mode/python/python");
45

56
var WidgetManager = require("./manager").WidgetManager;
@@ -21,7 +22,7 @@ document.addEventListener("DOMContentLoaded", function(event) {
2122
name: kernelSpecs.default,
2223
});
2324
}).then(kernel => {
24-
25+
2526
// Create a codemirror instance
2627
var code = require("../widget_code.json").join("\n");
2728
var inputarea = document.getElementsByClassName("inputarea")[0];
@@ -37,7 +38,7 @@ document.addEventListener("DOMContentLoaded", function(event) {
3738
// Create the widget area and widget manager
3839
var widgetarea = document.getElementsByClassName("widgetarea")[0];
3940
var manager = new WidgetManager(kernel, widgetarea);
40-
41+
4142
// Run backend code to create the widgets. You could also create the
4243
// widgets in the frontend, like the other /web/ examples demonstrate.
4344
kernel.execute({ code: code });
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module.exports = {
2+
module: {
3+
loaders: [
4+
{ test: /\.css$/, loader: "style-loader!css-loader" },
5+
{ test: /\.json$/, loader: "json-loader" },
6+
// jquery-ui loads some images
7+
{ test: /\.(jpg|png|gif)$/, loader: "file" },
8+
// required to load font-awesome
9+
{ test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff" },
10+
{ test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff" },
11+
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/octet-stream" },
12+
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" },
13+
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=image/svg+xml" }
14+
]
15+
},
16+
externals: {
17+
"base/js/namespace": "base/js/namespace",
18+
"notebook/js/outputarea": "notebook/js/outputarea",
19+
"services/kernels/comm": "services/kernels/comm"
20+
}
21+
}

ipywidgets/karma.conf.js

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@ module.exports = function(config) {
1010

1111
// frameworks to use
1212
// available frameworks: https://npmjs.org/browse/keyword/karma-adapter
13-
frameworks: ['browserify', 'mocha', 'chai'],
13+
frameworks: ['mocha', 'chai', 'sinon-chai'],
1414

1515

1616
// list of files / patterns to load in the browser
1717
files: [
18-
'test/**/*.js'
18+
'test/**/*_test.js'
1919
],
2020

2121

@@ -27,15 +27,30 @@ module.exports = function(config) {
2727
// preprocess matching files before serving them to the browser
2828
// available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
2929
preprocessors: {
30-
'test/**/*.js': [ 'browserify' ]
30+
'test/**/*.js': [ 'webpack' ]
3131
},
3232

33-
browserify: {
34-
debug: true,
35-
transform: [
36-
['babelify', {presets: ['es2015']}],
37-
'node-lessify'
38-
]
33+
webpack: {
34+
module: {
35+
loaders: [
36+
{ test: /\.jsx?$/, exclude: /node_modules/, loader: "babel?presets[]=es2015" },
37+
{ test: /\.css$/, loader: "style-loader!css-loader" },
38+
{ test: /\.json$/, loader: "json-loader" },
39+
// jquery-ui loads some images
40+
{ test: /\.(jpg|png|gif)$/, loader: "file" },
41+
// required to load font-awesome
42+
{ test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff" },
43+
{ test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/font-woff" },
44+
{ test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=application/octet-stream" },
45+
{ test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: "file" },
46+
{ test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: "url?limit=10000&minetype=image/svg+xml" }
47+
]
48+
},
49+
externals: {
50+
"base/js/namespace": "base/js/namespace",
51+
"notebook/js/outputarea": "notebook/js/outputarea",
52+
"services/kernels/comm": "services/kernels/comm"
53+
},
3954
},
4055

4156
// test results reporter to use
@@ -80,10 +95,10 @@ module.exports = function(config) {
8095
// how many browser should be started simultanous
8196
concurrency: Infinity
8297
};
83-
98+
8499
if (process.env.TRAVIS) {
85100
cfg.browsers = ['Chrome_travis_ci'];
86101
}
87-
102+
88103
config.set(cfg);
89104
};

ipywidgets/package.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,28 @@
2525
"postversion": "node copy_version.js --dev && git add _version.py && git commit -m \"Back to dev\""
2626
},
2727
"devDependencies": {
28+
"babel-core": "^6.4.0",
29+
"babel-loader": "^6.2.1",
2830
"babel-preset-es2015": "^6.3.13",
29-
"babelify": "^7.2.0",
3031
"bower": "^1.5.3",
3132
"chai": "^3.4.1",
3233
"clean-css": "^3.4.6",
3334
"karma": "^0.13.15",
34-
"karma-browserify": "^4.4.2",
3535
"karma-chai": "^0.1.0",
3636
"karma-chrome-launcher": "^0.2.2",
3737
"karma-firefox-launcher": "^0.1.7",
3838
"karma-mocha": "^0.2.1",
3939
"karma-mocha-reporter": "^1.1.3",
40+
"karma-sinon-chai": "^1.1.0",
41+
"karma-webpack": "^1.7.0",
4042
"less": "^2.5.3",
4143
"mocha": "^2.3.4",
42-
"node-lessify": "^0.1.1",
4344
"rimraf": "^2.4.1",
4445
"sinon": "^1.17.2",
45-
"spawn-sync": "^1.0.14"
46+
"spawn-sync": "^1.0.14",
47+
"webpack": "^1.12.11"
4648
},
4749
"dependencies": {
48-
"amdefine": "^1.0.0",
4950
"backbone": "1.2.0",
5051
"bootstrap": "^3.3.5",
5152
"jquery": "^2.1.4",

ipywidgets/static/notebook/js/extension.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,18 @@ define([
6565
}
6666
});
6767
}
68-
68+
69+
function load_css () {
70+
// FIXME: this should be done with require-css
71+
var css = document.createElement("link");
72+
css.setAttribute("rel", "stylesheet");
73+
css.setAttribute("type", "text/css");
74+
css.setAttribute("href", IPython.notebook.base_url + "nbextensions/widgets/widgets/css/widgets.min.css");
75+
document.getElementsByTagName("head")[0].appendChild(css);
76+
}
77+
6978
function load_ipython_extension () {
79+
load_css();
7080
register_events();
7181
console.log("loaded widgets");
7282
}

ipywidgets/static/widgets/js/layout.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
// Copyright (c) Jupyter Development Team.
22
// Distributed under the terms of the Modified BSD License.
33

4-
// npm compatibility
5-
if (typeof define !== 'function') { var define = require('./requirejs-shim')(module); }
6-
7-
// Use the CommonJS-like requirejs style.
84
define([
95
"./widget",
106
"underscore",

ipywidgets/static/widgets/js/manager-base.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@
44
// jupyter-js-widgets version
55
var version = '4.1.0dev';
66

7-
// npm compatibility
8-
if (typeof define !== 'function') { var define = require('./requirejs-shim')(module); }
9-
107
define([
118
"underscore",
129
"backbone",

ipywidgets/static/widgets/js/register.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
// Copyright (c) Jupyter Development Team.
22
// Distributed under the terms of the Modified BSD License.
33

4-
// npm compatibility
5-
if (typeof define !== 'function') { var define = require('./requirejs-shim')(module); }
6-
74
define([
85
"./manager-base",
96
"./widget"

0 commit comments

Comments
 (0)