├── .nvmrc
├── .npmrc
├── .prettierignore
├── .prettierrc
├── src
├── index.scss
├── state
│ ├── saga.js
│ ├── reducer.js
│ └── index.js
├── routes
│ ├── Home
│ │ ├── style.scss
│ │ ├── index.js
│ │ ├── sagas.js
│ │ ├── Container.js
│ │ ├── reducer.js
│ │ └── Home.js
│ └── index.js
└── index.js
├── .travis.yml
├── .stylelintrc
├── .eslintrc
├── public
└── index.html
├── .editorconfig
├── README.md
├── config
├── webpack.dev.js
└── webpack.prod.js
├── package.json
├── .gitignore
└── .eslintignore
/.nvmrc:
--------------------------------------------------------------------------------
1 | v8.11.4
2 |
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | save-exact = true
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "trailingComma": "es5",
3 | "singleQuote": true
4 | }
5 |
--------------------------------------------------------------------------------
/src/index.scss:
--------------------------------------------------------------------------------
1 | @import '~normalize.css/normalize';
2 | @import '~bulma/bulma';
3 |
--------------------------------------------------------------------------------
/src/state/saga.js:
--------------------------------------------------------------------------------
1 | import createSagaMiddleware from 'redux-saga';
2 |
3 | export default createSagaMiddleware();
4 |
--------------------------------------------------------------------------------
/src/state/reducer.js:
--------------------------------------------------------------------------------
1 | import { combineReducers } from 'redux';
2 |
3 | export default asyncReducers =>
4 | combineReducers({
5 | ...asyncReducers,
6 | });
7 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: false
2 |
3 | language: node_js
4 |
5 | # Keep empty to user version from .nvmrc
6 | node_js: null
7 |
8 | script:
9 | - yarn lint
10 | - yarn build:prod
11 |
--------------------------------------------------------------------------------
/src/routes/Home/style.scss:
--------------------------------------------------------------------------------
1 | @import '~bulma/sass/utilities/initial-variables';
2 | @import '~bulma/sass/utilities/derived-variables';
3 |
4 | .home {
5 | &__spinner {
6 | color: $light;
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "stylelint-config-standard",
4 | "stylelint-config-prettier"
5 | ],
6 | "plugins": ["stylelint-prettier"],
7 | "rules": {
8 | "prettier/prettier": true
9 | }
10 | }
--------------------------------------------------------------------------------
/src/routes/Home/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Loadable from 'react-loadable';
3 |
4 | export default Loadable({
5 | loader: () => import(/* webpackChunkName: "home" */ './Container'),
6 | loading() {
7 | return
Loading...
;
8 | },
9 | });
10 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "extends": ["airbnb", "eslint-config-prettier"],
4 | "plugins": ["eslint-plugin-prettier"],
5 | "rules": {
6 | "prettier/prettier": "error",
7 | "react/jsx-filename-extension": false,
8 | "import/no-extraneous-dependencies": false
9 | },
10 | "env": {
11 | "browser": true
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/routes/Home/sagas.js:
--------------------------------------------------------------------------------
1 | import { put, takeEvery } from 'redux-saga/effects';
2 | import { delay } from 'redux-saga';
3 |
4 | function* shuffleFeatures() {
5 | yield delay(3000);
6 | yield put({
7 | type: 'SHUFFLE-DONE',
8 | });
9 | }
10 |
11 | function* shuffleFeaturesSaga() {
12 | yield takeEvery('SHUFFLE-REQUESTED', shuffleFeatures);
13 | }
14 |
15 | export default [shuffleFeaturesSaga];
16 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | React-Kit
7 |
8 |
9 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/routes/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { BrowserRouter } from 'react-router-dom';
4 | import { renderRoutes } from 'react-router-config';
5 | import { hot } from 'react-hot-loader';
6 |
7 | import Home from './Home';
8 |
9 | const routes = [
10 | {
11 | component: Home,
12 | },
13 | ];
14 |
15 | const Router = () => {renderRoutes(routes)};
16 |
17 | export default hot(module)(Router);
18 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import '@babel/polyfill';
2 |
3 | import React from 'react';
4 | import ReactDOM from 'react-dom';
5 | import { Provider } from 'react-redux';
6 |
7 | import Router from './routes';
8 | import state from './state';
9 |
10 | import './index.scss';
11 |
12 | const render = () => {
13 | try {
14 | ReactDOM.render(
15 |
16 |
17 | ,
18 | document.getElementById('root')
19 | );
20 | } catch (err) {
21 | // eslint-disable-next-line
22 | console.error(err)
23 | }
24 | };
25 |
26 | render();
27 |
--------------------------------------------------------------------------------
/src/routes/Home/Container.js:
--------------------------------------------------------------------------------
1 | import { connect } from 'react-redux';
2 |
3 | import Home from './Home';
4 | import state from '../../state';
5 | import reducer from './reducer';
6 | import sagas from './sagas';
7 |
8 | state.injectReducer('home', reducer);
9 | state.injectSagas(sagas);
10 |
11 | const mapDispatchToProps = dispatch => ({
12 | shuffle: () => dispatch({ type: 'SHUFFLE-REQUESTED' }),
13 | });
14 |
15 | const mapStateToProps = s => ({
16 | features: s.home.features,
17 | loading: s.home.loading,
18 | });
19 |
20 | export default connect(
21 | mapStateToProps,
22 | mapDispatchToProps
23 | )(Home);
24 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: http://EditorConfig.org
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | # Unix-style newlines with a newline ending every file
7 | [*]
8 | indent_size = 2
9 | end_of_line = lf
10 | insert_final_newline = true
11 | trim_trailing_whitespace = true
12 |
13 | # Matches multiple files with brace expansion notation
14 | # Set default charset
15 | [*.{js,css,html}]
16 | charset = utf-8
17 | indent_style = space
18 | ndent_size = 2
19 |
20 | [*.js]
21 | max_line_length = 120
22 |
23 | # Matches the exact files either package.json or .travis.yml
24 | [{package.json,.travis.yml}]
25 | indent_style = space
26 | indent_size = 2
27 |
--------------------------------------------------------------------------------
/src/routes/Home/reducer.js:
--------------------------------------------------------------------------------
1 | const initialState = {
2 | features: [
3 | {
4 | heading: 'Predictable state managment',
5 | title: 'Redux',
6 | },
7 | {
8 | heading: 'Multiple and dynamic bundles',
9 | title: 'Code splitting',
10 | },
11 | {
12 | heading: 'Declarative routing',
13 | title: 'React Router',
14 | },
15 | {
16 | heading: 'Realtime update',
17 | title: 'React Hot reload',
18 | },
19 | ],
20 | loading: false,
21 | };
22 |
23 | function shuffle(array) {
24 | const copy = array.slice();
25 |
26 | for (let i = copy.length - 1; i > 0; i -= 1) {
27 | const j = Math.floor(Math.random() * (i + 1));
28 | const temp = copy[i];
29 | copy[i] = copy[j];
30 | copy[j] = temp;
31 | }
32 |
33 | return copy;
34 | }
35 |
36 | export default function reducer(state = initialState, action) {
37 | switch (action.type) {
38 | case 'SHUFFLE-REQUESTED':
39 | return {
40 | ...state,
41 | loading: true,
42 | };
43 | case 'SHUFFLE-DONE':
44 | return {
45 | ...state,
46 | features: shuffle(state.features),
47 | loading: false,
48 | };
49 | default:
50 | return state;
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/src/state/index.js:
--------------------------------------------------------------------------------
1 | import { applyMiddleware, compose, createStore } from 'redux';
2 |
3 | import createRootReducer from './reducer';
4 | import sagaMiddleware from './saga';
5 |
6 | export class State {
7 | constructor(initialState = {}) {
8 | const enhancers = [];
9 | const middleware = [sagaMiddleware];
10 |
11 | let composeEnhancers = compose;
12 |
13 | if (process.env.NODE_ENV === 'development') {
14 | const composeWithDevToolsExtension = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__; // eslint-disable-line no-underscore-dangle,max-len
15 | if (typeof composeWithDevToolsExtension === 'function') {
16 | composeEnhancers = composeWithDevToolsExtension;
17 | }
18 | }
19 |
20 | this.store = createStore(
21 | () => {}, // No-op root reducer
22 | initialState,
23 | composeEnhancers(applyMiddleware(...middleware), ...enhancers)
24 | );
25 | this.store.asyncReducers = {};
26 | this.store.sagas = {};
27 | }
28 |
29 | injectReducer(key, reducer) {
30 | this.store.asyncReducers[key] = reducer;
31 | this.store.replaceReducer(createRootReducer(this.store.asyncReducers));
32 | }
33 |
34 | injectSaga(saga) {
35 | if (saga.name in this.store.sagas) {
36 | this.store.sagas[saga.name].cancel();
37 | this.store.sagas[saga.name] = sagaMiddleware.run(saga);
38 | } else {
39 | this.store.sagas[saga.name] = sagaMiddleware.run(saga);
40 | }
41 | }
42 |
43 | injectSagas(sagas) {
44 | if (Array.isArray(sagas)) sagas.forEach(saga => this.injectSaga(saga));
45 | else this.injectSaga(sagas);
46 | }
47 | }
48 |
49 | export default new State();
50 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | **DEPRECATED**
2 | I'm archiving this repo. [Create React App](https://github.com/facebook/create-react-app) does a better job, is well maintained and support more options.
3 |
4 | ---
5 |
6 | Do you prefer `typescript` ? If so, use the [dedicated branch](https://github.com/thomasthiebaud/react-kit/tree/typescript) instead
7 |
8 |
9 | # Setup
10 |
11 | This project was tested with nodejs version `8.9.4`. You can easily install this version using [nvm](https://github.com/creationix/nvm) and then running
12 |
13 | nvm install
14 |
15 | and then install modules with
16 |
17 | npm install
18 |
19 | ## Scripts
20 |
21 | The following scripts are available
22 |
23 | |Name |Description |
24 | |-------------|----------------------------------------------------------------------------------------------|
25 | |build | Alias for `build:prod` |
26 | |build:dev | Create development bundle |
27 | |build:prod | Create optimized production bundle |
28 | |clean | Remove existing bundle and error files |
29 | |lint | Run linter |
30 | |lint:fix | Run linter and try to fix errors |
31 | |start | Alias for `start:dev` |
32 | |start:dev | Start developemnt server using development bundle |
33 | |start:prod | Start production server using production bundle |
34 |
--------------------------------------------------------------------------------
/config/webpack.dev.js:
--------------------------------------------------------------------------------
1 | const autoprefixer = require('autoprefixer');
2 |
3 | const Dotenv = require('dotenv-webpack');
4 | const HtmlWebPackPlugin = require('html-webpack-plugin');
5 |
6 | module.exports = {
7 | mode: 'development',
8 | module: {
9 | rules: [
10 | {
11 | test: /\.js$/,
12 | exclude: /node_modules/,
13 | use: {
14 | loader: 'babel-loader',
15 | options: {
16 | presets: ['@babel/preset-env', '@babel/preset-react'],
17 | plugins: ['react-hot-loader/babel', 'syntax-dynamic-import', 'transform-regenerator'],
18 | },
19 | },
20 | },
21 | {
22 | test: /\.scss$/,
23 | use: [
24 | 'style-loader',
25 | 'css-loader',
26 | {
27 | loader: 'postcss-loader',
28 | options: {
29 | plugins: () => [autoprefixer()],
30 | },
31 | },
32 | {
33 | loader: 'sass-loader',
34 | options: {
35 | includePaths: ['node_modules', 'src'],
36 | },
37 | },
38 | ],
39 | },
40 | {
41 | test: /\.css$/,
42 | use: [
43 | 'style-loader',
44 | 'css-loader',
45 | {
46 | loader: 'postcss-loader',
47 | options: {
48 | plugins: () => [autoprefixer()],
49 | },
50 | },
51 | ],
52 | },
53 | {
54 | test: /\.(eot|svg|ttf|woff|woff2)$/,
55 | loader: 'file-loader',
56 | },
57 | {
58 | test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
59 | loader: 'url-loader',
60 | options: {
61 | limit: 10000,
62 | },
63 | },
64 | ],
65 | },
66 | plugins: [
67 | new Dotenv(),
68 | new HtmlWebPackPlugin({
69 | template: './public/index.html',
70 | filename: './index.html',
71 | }),
72 | ],
73 | serve: {
74 | open: true,
75 | },
76 | };
77 |
--------------------------------------------------------------------------------
/src/routes/Home/Home.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import Spinner from 'react-spinkit';
4 |
5 | import './style.scss';
6 |
7 | class Home extends React.PureComponent {
8 | render() {
9 | const { features, loading, shuffle } = this.props;
10 | return (
11 |
12 |
23 |
24 |
25 |
A ready-to-go React App
26 |
Featuring...
27 |
43 |
46 |
47 |
48 |
49 | );
50 | }
51 | }
52 |
53 | Home.propTypes = {
54 | features: PropTypes.arrayOf(
55 | PropTypes.shape({
56 | heading: PropTypes.string.isRequired,
57 | title: PropTypes.string.isRequired,
58 | })
59 | ).isRequired,
60 | loading: PropTypes.bool.isRequired,
61 | shuffle: PropTypes.func.isRequired,
62 | };
63 |
64 | export default Home;
65 |
--------------------------------------------------------------------------------
/config/webpack.prod.js:
--------------------------------------------------------------------------------
1 | const autoprefixer = require('autoprefixer');
2 | const cssnano = require('cssnano');
3 |
4 | const HtmlWebPackPlugin = require('html-webpack-plugin');
5 | const MiniCssExtractPlugin = require('mini-css-extract-plugin');
6 | const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
7 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
8 |
9 | module.exports = {
10 | mode: 'production',
11 | module: {
12 | rules: [
13 | {
14 | test: /\.js$/,
15 | exclude: /node_modules/,
16 | use: {
17 | loader: 'babel-loader',
18 | options: {
19 | presets: ['@babel/preset-env', '@babel/preset-react'],
20 | plugins: ['syntax-dynamic-import', 'transform-regenerator'],
21 | },
22 | },
23 | },
24 | {
25 | test: /\.scss$/,
26 | use: [
27 | MiniCssExtractPlugin.loader,
28 | 'css-loader',
29 | {
30 | loader: 'postcss-loader',
31 | options: {
32 | plugins: () => [autoprefixer(), cssnano()],
33 | },
34 | },
35 | {
36 | loader: 'sass-loader',
37 | options: {
38 | includePaths: ['node_modules', 'src'],
39 | },
40 | },
41 | ],
42 | },
43 | {
44 | test: /\.css$/,
45 | use: [
46 | MiniCssExtractPlugin.loader,
47 | 'css-loader',
48 | {
49 | loader: 'postcss-loader',
50 | options: {
51 | plugins: () => [autoprefixer(), cssnano()],
52 | },
53 | },
54 | ],
55 | },
56 | {
57 | test: /\.(eot|svg|ttf|woff|woff2)$/,
58 | loader: 'file-loader',
59 | },
60 | {
61 | test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
62 | loader: 'url-loader',
63 | options: {
64 | limit: 10000,
65 | },
66 | },
67 | ],
68 | },
69 | plugins: [
70 | new HtmlWebPackPlugin({
71 | template: './public/index.html',
72 | filename: './index.html',
73 | minify: {
74 | removeComments: true,
75 | collapseWhitespace: true,
76 | removeRedundantAttributes: true,
77 | useShortDoctype: true,
78 | removeEmptyAttributes: true,
79 | removeStyleLinkTypeAttributes: true,
80 | keepClosingSlash: true,
81 | minifyJS: true,
82 | minifyCSS: true,
83 | minifyURLs: true,
84 | },
85 | }),
86 | new MiniCssExtractPlugin({
87 | filename: '[name].css',
88 | }),
89 | new UglifyJsPlugin({
90 | cache: true,
91 | parallel: true,
92 | }),
93 | new OptimizeCSSAssetsPlugin({}),
94 | ],
95 | };
96 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-kit",
3 | "version": "1.0.0",
4 | "description": "Ready to go React project",
5 | "main": "index.js",
6 | "author": "Thomas Thiebaud",
7 | "license": "MIT",
8 | "scripts": {
9 | "build": "npm run clean; npm run build:prod",
10 | "build:dev": "webpack --config config/webpack.dev.js",
11 | "build:prod": "webpack --config config/webpack.prod.js",
12 | "clean": "rimraf dist/ yarn-error.log npm-debug.log",
13 | "lint": "npm run lint:code && npm run lint:style",
14 | "lint:fix": "npm run lint:code:fix && npm run lint:style:fix",
15 | "lint:code": "eslint .",
16 | "lint:code:fix": "eslint --fix .",
17 | "lint:style": "stylelint 'src/**/*.scss'",
18 | "lint:style:fix": "stylelint --fix 'src/**/*.scss'",
19 | "start": "npm run start:dev",
20 | "start:dev": "webpack-serve --config config/webpack.dev.js",
21 | "start:prod": "npm run build && http-server --cors dist/"
22 | },
23 | "pre-commit": [
24 | "lint"
25 | ],
26 | "dependencies": {
27 | "@babel/polyfill": "7.0.0",
28 | "bulma": "0.7.1",
29 | "normalize.css": "8.0.0",
30 | "prop-types": "15.6.2",
31 | "react": "16.5.1",
32 | "react-dom": "16.5.1",
33 | "react-hot-loader": "4.3.8",
34 | "react-loadable": "5.5.0",
35 | "react-redux": "5.0.7",
36 | "react-router-config": "1.0.0-beta.4",
37 | "react-router-dom": "4.3.1",
38 | "react-spinkit": "3.0.0",
39 | "redux": "3.7.2",
40 | "redux-saga": "0.16.0"
41 | },
42 | "devDependencies": {
43 | "@babel/core": "7.0.1",
44 | "@babel/plugin-transform-runtime": "7.0.0",
45 | "@babel/preset-env": "7.0.0",
46 | "@babel/preset-react": "7.0.0",
47 | "autoprefixer": "9.1.5",
48 | "babel-eslint": "9.0.0",
49 | "babel-loader": "8.0.2",
50 | "babel-plugin-syntax-dynamic-import": "6.18.0",
51 | "babel-plugin-transform-regenerator": "6.26.0",
52 | "css-loader": "1.0.0",
53 | "cssnano": "4.1.0",
54 | "dotenv-webpack": "1.5.7",
55 | "eslint": "5.6.0",
56 | "eslint-config-airbnb": "17.1.0",
57 | "eslint-config-prettier": "3.0.1",
58 | "eslint-plugin-import": "2.14.0",
59 | "eslint-plugin-jsx-a11y": "6.1.1",
60 | "eslint-plugin-prettier": "2.6.2",
61 | "eslint-plugin-react": "7.11.1",
62 | "file-loader": "2.0.0",
63 | "html-webpack-plugin": "3.2.0",
64 | "http-server": "0.11.1",
65 | "mini-css-extract-plugin": "0.4.2",
66 | "node-sass": "4.9.3",
67 | "optimize-css-assets-webpack-plugin": "5.0.1",
68 | "postcss-loader": "3.0.0",
69 | "pre-commit": "1.2.2",
70 | "prettier": "1.14.2",
71 | "rimraf": "2.6.2",
72 | "sass-loader": "7.1.0",
73 | "style-loader": "0.23.0",
74 | "stylelint": "9.5.0",
75 | "stylelint-config-prettier": "4.0.0",
76 | "stylelint-config-standard": "18.2.0",
77 | "stylelint-prettier": "1.0.1",
78 | "uglifyjs-webpack-plugin": "2.0.0",
79 | "url-loader": "1.1.1",
80 | "webpack": "4.19.0",
81 | "webpack-cli": "3.1.0",
82 | "webpack-serve": "2.0.2"
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### Emacs template
3 | # -*- mode: gitignore; -*-
4 | *~
5 | \#*\#
6 | /.emacs.desktop
7 | /.emacs.desktop.lock
8 | *.elc
9 | auto-save-list
10 | tramp
11 | .\#*
12 |
13 | # Org-mode
14 | .org-id-locations
15 | *_archive
16 |
17 | # flymake-mode
18 | *_flymake.*
19 |
20 | # eshell files
21 | /eshell/history
22 | /eshell/lastdir
23 |
24 | # elpa packages
25 | /elpa/
26 |
27 | # reftex files
28 | *.rel
29 |
30 | # AUCTeX auto folder
31 | /auto/
32 |
33 | # cask packages
34 | .cask/
35 | dist/
36 |
37 | # Flycheck
38 | flycheck_*.el
39 |
40 | # server auth directory
41 | /server/
42 |
43 | # projectiles files
44 | .projectile
45 |
46 | # directory configuration
47 | .dir-locals.el
48 | ### Node template
49 | # Logs
50 | logs
51 | *.log
52 | npm-debug.log*
53 | yarn-debug.log*
54 | yarn-error.log*
55 |
56 | # Runtime data
57 | pids
58 | *.pid
59 | *.seed
60 | *.pid.lock
61 |
62 | # Directory for instrumented libs generated by jscoverage/JSCover
63 | lib-cov
64 |
65 | # Coverage directory used by tools like istanbul
66 | coverage
67 |
68 | # nyc test coverage
69 | .nyc_output
70 |
71 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
72 | .grunt
73 |
74 | # Bower dependency directory (https://bower.io/)
75 | bower_components
76 |
77 | # node-waf configuration
78 | .lock-wscript
79 |
80 | # Compiled binary addons (http://nodejs.org/api/addons.html)
81 | build/Release
82 |
83 | # Dependency directories
84 | node_modules/
85 | jspm_packages/
86 |
87 | # Typescript v1 declaration files
88 | typings/
89 |
90 | # Optional npm cache directory
91 | .npm
92 |
93 | # Optional eslint cache
94 | .eslintcache
95 |
96 | # Optional REPL history
97 | .node_repl_history
98 |
99 | # Output of 'npm pack'
100 | *.tgz
101 |
102 | # Yarn Integrity file
103 | .yarn-integrity
104 |
105 | # dotenv environment variables file
106 | .env
107 |
108 | ### Windows template
109 | # Windows thumbnail cache files
110 | Thumbs.db
111 | ehthumbs.db
112 | ehthumbs_vista.db
113 |
114 | # Folder config file
115 | Desktop.ini
116 |
117 | # Recycle Bin used on file shares
118 | $RECYCLE.BIN/
119 |
120 | # Windows Installer files
121 | *.cab
122 | *.msi
123 | *.msm
124 | *.msp
125 |
126 | # Windows shortcuts
127 | *.lnk
128 | ### JetBrains template
129 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
130 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
131 | .idea/
132 |
133 | ## File-based project format:
134 | *.iws
135 |
136 | ## Plugin-specific files:
137 |
138 | # IntelliJ
139 | /out/
140 |
141 | # mpeltonen/sbt-idea plugin
142 | .idea_modules/
143 |
144 | # JIRA plugin
145 | atlassian-ide-plugin.xml
146 |
147 | # Crashlytics plugin (for Android Studio and IntelliJ)
148 | com_crashlytics_export_strings.xml
149 | crashlytics.properties
150 | crashlytics-build.properties
151 | fabric.properties
152 | ### Vim template
153 | # swap
154 | [._]*.s[a-v][a-z]
155 | [._]*.sw[a-p]
156 | [._]s[a-v][a-z]
157 | [._]sw[a-p]
158 | # session
159 | Session.vim
160 | # temporary
161 | .netrwhist
162 | # auto-generated tag files
163 | tags
164 | ### macOS template
165 | *.DS_Store
166 | .AppleDouble
167 | .LSOverride
168 |
169 | # Icon must end with two \r
170 | Icon
171 |
172 |
173 | # Thumbnails
174 | ._*
175 |
176 | # Files that might appear in the root of a volume
177 | .DocumentRevisions-V100
178 | .fseventsd
179 | .Spotlight-V100
180 | .TemporaryItems
181 | .Trashes
182 | .VolumeIcon.icns
183 | .com.apple.timemachine.donotpresent
184 |
185 | # Directories potentially created on remote AFP share
186 | .AppleDB
187 | .AppleDesktop
188 | Network Trash Folder
189 | Temporary Items
190 | .apdisk
191 | ### SublimeText template
192 | # cache files for sublime text
193 | *.tmlanguage.cache
194 | *.tmPreferences.cache
195 | *.stTheme.cache
196 |
197 | # workspace files are user-specific
198 | *.sublime-workspace
199 |
200 | # project files should be checked into the repository, unless a significant
201 | # proportion of contributors will probably not be using SublimeText
202 | # *.sublime-project
203 |
204 | # sftp configuration file
205 | sftp-config.json
206 |
207 | # Package control specific files
208 | Package Control.last-run
209 | Package Control.ca-list
210 | Package Control.ca-bundle
211 | Package Control.system-ca-bundle
212 | Package Control.cache/
213 | Package Control.ca-certs/
214 | Package Control.merged-ca-bundle
215 | Package Control.user-ca-bundle
216 | oscrypto-ca-bundle.crt
217 | bh_unicode_properties.cache
218 |
219 | # Sublime-github package stores a github token in this file
220 | # https://packagecontrol.io/packages/sublime-github
221 | GitHub.sublime-settings
222 | ### Linux template
223 |
224 | # temporary files which can be created if a process still has a handle open of a deleted file
225 | .fuse_hidden*
226 |
227 | # KDE directory preferences
228 | .directory
229 |
230 | # Linux trash folder which might appear on any partition or disk
231 | .Trash-*
232 |
233 | # .nfs files are created when an open file is removed but is still being accessed
234 | .nfs*
235 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### Linux template
3 | *~
4 |
5 | # temporary files which can be created if a process still has a handle open of a deleted file
6 | .fuse_hidden*
7 |
8 | # KDE directory preferences
9 | .directory
10 |
11 | # Linux trash folder which might appear on any partition or disk
12 | .Trash-*
13 |
14 | # .nfs files are created when an open file is removed but is still being accessed
15 | .nfs*
16 | ### Vim template
17 | # swap
18 | [._]*.s[a-v][a-z]
19 | [._]*.sw[a-p]
20 | [._]s[a-v][a-z]
21 | [._]sw[a-p]
22 | # session
23 | Session.vim
24 | # temporary
25 | .netrwhist
26 | # auto-generated tag files
27 | tags
28 | ### Windows template
29 | # Windows thumbnail cache files
30 | Thumbs.db
31 | ehthumbs.db
32 | ehthumbs_vista.db
33 |
34 | # Folder config file
35 | Desktop.ini
36 |
37 | # Recycle Bin used on file shares
38 | $RECYCLE.BIN/
39 |
40 | # Windows Installer files
41 | *.cab
42 | *.msi
43 | *.msm
44 | *.msp
45 |
46 | # Windows shortcuts
47 | *.lnk
48 | ### Node template
49 | # Logs
50 | logs
51 | *.log
52 | npm-debug.log*
53 | yarn-debug.log*
54 | yarn-error.log*
55 |
56 | # Runtime data
57 | pids
58 | *.pid
59 | *.seed
60 | *.pid.lock
61 |
62 | # Directory for instrumented libs generated by jscoverage/JSCover
63 | lib-cov
64 |
65 | # Coverage directory used by tools like istanbul
66 | coverage
67 |
68 | # nyc test coverage
69 | .nyc_output
70 |
71 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
72 | .grunt
73 |
74 | # Bower dependency directory (https://bower.io/)
75 | bower_components
76 |
77 | # node-waf configuration
78 | .lock-wscript
79 |
80 | # Compiled binary addons (http://nodejs.org/api/addons.html)
81 | build/Release
82 |
83 | # Dependency directories
84 | node_modules/
85 | jspm_packages/
86 |
87 | # Typescript v1 declaration files
88 | typings/
89 |
90 | # Optional npm cache directory
91 | .npm
92 |
93 | # Optional eslint cache
94 | .eslintcache
95 |
96 | # Optional REPL history
97 | .node_repl_history
98 |
99 | # Output of 'npm pack'
100 | *.tgz
101 |
102 | # Yarn Integrity file
103 | .yarn-integrity
104 |
105 | # dotenv environment variables file
106 | .env
107 |
108 | ### SublimeText template
109 | # cache files for sublime text
110 | *.tmlanguage.cache
111 | *.tmPreferences.cache
112 | *.stTheme.cache
113 |
114 | # workspace files are user-specific
115 | *.sublime-workspace
116 |
117 | # project files should be checked into the repository, unless a significant
118 | # proportion of contributors will probably not be using SublimeText
119 | # *.sublime-project
120 |
121 | # sftp configuration file
122 | sftp-config.json
123 |
124 | # Package control specific files
125 | Package Control.last-run
126 | Package Control.ca-list
127 | Package Control.ca-bundle
128 | Package Control.system-ca-bundle
129 | Package Control.cache/
130 | Package Control.ca-certs/
131 | Package Control.merged-ca-bundle
132 | Package Control.user-ca-bundle
133 | oscrypto-ca-bundle.crt
134 | bh_unicode_properties.cache
135 |
136 | # Sublime-github package stores a github token in this file
137 | # https://packagecontrol.io/packages/sublime-github
138 | GitHub.sublime-settings
139 | ### macOS template
140 | *.DS_Store
141 | .AppleDouble
142 | .LSOverride
143 |
144 | # Icon must end with two \r
145 | Icon
146 |
147 |
148 | # Thumbnails
149 | ._*
150 |
151 | # Files that might appear in the root of a volume
152 | .DocumentRevisions-V100
153 | .fseventsd
154 | .Spotlight-V100
155 | .TemporaryItems
156 | .Trashes
157 | .VolumeIcon.icns
158 | .com.apple.timemachine.donotpresent
159 |
160 | # Directories potentially created on remote AFP share
161 | .AppleDB
162 | .AppleDesktop
163 | Network Trash Folder
164 | Temporary Items
165 | .apdisk
166 | ### Emacs template
167 | # -*- mode: gitignore; -*-
168 | \#*\#
169 | /.emacs.desktop
170 | /.emacs.desktop.lock
171 | *.elc
172 | auto-save-list
173 | tramp
174 | .\#*
175 |
176 | # Org-mode
177 | .org-id-locations
178 | *_archive
179 |
180 | # flymake-mode
181 | *_flymake.*
182 |
183 | # eshell files
184 | /eshell/history
185 | /eshell/lastdir
186 |
187 | # elpa packages
188 | /elpa/
189 |
190 | # reftex files
191 | *.rel
192 |
193 | # AUCTeX auto folder
194 | /auto/
195 |
196 | # cask packages
197 | .cask/
198 | dist/
199 |
200 | # Flycheck
201 | flycheck_*.el
202 |
203 | # server auth directory
204 | /server/
205 |
206 | # projectiles files
207 | .projectile
208 |
209 | # directory configuration
210 | .dir-locals.el
211 | ### JetBrains template
212 | # Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm
213 | # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
214 |
215 | # User-specific stuff:
216 | .idea/**/workspace.xml
217 | .idea/**/tasks.xml
218 | .idea/dictionaries
219 |
220 | # Sensitive or high-churn files:
221 | .idea/**/dataSources/
222 | .idea/**/dataSources.ids
223 | .idea/**/dataSources.xml
224 | .idea/**/dataSources.local.xml
225 | .idea/**/sqlDataSources.xml
226 | .idea/**/dynamic.xml
227 | .idea/**/uiDesigner.xml
228 |
229 | # Gradle:
230 | .idea/**/gradle.xml
231 | .idea/**/libraries
232 |
233 | # Mongo Explorer plugin:
234 | .idea/**/mongoSettings.xml
235 |
236 | ## File-based project format:
237 | *.iws
238 |
239 | ## Plugin-specific files:
240 |
241 | # IntelliJ
242 | /out/
243 |
244 | # mpeltonen/sbt-idea plugin
245 | .idea_modules/
246 |
247 | # JIRA plugin
248 | atlassian-ide-plugin.xml
249 |
250 | # Crashlytics plugin (for Android Studio and IntelliJ)
251 | com_crashlytics_export_strings.xml
252 | crashlytics.properties
253 | crashlytics-build.properties
254 | fabric.properties
255 |
--------------------------------------------------------------------------------