Skip to content

Commit b39ffe2

Browse files
authored
Merge pull request #94 from ASIDataScience/update-build-chain
Update build chain for dash 0.32.1
2 parents c8d82a3 + 11a318a commit b39ffe2

File tree

8 files changed

+39
-36
lines changed

8 files changed

+39
-36
lines changed

.travis.yml

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ cache:
33
directories:
44
- "node_modules"
55
install:
6+
- "if [[ \"$GROUP\" == js ]] ; then pip install dash ; fi"
67
- "if [[ \"$GROUP\" == js ]] ; then npm -v ; fi"
78
- "if [[ \"$GROUP\" == js ]] ; then npm install ; fi"
89
- "if [[ \"$GROUP\" == python-linting ]] ; then pip install black flake8 isort ; fi"

MANIFEST.in

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
include dash_bootstrap_components/bundle.js
2-
include dash_bootstrap_components/metadata.json
1+
include dash_bootstrap_components/_components/dash_bootstrap_components.min.js
2+
include dash_bootstrap_components/_components/metadata.json

dash_bootstrap_components/__init__.py

+10-16
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,29 @@
11
import os
2-
import sys
3-
4-
import dash
52

63
from . import themes # noqa
74
from ._version import __version__ # noqa
5+
from . import _components
86

97
_current_path = os.path.dirname(os.path.abspath(__file__))
108

11-
METADATA_PATH = os.path.join(_current_path, "metadata.json")
12-
13-
# Dash automatic class creation from `metadata.json` file.
9+
METADATA_PATH = os.path.join(_current_path, "_components", "metadata.json")
1410

1511
_js_dist = [
1612
{
17-
"relative_package_path": "bundle.js",
13+
"relative_package_path": (
14+
"_components/dash_bootstrap_components.min.js"
15+
),
1816
"namespace": "dash_bootstrap_components",
1917
}
2018
]
2119

2220
_css_dist = []
2321

2422

25-
def _setup_js_components(module, path_to_metadata):
26-
components = dash.development.component_loader.load_components(
27-
path_to_metadata, "dash_bootstrap_components"
28-
)
29-
for component in components:
30-
setattr(module, component.__name__, component)
31-
component._js_dist = _js_dist
32-
component._css_dist = _css_dist
23+
for _component_name in _components.__all__:
24+
_component = getattr(_components, _component_name)
25+
_component._js_dist = _js_dist
26+
_component._css_dist = _css_dist
3327

3428

35-
_setup_js_components(sys.modules[__name__], METADATA_PATH)
29+
from ._components import * # noqa

demo/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
<div id="react-demo-entry-point"></div>
1515
</body>
1616

17-
<script type="text/javascript" src="/lib/bundle.js"></script>
17+
<script type="text/javascript" src="/demo-lib/bundle.js"></script>
1818

1919
</html>

package.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22
"name": "dash-bootstrap-components",
33
"version": "0.2.3",
44
"description": "Bootstrap components for Plotly Dash",
5-
"main": "lib/index.js",
5+
"main": "demo-lib/index.js",
66
"scripts": {
7-
"build-dist": "npm run clean-lib && npm run extract-metadata && webpack --config=webpack.config.dist.js",
8-
"clean-lib": "mkdirp lib && rimraf lib/*",
9-
"copy-lib": "copyfiles -u 1 lib/* dash_bootstrap_components",
10-
"demo": "webpack-dev-server --hot --inline --port=8888 --content-base=demo --config=webpack.config.demo.js",
11-
"extract-metadata": "mkdirp lib && react-docgen --pretty -o lib/metadata.json src/components && node -e \"const fs = require('fs'); const path = require('path'); const m = JSON.parse(fs.readFileSync('./lib/metadata.json')); const r = {}; Object.keys(m).forEach(k => r[k.split(path.sep).join('/')] = m[k]); fs.writeFileSync('./lib/metadata.json', JSON.stringify(r, '\t', 2));\"",
7+
"build-dist": "npm run clean:py && npm run build:py && webpack --config=webpack.config.dist.js",
8+
"clean:py": "mkdirp dash_bootstrap_components/_components && rimraf dash_bootstrap_components/_components",
9+
"demo": "webpack-dev-server --hot --inline --port=8888 --config=webpack.config.demo.js",
10+
"build:py": "mkdirp dash_bootstrap_components/_components && dash-generate-components ./src/components dash_bootstrap_components/_components && move-cli dash_bootstrap_components/_components/_imports_.py dash_bootstrap_components/_components/__init__.py",
1211
"format": "prettier src/**/*.js --write",
1312
"lint": "prettier src/**/*.js --list-different",
14-
"prepublish": "NODE_ENV=production npm run build-dist && npm run copy-lib",
13+
"prepublish": "NODE_ENV=production npm run build-dist",
1514
"test": "jest",
1615
"test:demo": "webpack --content-base=demo --config=webpack.config.demo.js",
1716
"test:watch": "jest --watch"
@@ -32,6 +31,7 @@
3231
"jest": "^23.6.0",
3332
"jest-environment-jsdom-global": "^1.1.0",
3433
"jsdom": "^12.0.0",
34+
"move-cli": "^1.2.0",
3535
"prettier": "^1.14.3",
3636
"react-docgen": "^2.21.0",
3737
"style-loader": "^0.23.1",

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ def _get_long_description():
3232
author_email="[email protected]",
3333
url="https://github.com/ASIDataScience/dash-bootstrap-components",
3434
packages=find_packages(),
35-
install_requires=["dash"],
35+
install_requires=["dash>=0.32.1"],
3636
include_package_data=True,
3737
)

