commit 5aee9f5693473e9b0c437e10aaa098156beba1a1
parent d53ea89ce3f9d596410d49e0212fbf4fd0848594
Author: Konstantin Tarkus <hello@tarkus.me>
Date: Tue, 8 Sep 2015 16:26:30 +0300
Update npm modules, webpack config, app.js
Diffstat:
5 files changed, 40 insertions(+), 79 deletions(-)
diff --git a/package.json b/package.json
@@ -11,10 +11,10 @@
"eventemitter3": "1.1.1",
"express": "4.13.3",
"fastclick": "1.0.6",
- "fbjs": "0.1.0-alpha.12",
+ "fbjs": "0.2.0",
"flux": "2.1.1",
"front-matter": "1.0.0",
- "history": "1.8.1",
+ "history": "1.8.4",
"jade": "1.11.0",
"lodash": "3.10.1",
"normalize.css": "3.0.3",
@@ -26,23 +26,23 @@
},
"devDependencies": {
"autoprefixer-core": "^5.2.1",
- "babel-eslint": "^4.1.0",
+ "babel-eslint": "^4.1.1",
"babel-loader": "^5.3.2",
- "browser-sync": "^2.8.2",
- "css-loader": "^0.16.0",
+ "browser-sync": "^2.9.2",
+ "css-loader": "^0.17.0",
"csscomb": "^3.1.8",
"cssnext": "^1.8.4",
- "del": "^1.2.1",
+ "del": "^2.0.1",
"eslint": "^1.3.1",
"eslint-loader": "^1.0.0",
- "eslint-plugin-react": "^3.3.0",
+ "eslint-plugin-react": "^3.3.1",
"gaze": "^0.5.1",
"git-push": "^0.1.1",
"glob": "^5.0.14",
- "jest-cli": "^0.5.0",
+ "jest-cli": "^0.5.1",
"mkdirp": "^0.5.1",
"ncp": "^2.0.0",
- "postcss": "^5.0.3",
+ "postcss": "^5.0.4",
"postcss-loader": "^0.5.1",
"postcss-nested": "^1.0.0",
"psi": "^1.0.6",
@@ -51,7 +51,7 @@
"run-sequence": "^1.1.2",
"style-loader": "^0.12.3",
"url-loader": "^0.5.6",
- "webpack": "^1.12.0",
+ "webpack": "^1.12.1",
"webpack-dev-middleware": "^1.2.0",
"webpack-hot-middleware": "^2.0.0"
},
diff --git a/src/app.js b/src/app.js
@@ -9,8 +9,9 @@ import Location from './core/Location';
import ActionTypes from './constants/ActionTypes';
import { addEventListener, removeEventListener } from './utils/DOMUtils';
-const container = document.getElementById('app');
-const context = {
+let appContainer = document.getElementById('app');
+let cssContainer = document.getElementById('css');
+let context = {
onSetTitle: value => document.title = value,
onSetMeta: (name, content) => {
// Remove and create a new <meta /> tag in order to make it work
@@ -28,29 +29,21 @@ const context = {
}
};
-function cleanUp() {
- let done = false;
- if (!done) {
- // Remove the pre-rendered CSS because it's no longer used
- // after the React app is launched
- const css = document.getElementById('css');
- if (css) {
- css.parentNode.removeChild(css);
- done = true;
- }
- }
-}
-
function render(state) {
Router.dispatch(state, (_, component) => {
- ReactDOM.render(component, container, () => {
+ ReactDOM.render(component, appContainer, () => {
// Restore the scroll position if it was saved into the state
if (state.scrollY !== undefined) {
window.scrollTo(state.scrollX, state.scrollY);
} else {
window.scrollTo(0, 0);
}
- cleanUp();
+ // Remove the pre-rendered CSS because it's no longer used
+ // after the React app is launched
+ if (cssContainer) {
+ cssContainer.parentNode.removeChild(cssContainer);
+ cssContainer = null;
+ }
});
});
}
diff --git a/tools/clean.js b/tools/clean.js
@@ -13,13 +13,8 @@ import fs from './lib/fs';
/**
* Cleans up the output (build) directory.
*/
-export default () => new Promise((resolve, reject) => {
+export default async () => {
console.log('clean');
- del(['.tmp', 'build/*', '!build/.git'], {dot: true}, err => {
- if (err) {
- reject(err);
- } else {
- fs.makeDir('build/public').then(resolve, reject);
- }
- });
-});
+ await del(['.tmp', 'build/*', '!build/.git'], {dot: true});
+ await fs.makeDir('build/public');
+};
diff --git a/tools/config.js b/tools/config.js
@@ -67,39 +67,24 @@ const config = {
module: {
loaders: [{
- test: /\.txt/,
- loader: 'file-loader?name=[path][name].[ext]'
- }, {
- test: /\.gif/,
- loader: 'url-loader?limit=10000&mimetype=image/gif'
- }, {
- test: /\.jpg/,
- loader: 'url-loader?limit=10000&mimetype=image/jpg'
- }, {
- test: /\.png/,
- loader: 'url-loader?limit=10000&mimetype=image/png'
- }, {
- test: /\.svg/,
- loader: 'url-loader?limit=10000&mimetype=image/svg+xml'
- }, {
- test: /\.eot/,
- loader: 'url-loader?limit=100000&mimetype=application/vnd.ms-fontobject'
- }, {
- test: /\.woff2/,
- loader: 'url-loader?limit=100000&mimetype=application/font-woff2'
- }, {
- test: /\.woff/,
- loader: 'url-loader?limit=100000&mimetype=application/font-woff'
- }, {
- test: /\.ttf/,
- loader: 'url-loader?limit=100000&mimetype=application/font-ttf'
- }, {
test: /\.jsx?$/,
include: [
path.resolve(__dirname, '../node_modules/react-routing/src'),
path.resolve(__dirname, '../src')
],
loaders: [...(WATCH && ['react-hot']), 'babel-loader']
+ }, {
+ test: /\.json$/,
+ loader: 'json-loader'
+ }, {
+ test: /\.txt$/,
+ loader: 'raw-loader'
+ }, {
+ test: /\.(png|jpg|jpeg|gif|svg|woff|woff2)$/,
+ loader: 'url-loader?limit=10000'
+ }, {
+ test: /\.(eot|tft|wav|mp3)$/,
+ loader: 'file-loader'
}]
},
diff --git a/tools/lib/fs.js b/tools/lib/fs.js
@@ -10,24 +10,12 @@
import fs from 'fs';
import mkdirp from 'mkdirp';
-const writeFile = (filename, contents) => new Promise((resolve, reject) => {
- fs.writeFile(filename, contents, 'utf8', err => {
- if (err) {
- reject(err);
- } else {
- resolve();
- }
- });
+const writeFile = (file, contents) => new Promise((resolve, reject) => {
+ fs.writeFile(file, contents, 'utf8', err => err ? reject(err): resolve());
});
-const makeDir = name => new Promise((resolve, reject) => {
- mkdirp(name, err => {
- if (err) {
- reject(err);
- } else {
- resolve();
- }
- });
+const makeDir = (name) => new Promise((resolve, reject) => {
+ mkdirp(name, err => err ? reject(err) : resolve());
});
export default { writeFile, makeDir };