Skip to content

Commit 3d1ac3c

Browse files
author
Philip Weiss
committed
add css generating script and package.json hook
1 parent 0e64fc4 commit 3d1ac3c

13 files changed

+70
-108
lines changed

.storybook/config.js

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import { configure } from '@kadira/storybook';
22
import ThemedStyleSheet from 'react-with-styles/lib/ThemedStyleSheet';
33
import aphroditeInterface from 'react-with-styles-interface-aphrodite';
4-
54
import DefaultTheme from '../src/themes/DefaultTheme';
65

7-
import '../css/slider.css';
8-
import '../css/slider-horizontal.css';
9-
import '../css/slider-vertical.css';
6+
/* Register react with styles interface */
7+
ThemedStyleSheet.registerTheme(DefaultTheme);
8+
ThemedStyleSheet.registerInterface(aphroditeInterface);
109

1110
/* Register react with styles interface */
1211
ThemedStyleSheet.registerTheme(DefaultTheme);

css/slider-horizontal.css

-34
This file was deleted.

css/slider-vertical.css

-35
This file was deleted.

css/slider.css

-32
This file was deleted.

css/styles.css

Whitespace-only changes.

package.json

+8-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
"main": "lib/Slider",
66
"jsnext:main": "src/Slider.jsx",
77
"scripts": {
8+
"prebuild": "npm run clean",
89
"build": "npm run clean && babel src -d lib",
10+
"postbuild": "npm run build:css",
11+
"prebuild:css": "rimraf lib/css && mkdir -p lib/css",
12+
"build:css": "node scripts/buildCSS.js",
913
"clean": "rimraf lib",
1014
"prepublish": "npm run build",
1115
"lint": "eslint --ext .js,.jsx src test stories",
@@ -54,6 +58,7 @@
5458
"react-addons-pure-render-mixin": "^15.6.2",
5559
"react-dom": "^15.6.2",
5660
"react-with-styles-interface-aphrodite": "^5.0.0",
61+
"react-with-styles-interface-css-compiler": "^1.1.2",
5762
"rimraf": "^2.6.2",
5863
"sinon": "^5.0.7",
5964
"style-loader": "^0.17.0"
@@ -63,9 +68,11 @@
6368
},
6469
"dependencies": {
6570
"airbnb-prop-types": "^2.10.0",
71+
"clean-css": "^4.1.11",
6672
"object.assign": "^4.1.0",
6773
"prop-types": "^15.6.2",
68-
"react-with-styles": "^3.2.0"
74+
"react-with-styles": "^3.2.0",
75+
"react-with-styles-interface-css": "^4.0.2",
6976
},
7077
"jest": {
7178
"testMatch": [

scripts/.eslintrc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"rules": {
3+
"import/no-extraneous-dependencies": [2, {
4+
"devDependencies": true
5+
}],
6+
}
7+
}

scripts/buildCSS.js

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#!/usr/bin/env node
2+
3+
const fs = require('fs');
4+
const CleanCSS = require('clean-css');
5+
const compileCSS = require('react-with-styles-interface-css-compiler');
6+
const registerMaxSpecificity = require('react-with-styles-interface-css/dist/utils/registerMaxSpecificity').default;
7+
const registerCSSInterfaceWithDefaultTheme = require('./utils/registerCSSInterfaceWithDefaultTheme').default;
8+
9+
const args = process.argv.slice(2);
10+
const optimizeForProduction = args.includes('-o') || args.includes('--optimize');
11+
12+
registerMaxSpecificity(0);
13+
registerCSSInterfaceWithDefaultTheme();
14+
15+
const format = new CleanCSS({
16+
level: optimizeForProduction ? 2 : 0,
17+
format: 'beautify',
18+
inline: ['none'],
19+
});
20+
const CSS = compileCSS('./scripts/renderAllComponents.jsx');
21+
const formattedCSS = format.minify(CSS).styles;
22+
23+
const outputFilePath = optimizeForProduction ? './lib/css/_slider.css' : './css/styles.css';
24+
fs.writeFileSync(outputFilePath, formattedCSS, 'utf8');

scripts/renderAllComponents.jsx

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import React from 'react';
2+
import ReactDOM from 'react-dom';
3+
4+
import LabeledSlider from '../stories/ExampleSlider';
5+
6+
ReactDOM.render(<LabeledSlider />, document.querySelector('#root'));

scripts/utils/.eslintrc

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"rules": {
3+
"import/no-extraneous-dependencies": [2, {
4+
"devDependencies": true
5+
}],
6+
}
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import CSSInterface from 'react-with-styles-interface-css';
2+
3+
import registerInterfaceWithDefaultTheme from './registerInterfaceWithDefaultTheme';
4+
5+
export default function registerCSSInterfaceWithDefaultTheme() {
6+
registerInterfaceWithDefaultTheme(CSSInterface);
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import ThemedStyleSheet from 'react-with-styles/lib/ThemedStyleSheet';
2+
import DefaultTheme from '../../lib/themes/DefaultTheme';
3+
4+
export default function registerInterfaceWithDefaultTheme(reactWithStylesInterface) {
5+
ThemedStyleSheet.registerInterface(reactWithStylesInterface);
6+
ThemedStyleSheet.registerTheme(DefaultTheme);
7+
}

stories/ExampleSlider.jsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ import PropTypes from 'prop-types';
55
import Rheostat from '../src/Slider';
66
import log10 from '../src/algorithms/log10';
77

8-
9-
class LabeledSlider extends React.Component {
8+
export default class LabeledSlider extends React.Component {
109
constructor(props) {
1110
super(props);
1211

0 commit comments

Comments
 (0)