webpack.config.demo.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ var NODE_ENV = process.env.NODE_ENV || 'development';
1111
var environment = JSON.stringify(NODE_ENV);
1212

1313
var LIBRARY_NAME = 'dash_bootstrap_components';
14-
var BUILD_PATH = path.join(ROOT, 'lib');
14+
var BUILD_PATH = path.join(ROOT, 'demo-lib');
1515

1616
var publicHost = process.env.DEMO_PUBLIC_HOST || undefined;
1717

@@ -62,13 +62,14 @@ module.exports = {
6262
},
6363
devServer: {
6464
public: publicHost,
65+
contentBase: 'demo'
6566
},
6667
output: {
6768
library: LIBRARY_NAME,
6869
libraryTarget: 'this', // Could be 'umd'
6970
path: BUILD_PATH,
7071
pathinfo: true,
71-
publicPath: '/lib/', // For loading from webpack dev server
72+
publicPath: '/demo-lib/', // For loading from webpack dev server
7273
filename: '[name].js'
7374
}
7475
};

webpack.config.dist.js

+14-7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var NODE_ENV = process.env.NODE_ENV || 'development';
1313
var environment = JSON.stringify(NODE_ENV);
1414

1515
var LIBRARY_NAME = 'dash_bootstrap_components';
16-
var BUILD_PATH = path.join(ROOT, 'lib');
16+
var BUILD_PATH = path.join(ROOT, LIBRARY_NAME, '_components');
1717

1818
/* eslint-disable no-console */
1919
console.log('Current environment: ' + environment);
@@ -25,7 +25,7 @@ module.exports = {
2525
mode: NODE_ENV,
2626
externals: {
2727
react: 'React',
28-
'react-dom': 'ReactDOM'
28+
'react-dom': 'ReactDOM',
2929
},
3030
module: {
3131
noParse: /node_modules\/json-schema\/lib\/validate\.js/, // used to get `request` to work: https://github.com/request/request/issues/1920#issuecomment-171246043
@@ -49,7 +49,14 @@ module.exports = {
4949
},
5050
{
5151
test: /\.css$/,
52-
use: [{loader: 'style-loader'}, {loader: 'css-loader'}]
52+
use: [
53+
{
54+
loader: 'style-loader'
55+
},
56+
{
57+
loader: 'css-loader'
58+
}
59+
]
5360
}
5461
]
5562
},
@@ -58,12 +65,12 @@ module.exports = {
5865
minimize: true
5966
},
6067
entry: {
61-
bundle: ['./index.js']
68+
main: './index.js'
6269
},
6370
output: {
64-
library: LIBRARY_NAME,
65-
libraryTarget: 'this', // Could be 'umd'
71+
library: LIBRARY_NAME + '/_components',
72+
libraryTarget: 'window',
6673
path: BUILD_PATH,
67-
filename: '[name].js'
74+
filename: LIBRARY_NAME + '.min.js'
6875
}
6976
};

0 commit comments

Comments
 (0)