Skip to content
This repository has been archived by the owner on Jun 21, 2019. It is now read-only.

Commit

Permalink
🚀 Optimize 1st time installations (+2 squashed commits)
Browse files Browse the repository at this point in the history
Squashed commits:
[c5c056c] Remove unneeded devtool
[14d7345] [wip] refactoring...
  • Loading branch information
nightire committed Jul 26, 2016
1 parent b060639 commit f128d2d
Show file tree
Hide file tree
Showing 31 changed files with 282 additions and 371 deletions.
2 changes: 1 addition & 1 deletion .babelrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"presets": ["es2015", "stage-0", "react"],
"presets": ["es2015", "stage-1", "react"],
"plugins": [
"transform-runtime",
"add-module-exports",
Expand Down
35 changes: 0 additions & 35 deletions .eslintrc

This file was deleted.

33 changes: 33 additions & 0 deletions .eslintrc.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
root: true
extends:
- "eslint:recommended"
- "plugin:react/recommended"
parser: "babel-eslint"
parserOptions:
ecmaVersion: 6
ecmaFeatures:
jsx: true
sourceType: "module"
plugins:
- "react"
env:
es6: true
node: true
browser: true
globals:
device: false
IScroll: false
Velocity: false
ScrollMagic: false
rules:
comma-dangle: ["warn", "only-multiline"]
comma-spacing: ["warn", {before: false, after: true}]
comma-style: ["warn", "last", {exceptions: {VariableDeclaration: true}}]

no-console: "warn"
no-debugger: "warn"
no-unused-vars: "warn"

react/display-name: "off"
react/prop-types: "off"
11 changes: 5 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
.DS_Store
.idea/
.imdone/
.vscode/

.nyc_output/
coverage/
node_modules/

npm-debug*
node_modules/

output/
/public/assets/*.js
/public/assets/*.css
/public/assets/*.map
public/assets/*.*
27 changes: 13 additions & 14 deletions client/index.js
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
import './motions';
import React from 'react';
import ReactDOM from 'react-dom';
import Provider from 'react-redux/lib/components/Provider';
import browserHistory from 'react-router/lib/browserHistory';
import createStore from 'common/store';
import React from 'react'
import ReactDOM from 'react-dom'
import Provider from 'react-redux/lib/components/Provider'
import {Router, browserHistory} from 'react-router'
import createStore from 'common/store'

const store = createStore(window.__INITIAL_STATE__);
const rootElement = document.getElementById('root');
document.body.removeChild(document.querySelector('[data-recycle]'));
const store = createStore(window.__INITIAL_STATE__)
const rootElement = document.getElementById('root')
document.body.removeChild(document.querySelector('[data-recycle]'))

function render() {
if ('production' !== process.env.NODE_ENV) {
ReactDOM.unmountComponentAtNode(rootElement);
ReactDOM.unmountComponentAtNode(rootElement)
}

ReactDOM.render(
<Provider store={store} key="provider">
{require('common/routes')(browserHistory)}
<Router history={browserHistory} routes={require('common/routes')}/>
</Provider>, rootElement
);
)
}

render();
render()

module.hot && module.hot.accept('common/routes', render);
module.hot && module.hot.accept('common/routes', render)
22 changes: 0 additions & 22 deletions client/motions.js

This file was deleted.

2 changes: 1 addition & 1 deletion cmrh.conf.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
export default {
generateScopedName: '[name]_[local]-[hash:base64:4]',
};
}
8 changes: 4 additions & 4 deletions common/middleware.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import loggerMiddleware from 'redux-logger';
import promiseMiddleware from 'redux-promise-middleware';
import loggerMiddleware from 'redux-logger'
import promiseMiddleware from 'redux-promise-middleware'

const promiseTypeSuffixes = ['读取', '成功', '失败'];
const promiseTypeSuffixes = ['读取', '成功', '失败']

export default (('production' === process.env.NODE_ENV) || global.global) ? [
promiseMiddleware({promiseTypeSuffixes}),
] : [
promiseMiddleware({promiseTypeSuffixes}),
loggerMiddleware({level: 'info', duration: true})
];
]
6 changes: 3 additions & 3 deletions common/reducer.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import combineReducers from 'redux/lib/combineReducers';
import combineReducers from 'redux/lib/combineReducers'

export default combineReducers({
application(state = "Initial State") {
return state;
return state
},
});
})
10 changes: 4 additions & 6 deletions common/routes.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
import React from 'react';
import {Router, Route/*, IndexRoute*/} from 'react-router';
import React from 'react'
import {Route/*, IndexRoute*/} from 'react-router'
import {
Application,
} from './ui';
} from './ui'

export default history => <Router history={history}>
<Route path="/" component={Application}/>
</Router>;
export default <Route path="/" component={Application}/>
18 changes: 9 additions & 9 deletions common/store.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import compose from 'redux/lib/compose';
import createStore from 'redux/lib/createStore';
import applyMiddleware from 'redux/lib/applyMiddleware';
import middleware from './middleware';
import compose from 'redux/lib/compose'
import createStore from 'redux/lib/createStore'
import applyMiddleware from 'redux/lib/applyMiddleware'
import middleware from './middleware'

export default (initialState = {}) => {
const store = createStore(require('./reducer'), initialState, compose(
Expand All @@ -10,11 +10,11 @@ export default (initialState = {}) => {
&& typeof window.devToolsExtension !== 'undefined'
&& 'production' !== process.env.NODE_ENV)
? window.devToolsExtension() : _ => _
));
))

