From eda6418c0b394e7babce902bad0f2f9536f6ce67 Mon Sep 17 00:00:00 2001 From: Michal Mondik Date: Fri, 4 Nov 2016 10:51:09 +0100 Subject: [PATCH] Add eslint-import and make noSpecialReplacements explicit --- .eslintrc | 31 ++++++++++++++++++++++++++----- README.md | 8 ++++++-- example/src/App.js | 2 +- package.json | 1 + src/createBlueKit.js | 2 +- 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/.eslintrc b/.eslintrc index 68ca2fc..c71f394 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,10 +1,17 @@ { + "ecmaFeatures": { + "jsx": true + }, "env": { "browser": true, "mocha": true, "node": true }, "parser": "babel-eslint", + "plugins": [ + "react", + "import" + ], "rules": { "array-bracket-spacing": 2, "brace-style": [2, "stroustrup", {"allowSingleLine": true}], @@ -18,6 +25,12 @@ "eol-last": 2, "eqeqeq": [2, "allow-null"], "guard-for-in": 0, + // eslint-plugin-import + "import/no-unresolved": [2, {"commonjs": true}], + "import/named": 2, + "import/default": 2, + "import/namespace": 2, + "import/export": 2, "indent": [2, 2, { "SwitchCase": 1 }], @@ -116,10 +129,18 @@ // Not ready yet. "react/sort-comp": 2, "react/wrap-multilines": 2, }, - "plugins": [ - "react" - ], - "ecmaFeatures": { - "jsx": true + "settings": { + "import/ignore": [ + "node_modules", + "\\.json$" + ], + "import/parser": "babel-eslint", + "import/resolve": { + "extensions": [ + ".js", + ".jsx", + ".json" + ] + } } } diff --git a/README.md b/README.md index 220bba3..25f53c5 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ createBlueKit({ baseDir: `${__dirname}/src/browser`, // relative paths from base dir where to look for components paths: ['./components/', './auth'], - // set to false to disable specialized component code mutations the bluekit team uses - specialReplacements: false + // set to true when providing simple components such as `export default function MyComponent() {
Hello
}` + noSpecialReplacements: true }); ``` @@ -91,6 +91,10 @@ gulp ava gulp eslint ``` +## Additional info + +BlueKit automatically hides props that don’t affect the component’s look. + If you get some kind of weird error and BlueKit doesn't load at all, try to reset localStorage by running `localStorage.clear();`. We are working on automatic checks of localStorage values. ## License diff --git a/example/src/App.js b/example/src/App.js index b47feaf..88f772e 100644 --- a/example/src/App.js +++ b/example/src/App.js @@ -1,6 +1,6 @@ import React, {Component} from '../../node_modules/react'; import BlueKit from '../../src'; -import componentsIndex from './componentsIndex'; +import componentsIndex from './componentsIndex'; // eslint-disable-line export default class App extends Component { render() { diff --git a/package.json b/package.json index eeee56d..401576a 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "babel-register": "^6.6.5", "eslint": "2.0.0", "eslint-config-airbnb": "^0.1.0", + "eslint-plugin-import": "^2.1.0", "eslint-plugin-react": "^3.5.1", "estraverse-fb": "^1.3.1", "expect": "^1.12.2", diff --git a/src/createBlueKit.js b/src/createBlueKit.js index bb68a47..f81fdc5 100644 --- a/src/createBlueKit.js +++ b/src/createBlueKit.js @@ -48,7 +48,7 @@ function getImportFile(directory, file) { function generateComponentData(config, file, directory) { const filePath = path.join(directory, file); let content = fs.readFileSync(filePath).toString() - if (config.specialReplacements) { + if (!config.noSpecialReplacements) { content = content .replace('_interopRequireDefault(_react)', 'require("react")') .replace(/import Component from ["']react-pure-render\/component["']/, 'import {Component} from "react"')