diff --git a/.babelrc b/.babelrc index 5cb1fedf2..77c8defb7 100644 --- a/.babelrc +++ b/.babelrc @@ -1,13 +1,3 @@ { - "presets": ["es2015", "react"], - "env": { - "development": { - "presets": ["es2015-webpack", "react"], - "plugins": [ - ["transform-es2015-modules-commonjs-simple", { - "noMangle": true - }] - ] - } - } + "extends": "./node_modules/dash-components-archetype/config/babel/babelrc" } diff --git a/.builderrc b/.builderrc new file mode 100644 index 000000000..8cf7af30d --- /dev/null +++ b/.builderrc @@ -0,0 +1,3 @@ +--- +archetypes: + - dash-components-archetype diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 000000000..0c305818b --- /dev/null +++ b/.eslintrc @@ -0,0 +1,2 @@ +--- + extends: ./node_modules/dash-components-archetype/config/eslint/eslintrc-react.json diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 40e8faec7..000000000 --- a/.eslintrc.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "env": { - "node": false, - "browser": true, - "es6": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "ecmaVersion": 6, - "sourceType": "module", - "ecmaFeatures": { - "jsx": true - } - }, - "plugins": [ - "import", - "react" - ], - "rules": { - "react/jsx-uses-vars": 2, - "react/jsx-uses-react": 2, - "react/react-in-jsx-scope": 2, - "import/imports-first": 2, - "import/no-unresolved": 2, - "import/named": 2, - "import/default": 2, - "import/namespace": 2, - "import/export": 2, - "import/no-named-as-default": 2, - "import/no-named-as-default-member": 2, - "import/no-deprecated": 2, - "import/no-extraneous-dependencies": 2, - "import/no-mutable-exports": 2, - "import/no-commonjs": 2, - "import/no-amd": 2, - "import/no-nodejs-modules": 2, - "import/imports-first": 2, - "import/no-duplicates": 2, - "import/no-namespace": 2, - "import/extensions": 2, - "import/order": 2, - "import/newline-after-import": 2, - "import/prefer-default-export": 2 - }, - "settings": { - "react": { - "version": "15.0" - } - } -} diff --git a/circle.yml b/circle.yml new file mode 100644 index 000000000..e69de29bb diff --git a/config/.eslintrc.json b/config/.eslintrc.json deleted file mode 100644 index 3edd18b0d..000000000 --- a/config/.eslintrc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - // This is a little crazy - referencing `./` makes eslint look in the - // `node_modules` directory. This is a workaround for now: - "extends": "../config/eslint/eslintrc-node.json" -} diff --git a/config/eslint/eslintrc-node.json b/config/eslint/eslintrc-node.json deleted file mode 100644 index 7df4d7f59..000000000 --- a/config/eslint/eslintrc-node.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "env": { - "node": true - }, - "extends": "eslint:recommended", - "plugins": [ - "import" - ], - "rules": { - "import/no-commonjs": 0, - "import/no-nodejs-modules": 0 - } -} diff --git a/config/webpack/webpack.config.dev.js b/config/webpack/webpack.config.dev.js deleted file mode 100644 index acf718b3d..000000000 --- a/config/webpack/webpack.config.dev.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; - -var compose = require('ramda').compose; - -var babel = require('../../config/partials/babel'); -var defineEnv = require('../../config/partials/defineEnv'); -var entryDev = require('../../config/partials/entryDev') -var outputDev = require('../../config/partials/outputDev'); -var sourceMapDev = require('../../config/partials/sourceMapDev'); -var baseConfig = require('./webpack.config'); - -module.exports = compose( - babel, - defineEnv, - entryDev, - outputDev, - sourceMapDev -)(baseConfig); diff --git a/config/webpack/webpack.config.js b/config/webpack/webpack.config.js deleted file mode 100644 index b72ec98fa..000000000 --- a/config/webpack/webpack.config.js +++ /dev/null @@ -1,17 +0,0 @@ -'use strict'; - -var path = require('path'); - -var ROOT = process.cwd(); -var SRC = path.join(ROOT, 'src'); - -module.exports = { - cache: false, - // Resolution path for `entry`. - context: SRC, - resolve: { - // Need `''` so referencing modules by `name.js` works. - extensions: ['', '.js', '.jsx'], - modulesDirectories: ['node_modules'] - } -}; diff --git a/package.json b/package.json index d42819542..9d7c7e14c 100644 --- a/package.json +++ b/package.json @@ -6,41 +6,22 @@ "type": "git", "url": "git://github.com/plotly/dash-components-core.git" }, - "main": "lib/basic/index.js", + "main": "lib/index.js", "scripts": { - "clean-lib": "mkdir -p lib && rm -rf lib/*", - "transpile-dev": "npm run clean-lib && npm run extract-metadata && babel --source-root ./src/ -d lib/ src/", - "transpile-dev-watch": "npm run clean-lib && npm run extract-metadata && babel --watch --source-root ./src/ -d lib/ src/", - "build-dev": "webpack --config=config/webpack/webpack.config.dev.js", - "extract-metadata": "mkdir -p lib && react-docgen --pretty -o lib/metadata.json src/basic/components", - "dev": "webpack-dev-server --config=config/webpack/webpack.config.dev.js", - "lint": "eslint --quiet --fix --ignore-path .gitignore .", - "prepublish": "npm test", - "start": "npm run transpile-dev-watch", - "test": "npm run lint" + "start": "builder run transpile-dev-watch", + "test": "builder run lint" }, "author": "Per Nilsson ", "license": "MIT", "dependencies": { - "babel-cli": "^6.10.1", - "babel-core": "^6.9.0", - "babel-loader": "^6.2.4", - "babel-preset-es2015": "^6.6.0", - "babel-preset-react": "^6.5.0", - "clean-webpack-plugin": "^0.1.9", + "builder": "2.10.1", + "dash-components-archetype": "^0.1.0", "radium": "^0.17.1", "ramda": "^0.21.0", - "react-docgen": "^2.8.2", - "react-dom": "^15.1.0", - "webpack": "^1.13.1", - "webpack-partial": "^1.2.0" + "react": "^15.1.0", + "react-dom": "^15.1.0" }, "devDependencies": { - "babel-plugin-transform-es2015-modules-commonjs-simple": "^6.7.4", - "babel-preset-es2015-webpack": "^6.4.1", - "eslint": "^2.8.0", - "eslint-plugin-import": "^1.8.1", - "eslint-plugin-react": "^5.1.1", - "react": "^15.1.0" + "dash-components-archetype-dev": "^0.1.0" } } diff --git a/src/basic/Styles.js b/src/Styles.js similarity index 98% rename from src/basic/Styles.js rename to src/Styles.js index 8add81be3..c7ec125b5 100644 --- a/src/basic/Styles.js +++ b/src/Styles.js @@ -9,4 +9,4 @@ const palette = { export default { colors: palette -} +}; diff --git a/src/basic/components/EditableDiv.react.js b/src/components/EditableDiv.react.js similarity index 94% rename from src/basic/components/EditableDiv.react.js rename to src/components/EditableDiv.react.js index ae63ddcbe..12ea61934 100644 --- a/src/basic/components/EditableDiv.react.js +++ b/src/components/EditableDiv.react.js @@ -10,7 +10,7 @@ const baseStyles = { ':hover': { color: Styles.colors.baseHover } -} +}; /** * A div for displaying text. The text is editable. @@ -18,12 +18,12 @@ const baseStyles = { export default class EditableDiv extends Component { constructor(props) { - super(props); - this.state = {inEditMode: false}; + super(props) + this.state = {inEditMode: false} } componentDidUpdate() { - if (this.state.inEditMode) ReactDOM.findDOMNode(this.refs.input).focus(); + if (this.state.inEditMode) ReactDOM.findDOMNode(this.refs.input).focus() } render() { @@ -43,18 +43,18 @@ export default class EditableDiv extends Component { onBlur={() => this.setState({inEditMode: false})} /> - ); + ) } else { return (
{ - if (this.props.editable) this.setState({inEditMode: true}); + if (this.props.editable) this.setState({inEditMode: true}) }} > {this.props.text}
- ); + ) } } diff --git a/src/basic/components/Header.react.js b/src/components/Header.react.js similarity index 82% rename from src/basic/components/Header.react.js rename to src/components/Header.react.js index f418ecbca..abe70a920 100644 --- a/src/basic/components/Header.react.js +++ b/src/components/Header.react.js @@ -1,5 +1,3 @@ -'use strict'; - import React, {Component, PropTypes} from 'react'; /** @@ -7,7 +5,7 @@ import React, {Component, PropTypes} from 'react'; */ class Header extends Component { render() { - return

Hello, {this.props.name}

; + return

Hello, {this.props.name}

} } diff --git a/src/basic/components/InputControl.react.js b/src/components/InputControl.react.js similarity index 94% rename from src/basic/components/InputControl.react.js rename to src/components/InputControl.react.js index fc1d4a5f7..06d85590f 100644 --- a/src/basic/components/InputControl.react.js +++ b/src/components/InputControl.react.js @@ -5,14 +5,14 @@ import React, {Component, PropTypes} from 'react'; */ export default class InputControl extends Component { constructor() { - super(); + super() this.state = { value: '' } } handleChange(value) { - this.setState({value}); + this.setState({value}) /** * TODO (#22): Remove conditional. Always pass a callback function * to components that can change value. @@ -29,7 +29,7 @@ export default class InputControl extends Component { onChange={e => this.handleChange(e.target.value)} {...this.props} /> - ); + ) } } diff --git a/src/basic/index.js b/src/index.js similarity index 98% rename from src/basic/index.js rename to src/index.js index 81ff515f2..333478c0d 100644 --- a/src/basic/index.js +++ b/src/index.js @@ -10,4 +10,4 @@ export { EditableDiv, Header, InputControl -}; \ No newline at end of file +};