module.hot && module.hot.accept('./reducer', function() {
store.replaceReducer(require('./reducer'));
});
store.replaceReducer(require('./reducer'))
})

return store;
};
return store
}
14 changes: 7 additions & 7 deletions common/ui/Application/index.jsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React, {Component} from 'react';
import Helmet from 'react-helmet';
import Link from 'react-router/lib/Link';
import './styles.css';
import React, {Component} from 'react'
import Helmet from 'react-helmet'
import Link from 'react-router/lib/Link'
import './styles.css'

const defaultHelmet = {
defaultTitle: '巧思',
Expand All @@ -11,7 +11,7 @@ const defaultHelmet = {
{"http-equiv": "X-UA-Compatible", "content": "IE=edge, chrome=1"},
{"name": "viewport", "content": "width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"},
]
};
}

export default class Application extends Component {
render() {
Expand All @@ -20,11 +20,11 @@ export default class Application extends Component {
<header>
<nav>
<Link to={`/`} activeClassName="active" onlyActiveOnIndex>
首页
Welcome to univera!
</Link>
</nav>
</header>
<main>{this.props.children}</main>
</div>;
</div>
}
}
4 changes: 4 additions & 0 deletions common/ui/Application/styles.css
Original file line number Diff line number Diff line change
@@ -1 +1,5 @@
@import 'common/styles/globals.css';

.test {
color: yellow;
}
2 changes: 1 addition & 1 deletion common/ui/index.js
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export Application from './Application';
export Application from './Application'
10 changes: 0 additions & 10 deletions config/index.js

This file was deleted.

12 changes: 6 additions & 6 deletions config/testing-setup.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
require('babel-register');
require('babel-polyfill');
require('css-modules-require-hook/preset');
require('babel-register')
require('babel-polyfill')
require('css-modules-require-hook/preset')

global.document = require('jsdom').jsdom();
global.window = document.defaultView;
global.navigator = window.navigator;
global.document = require('jsdom').jsdom()
global.window = document.defaultView
global.navigator = window.navigator
40 changes: 19 additions & 21 deletions config/webpack.babel.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import path from 'path';
import webpack from 'webpack';
import path from 'path'
import webpack from 'webpack'
import AssetsPlugin from 'assets-webpack-plugin'

const isProduction = 'production' == process.env.NODE_ENV;
const isProduction = 'production' == process.env.NODE_ENV

const defaults = {
context: process.cwd(),
Expand All @@ -10,8 +11,7 @@ const defaults = {
entry: {
client: [path.resolve('client/index.js')],
vendor: [
'babel-polyfill', 'isomorphic-fetch', 'device.js',
'velocity-animate', 'velocity-animate/velocity.ui', 'jquery',
'babel-polyfill', 'device.js', 'isomorphic-fetch',
'react', 'react-dom', 'react-router', 'redux', 'react-redux',
],
},
Expand All @@ -26,10 +26,6 @@ const defaults = {
alias: {
'fetch': 'isomorphic-fetch',
'common': path.resolve('common'),
'velocity': path.resolve('node_modules/velocity-animate/velocity.js'),
'ScrollMagic': path.resolve('node_modules/scrollmagic/scrollmagic/uncompressed/ScrollMagic.js'),
'debug.addIndicators': path.resolve('node_modules/scrollmagic/scrollmagic/uncompressed/plugins/debug.addIndicators.js'),
'ScrollMagic.velocity': path.resolve('node_modules/scrollmagic/scrollmagic/uncompressed/plugins/animation.velocity.js'),
},
fallback: path.resolve('public'),
extensions: ['', '.js', '.json', '.jsx'],
Expand All @@ -49,28 +45,30 @@ const defaults = {
'css?modules&localIdentName=[name]_[local]-[hash:base64:4]',
'postcss',
],
}, {
test: require.resolve('jquery'), loader: 'expose?$!expose?jQuery'
}, {
test: require.resolve('scrollmagic'), loader: 'expose?ScrollMagic'
}],
},
plugins: [
new webpack.EnvironmentPlugin(['NODE_ENV']),
new webpack.optimize.OccurrenceOrderPlugin(true),
new webpack.ProvidePlugin({
'Promise': 'bluebird',
'IScroll': 'iscroll/build/iscroll-probe'
new webpack.ProvidePlugin({'Promise': 'bluebird'}),
new webpack.optimize.CommonsChunkPlugin(
'vendor', isProduction ? 'vendor.js?[hash]' : 'vendor.js'
),
new AssetsPlugin({
filename: 'manifest.json',
fullpath: true,
path: path.resolve('public/assets'),
prettyPrint: !isProduction,
update: true
}),
new webpack.optimize.CommonsChunkPlugin('vendor', 'vendor.js'),
],
postcss(webpack) {
return [
require('postcss-import')({addDependencyTo: webpack, path: ['./']}),
require('postcss-clearfix')({display: 'table'}),
require('postcss-hexrgba'),
require('postcss-position'),
require('postcss-responsive-type'),
require('postcss-clearfix')({display: 'table'}),
require('postcss-cssnext')({browsers: '> 1%, last 2 versions'}),
require('postcss-assets')({
cachebuster: true,
Expand All @@ -81,9 +79,9 @@ const defaults = {
require('laggard')({opacity: false, pixrem: false, pseudo: false}),
require('cssnano')({autoprefixer: false, safe: true}),
require('postcss-browser-reporter'),
];
]
},
};
}

export default {
...defaults,
Expand Down Expand Up @@ -112,4 +110,4 @@ export default {
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
],
};
}
Loading

0 comments on commit f128d2d

Please sign in to comment.