Linting rules

This commit is contained in:
Timothy Warren 2018-03-30 21:30:22 -04:00
parent f322e539d2
commit 3dc7845303
11 changed files with 119 additions and 33 deletions

View File

@ -10,6 +10,7 @@
"plugin:inferno/recommended", "plugin:inferno/recommended",
"eslint-config-happiness" "eslint-config-happiness"
], ],
"globals": {},
"parser": "babel-eslint", "parser": "babel-eslint",
"parserOptions": { "parserOptions": {
"ecmaVersion": 6, "ecmaVersion": 6,
@ -19,11 +20,63 @@
} }
}, },
"rules": { "rules": {
"import/extensions": 0, "array-callback-return": "error",
"import/no-extraneous-dependencies": 0, "camelcase": ["error", {
"properties": "never"
}],
"comma-dangle": ["error", "always-multiline"],
"import/extensions": "off",
"import/no-extraneous-dependencies": "off",
"import/no-unresolved": [2, { "ignore": ["electron"] }], "import/no-unresolved": [2, { "ignore": ["electron"] }],
"linebreak-style": 0, "jsx-quotes": ["error", "prefer-double"],
"react/prefer-stateless-function": 0, "linebreak-style": "off",
"no-console": 0 "multiline-ternary": ["error", "always-multiline"],
"prefer-arrow-callback": ["error", {
"allowNamedFunctions": true
}],
"prefer-const": "error",
"no-alert": "error",
"no-console": "off",
"no-duplicate-imports": "error",
"no-eval": "error",
"no-extend-native": "error",
"no-extra-bind": "error",
"no-extra-semi": "error",
"no-implied-eval": "error",
"no-invalid-this": "error",
"no-nested-ternary": "error",
"no-new-func": "error",
"no-new-wrappers": "error",
"no-return-assign": "error",
"no-return-await": "error",
"no-self-compare": "error",
"no-shadow": ["error", {
"builtinGlobals": true
}],
"no-unneeded-ternary": "error",
"no-unused-expressions": "error",
"no-use-before-define": "error",
"no-useless-call": "error",
"no-useless-concat": "error",
"no-useless-return": "error",
"no-var": "error",
"no-with": "error",
"prefer-rest-params": "error",
"prefer-spread": "error",
"prefer-template": "error",
"quotes": ["error", "single", {
"allowTemplateLiterals": true,
"avoidEscape": true
}],
"quote-props": ["error", "as-needed", {
"keywords": true,
"unnecessary": false,
"numbers": false
}],
"radix": ["error", "always"],
"react/prefer-stateless-function": "off",
"require-await": "error",
"sort-keys": ["error", "asc", {"caseSensitive": true, "natural": true}],
"yoda": ["error", "never"]
} }
} }

View File

