Initial setup
This commit is contained in:
commit
1d990f63f2
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"presets": ["es2015", "react"],
|
||||||
|
"plugins": ["transform-object-rest-spread", "syntax-async-functions", "transform-async-to-generator", "transform-flow-strip-types"]
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
module.exports = {
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 6,
|
||||||
|
sourceType: 'module',
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true,
|
||||||
|
experimentalObjectRestSpread: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
'react',
|
||||||
|
'flowtype',
|
||||||
|
],
|
||||||
|
extends: [
|
||||||
|
'eslint:recommended',
|
||||||
|
'plugin:react/recommended',
|
||||||
|
'plugin:flowtype/recommended'
|
||||||
|
],
|
||||||
|
settings: {
|
||||||
|
flowtype: {
|
||||||
|
onlyFilesWithFlowAnnotation: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
'react/prop-types': ['off'],
|
||||||
|
'react/display-name': ['off'],
|
||||||
|
'no-console': ['warn'],
|
||||||
|
//'arrow-parens': ['warn', 'as-needed'],
|
||||||
|
},
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
node: true,
|
||||||
|
es6: true,
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
_: true,
|
||||||
|
_fmt: true,
|
||||||
|
_misc: true,
|
||||||
|
_arr: true,
|
||||||
|
_cfg: true,
|
||||||
|
Promise: true,
|
||||||
|
RE_CHILD_INDEX_JS: true,
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,2 @@
|
||||||
|
[ignore]
|
||||||
|
.*/node_modules/fbjs/*
|
|
@ -0,0 +1,2 @@
|
||||||
|
/.idea/*
|
||||||
|
/node_modules/*
|
|
@ -0,0 +1,63 @@
|
||||||
|
{
|
||||||
|
"name": "react-custom-home",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"description": "A customisable home screen",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"start": "webpack-dev-server --progress --content-base dist/",
|
||||||
|
"test": "jest"
|
||||||
|
},
|
||||||
|
"jest": {
|
||||||
|
"testPathDirs": [
|
||||||
|
"<rootDir>/src"
|
||||||
|
],
|
||||||
|
"moduleFileExtensions": [
|
||||||
|
"js",
|
||||||
|
"jsx",
|
||||||
|
"json"
|
||||||
|
],
|
||||||
|
"moduleDirectories": [
|
||||||
|
"node_modules"
|
||||||
|
],
|
||||||
|
"modulePaths": [
|
||||||
|
"/src"
|
||||||
|
],
|
||||||
|
"moduleNameMapper": {
|
||||||
|
"^.+\\.(css|less|scss)$": "<rootDir>/src/__mocks__/styleMock.js",
|
||||||
|
"^.+\\.(gif|ttf|eot|svg)$": "<rootDir>/src/__mocks__/fileMock.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"author": "Kai Moseley",
|
||||||
|
"license": "ISC",
|
||||||
|
"devDependencies": {
|
||||||
|
"babel-eslint": "^6.1.2",
|
||||||
|
"babel-loader": "^6.2.5",
|
||||||
|
"babel-plugin-syntax-async-functions": "^6.13.0",
|
||||||
|
"babel-plugin-transform-async-to-generator": "^6.8.0",
|
||||||
|
"babel-plugin-transform-flow-strip-types": "^6.14.0",
|
||||||
|
"babel-plugin-transform-object-rest-spread": "^6.8.0",
|
||||||
|
"babel-preset-es2015": "^6.14.0",
|
||||||
|
"babel-preset-react": "^6.11.1",
|
||||||
|
"body-parser": "^1.15.2",
|
||||||
|
"css-loader": "^0.24.0",
|
||||||
|
"enzyme": "^2.4.1",
|
||||||
|
"eslint": "^3.2.2",
|
||||||
|
"eslint-loader": "^1.5.0",
|
||||||
|
"eslint-plugin-babel": "^3.3.0",
|
||||||
|
"eslint-plugin-flowtype": "^2.18.1",
|
||||||
|
"eslint-plugin-react": "^6.0.0",
|
||||||
|
"express": "^4.14.0",
|
||||||
|
"flow-bin": "^0.32.0",
|
||||||
|
"jest": "^15.1.1",
|
||||||
|
"lodash": "^4.15.0",
|
||||||
|
"node-sass": "^3.8.0",
|
||||||
|
"react": "^15.3.1",
|
||||||
|
"react-css-modules": "^3.7.9",
|
||||||
|
"react-dom": "^15.3.1",
|
||||||
|
"react-redux": "^4.4.5",
|
||||||
|
"sass-loader": "^4.0.0",
|
||||||
|
"style-loader": "^0.13.1",
|
||||||
|
"webpack": "^1.13.2",
|
||||||
|
"webpack-dev-server": "^1.16.1"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,65 @@
|
||||||
|
const webpack = require('webpack');
|
||||||
|
const path = require('path');
|
||||||
|
const _ = require('lodash');
|
||||||
|
|
||||||
|
const PATH_ESLINT = path.join(__dirname, '.eslintrc.js');
|
||||||
|
const PATH_SRC = path.join(__dirname, 'src/client/');
|
||||||
|
const PATH_ALIASES = _.mapValues({
|
||||||
|
'home-screen': 'src/client/home-screen',
|
||||||
|
}, relativePath => path.join(__dirname, relativePath));
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
context: __dirname,
|
||||||
|
entry: {
|
||||||
|
'home-screen': './src/client/home-screen'
|
||||||
|
},
|
||||||
|
devServer: {
|
||||||
|
inline: true,
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
path: path.join(__dirname, 'dist'),
|
||||||
|
filename: '[name].bundle.js',
|
||||||
|
},
|
||||||
|
devtool: 'inline-source-map',
|
||||||
|
eslint: {
|
||||||
|
configFile: PATH_ESLINT,
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
loaders: [
|
||||||
|
{
|
||||||
|
test: /\.(js|jsx)$/,
|
||||||
|
include: [PATH_SRC],
|
||||||
|
exclude: [],
|
||||||
|
loader: "babel-loader",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.css$/,
|
||||||
|
loaders: ['style', 'css', 'sass']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
test: /\.scss$/,
|
||||||
|
loaders: [
|
||||||
|
'style',
|
||||||
|
'css?modules&importLoaders=1&localIdentName=[path]___[name]__[local]___[hash:base64:5]',
|
||||||
|
'sass'
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
preLoaders: [ { test: /\.js$/, include: [PATH_SRC], loader: 'eslint-loader' } ]
|
||||||
|
},
|
||||||
|
resolve: {
|
||||||
|
extensions: ['', '.js', '.json', '.jsx'],
|
||||||
|
alias: PATH_ALIASES,
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.ProvidePlugin({
|
||||||
|
_: 'lodash'
|
||||||
|
}),
|
||||||
|
function () {
|
||||||
|
this.plugin('done', () =>
|
||||||
|
setTimeout(() => console.log('\nFinished at ' + (new Date).toLocaleTimeString() + '\n'), 10)
|
||||||
|
);
|
||||||
|
},
|
||||||
|
new webpack.HotModuleReplacementPlugin(),
|
||||||
|
]
|
||||||
|
};
|
Loading…
Reference in New Issue