@ -13,7 +13,6 @@ You can find the most recent version of this guide [here](https://github.com/fac
- [npm test](#npm-test) - [npm test](#npm-test)
- [npm run build](#npm-run-build) - [npm run build](#npm-run-build)
- [npm run eject](#npm-run-eject) - [npm run eject](#npm-run-eject)
- [Supported Browsers](#supported-browsers)
- [Supported Language Features and Polyfills](#supported-language-features-and-polyfills) - [Supported Language Features and Polyfills](#supported-language-features-and-polyfills)
- [Syntax Highlighting in the Editor](#syntax-highlighting-in-the-editor) - [Syntax Highlighting in the Editor](#syntax-highlighting-in-the-editor)
- [Displaying Lint Output in the Editor](#displaying-lint-output-in-the-editor) - [Displaying Lint Output in the Editor](#displaying-lint-output-in-the-editor)
@ -198,12 +197,6 @@ Instead, it will copy all the configuration files and the transitive dependencie
You dont have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldnt feel obligated to use this feature. However we understand that this tool wouldnt be useful if you couldnt customize it when you are ready for it. You dont have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldnt feel obligated to use this feature. However we understand that this tool wouldnt be useful if you couldnt customize it when you are ready for it.
## Supported Browsers
By default, the generated project uses the latest version of React.
You can refer [to the React documentation](https://reactjs.org/docs/react-dom.html#browser-support) for more information about supported browsers.
## Supported Language Features and Polyfills ## Supported Language Features and Polyfills
This project supports a superset of the latest JavaScript standard.<br> This project supports a superset of the latest JavaScript standard.<br>

View File

@ -1,13 +1,14 @@
import { version } from 'inferno'; import { BrowserRouter } from 'inferno-router';
import { BrowserRouter, Route } from 'inferno-router'
import { Button, Form, FormGroup, Input, Label } from './components/Form';
import { Container, Row } from './components/Grid'; import { Container, Row } from './components/Grid';
const App = () => ( const App = () => (
<BrowserRouter> <BrowserRouter>
<Container className="App"> <Container className="App">
<Row> <Row>
<header className="App-header"> <header className="App-header">
<h1>{`Welcome to Inferno ${version}`}</h1> <h1>Welcome to Inferno</h1>
</header> </header>
</Row> </Row>
<Row> <Row>
@ -15,6 +16,15 @@ const App = () => (
To get started, edit <code>src/App.js</code> and save to reload. To get started, edit <code>src/App.js</code> and save to reload.
</p> </p>
</Row> </Row>
<Row>
<Form>
<FormGroup>
<Label htmlFor="brand">Brand</Label>
<Input type="text" id="brand" name="brand" />
</FormGroup>
<Button type="submit">Save</Button>
</Form>
</Row>
</Container> </Container>
</BrowserRouter> </BrowserRouter>
); );

View File

@ -1,5 +1,5 @@
import { render } from 'inferno';
import App from './App'; import App from './App';
import { render } from 'inferno';
it('renders without crashing', () => { it('renders without crashing', () => {
const div = document.createElement('div'); const div = document.createElement('div');

25
src/components/Form.js Normal file
View File

@ -0,0 +1,25 @@
import Button from 'inferno-bootstrap/dist/Button';
import Form from 'inferno-bootstrap/dist/Form/Form';
import FormFeedback from 'inferno-bootstrap/dist/Form/FormFeedback';
import FormGroup from 'inferno-bootstrap/dist/Form/FormGroup';
import FormText from 'inferno-bootstrap/dist/Form/FormText';
import Input from 'inferno-bootstrap/dist/Form/Input';
import InputGroup from 'inferno-bootstrap/dist/Form/InputGroup';
import InputGroupAddon from 'inferno-bootstrap/dist/Form/InputGroupAddon';
import InputGroupButtonDropdown from 'inferno-bootstrap/dist/Form/InputGroupButtonDropdown';
import InputGroupText from 'inferno-bootstrap/dist/Form/InputGroupText';
import Label from 'inferno-bootstrap/dist/Form/Label';
export {
Button,
Form,
FormFeedback,
FormGroup,
FormText,
Input,
InputGroup,
InputGroupAddon,
InputGroupButtonDropdown,
InputGroupText,
Label,
};

View File

@ -1,9 +1,9 @@
import Container from 'inferno-bootstrap/dist/Container' import Col from 'inferno-bootstrap/dist/Col';
import Row from 'inferno-bootstrap/dist/Row' import Container from 'inferno-bootstrap/dist/Container';
import Col from 'inferno-bootstrap/dist/Col' import Row from 'inferno-bootstrap/dist/Row';
export { export {
Col, Col,
Container, Container,
Row, Row,
} };

View File

@ -1 +1 @@
export * from './Grid' export * from './Grid';

View File

@ -11,18 +11,18 @@ const url = require('url');
// be closed automatically when the JavaScript object is garbage collected. // be closed automatically when the JavaScript object is garbage collected.
let mainWindow; let mainWindow;
// This method will be called when Electron has finished const createWindow = () => {
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', () => {
// Create the browser window. // Create the browser window.
mainWindow = new BrowserWindow({width: 800, height: 600}); mainWindow = new BrowserWindow({
height: 600,
width: 800,
});
// load the index.html of the app. // load the index.html of the app.
const startUrl = process.env.ELECTRON_START_URL || url.format({ const startUrl = process.env.ELECTRON_START_URL || url.format({
pathname: path.join(__dirname, '/../../build/index.html'), pathname: path.join(__dirname, '/../../build/index.html'),
protocol: 'file:', protocol: 'file:',
slashes: true slashes: true,
}); });
mainWindow.loadURL(startUrl); mainWindow.loadURL(startUrl);
// Open the DevTools. // Open the DevTools.
@ -35,7 +35,12 @@ app.on('ready', () => {
// when you should delete the corresponding element. // when you should delete the corresponding element.
mainWindow = null; mainWindow = null;
}); });
}); };
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow);
// Quit when all windows are closed. // Quit when all windows are closed.
app.on('window-all-closed', () => { app.on('window-all-closed', () => {

View File

@ -1,4 +1,4 @@
import { render } from 'inferno';
import App from './App'; import App from './App';
import { render } from 'inferno';
render(<App />, document.getElementById('app')); render(<App />, document.getElementById('app'));

View File

@ -1,3 +1,3 @@
export const CameraList = () => { export const CameraList = () => {
return <div /> return <div />;
} };

View File

@ -1 +1 @@
export * from './CameraList' export * from './Camera';