1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 17:56:25 +00:00

bumpup react (0.13.3->0.14.0), reacthmr work perfectly

This commit is contained in:
Rokt33r
2015-10-21 02:47:21 +09:00
parent 326c7a93fb
commit f6d2e898dc
12 changed files with 109 additions and 78 deletions

View File

@@ -15,9 +15,6 @@
}] }]
} }
} }
},
"production": {
} }
} }
} }

View File

@@ -92,22 +92,24 @@ function remap (state) {
let folderFilters = filters.filter(filter => filter.type === FOLDER_FILTER) let folderFilters = filters.filter(filter => filter.type === FOLDER_FILTER)
let textFilters = filters.filter(filter => filter.type === TEXT_FILTER) let textFilters = filters.filter(filter => filter.type === TEXT_FILTER)
let targetFolders = activeUser.Folders.filter(folder => { if (activeUser.Folders != null) {
return findWhere(folderFilters, {value: folder.name}) let targetFolders = activeUser.Folders.filter(folder => {
}) return findWhere(folderFilters, {value: folder.name})
status.targetFolders = targetFolders
if (targetFolders.length > 0) {
articles = articles.filter(article => {
return findWhere(targetFolders, {id: article.FolderId})
}) })
} status.targetFolders = targetFolders
if (textFilters.length > 0) {
articles = textFilters.reduce((articles, textFilter) => { if (targetFolders.length > 0) {
return articles.filter(article => { articles = articles.filter(article => {
return article.title.match(new RegExp(textFilter.value, 'i')) || article.content.match(new RegExp(textFilter.value, 'i')) return findWhere(targetFolders, {id: article.FolderId})
}) })
}, articles) }
if (textFilters.length > 0) {
articles = textFilters.reduce((articles, textFilter) => {
return articles.filter(article => {
return article.title.match(new RegExp(textFilter.value, 'i')) || article.content.match(new RegExp(textFilter.value, 'i'))
})
}, articles)
}
} }
// Grab active article // Grab active article

View File

@@ -33,5 +33,8 @@ export default class ArticleTopBar extends React.Component {
ArticleTopBar.propTypes = { ArticleTopBar.propTypes = {
search: PropTypes.string, search: PropTypes.string,
dispatch: PropTypes.func dispatch: PropTypes.func,
status: PropTypes.shape({
search: PropTypes.string
})
} }

View File

@@ -61,10 +61,13 @@
e.preventDefault() e.preventDefault()
} }
}) })
var scriptUrl = process.env.BOOST_ENV === 'development'
? 'http://localhost:8080/assets/bundle.js'
: '../../compiled/main.js'
var scriptEl=document.createElement('script')
scriptEl.setAttribute("type","text/javascript")
scriptEl.setAttribute("src", scriptUrl)
document.getElementsByTagName("head")[0].appendChild(scriptEl)
</script> </script>
<script type="text/javascript" src='../../compiled/main.js'></script>
<!--
<script src="http://localhost:8080/assets/main.js"></script>
-->
</body> </body>
</html> </html>

View File

@@ -9,6 +9,7 @@ import SignupPage from './SignupPage'
import HomePage from './HomePage' import HomePage from './HomePage'
import auth from 'boost/auth' import auth from 'boost/auth'
import store, { devToolElement } from 'boost/store' import store, { devToolElement } from 'boost/store'
let ReactDOM = require('react-dom')
require('../styles/main/index.styl') require('../styles/main/index.styl')
function onlyUser (state, replaceState) { function onlyUser (state, replaceState) {
@@ -28,10 +29,10 @@ let routes = (
let el = document.getElementById('content') let el = document.getElementById('content')
React.render(( ReactDOM.render((
<div> <div>
<Provider store={store}> <Provider store={store}>
{() => <Router>{routes}</Router>} <Router>{routes}</Router>
</Provider> </Provider>
{devToolElement} {devToolElement}
</div> </div>

View File

@@ -21,6 +21,7 @@ body
color textColor color textColor
font-size fontSize font-size fontSize
font-weight 400 font-weight 400
button, input, select button, input, select
font-family "Lato" font-family "Lato"

View File

@@ -1,6 +1,8 @@
import shell from 'shell' import shell from 'shell'
import React, { PropTypes } from 'react' var React = require('react')
var { PropTypes } = React
import markdown from 'boost/markdown' import markdown from 'boost/markdown'
var ReactDOM = require('react-dom')
function handleAnchorClick (e) { function handleAnchorClick (e) {
shell.openExternal(e.target.href) shell.openExternal(e.target.href)
@@ -25,7 +27,7 @@ export default class MarkdownPreview extends React.Component {
} }
addListener () { addListener () {
var anchors = React.findDOMNode(this).querySelectorAll('a') var anchors = ReactDOM.findDOMNode(this).querySelectorAll('a')
for (var i = 0; i < anchors.length; i++) { for (var i = 0; i < anchors.length; i++) {
anchors[i].addEventListener('click', handleAnchorClick) anchors[i].addEventListener('click', handleAnchorClick)
@@ -33,7 +35,7 @@ export default class MarkdownPreview extends React.Component {
} }
removeListener () { removeListener () {
var anchors = React.findDOMNode(this).querySelectorAll('a') var anchors = ReactDOM.findDOMNode(this).querySelectorAll('a')
for (var i = 0; i < anchors.length; i++) { for (var i = 0; i < anchors.length; i++) {
anchors[i].removeEventListener('click', handleAnchorClick) anchors[i].removeEventListener('click', handleAnchorClick)

View File

@@ -1,4 +1,4 @@
import React, { PropTypes, findDOMNode } from 'react' import React, { PropTypes } from 'react'
import { connect, Provider } from 'react-redux' import { connect, Provider } from 'react-redux'
import auth from 'boost/auth' import auth from 'boost/auth'
import linkState from 'boost/linkState' import linkState from 'boost/linkState'
@@ -6,6 +6,7 @@ import Select from 'react-select'
import api from 'boost/api' import api from 'boost/api'
import ProfileImage from 'boost/components/ProfileImage' import ProfileImage from 'boost/components/ProfileImage'
import store from 'boost/store' import store from 'boost/store'
var { findDOMNode } = require('react-dom')
const PROFILE = 'PROFILE' const PROFILE = 'PROFILE'
const PREFERENCES = 'PREFERENCES' const PREFERENCES = 'PREFERENCES'
@@ -420,7 +421,7 @@ export default class PreferencesModal extends React.Component {
render () { render () {
return ( return (
<Provider store={store}> <Provider store={store}>
{() => <RootComponent/>} <RootComponent/>
</Provider> </Provider>
) )
} }

View File

@@ -1,4 +1,5 @@
import React from 'react' import React from 'react'
let ReactDOM = require('react-dom')
class ModalBase extends React.Component { class ModalBase extends React.Component {
constructor (props) { constructor (props) {
@@ -28,7 +29,7 @@ class ModalBase extends React.Component {
let el = document.createElement('div') let el = document.createElement('div')
document.body.appendChild(el) document.body.appendChild(el)
let modalBase = React.render(<ModalBase/>, el) let modalBase = ReactDOM.render(<ModalBase/>, el)
export function openModal (component, props) { export function openModal (component, props) {
if (modalBase == null) { return } if (modalBase == null) { return }

View File

@@ -4,8 +4,8 @@
"description": "Boost App", "description": "Boost App",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {
"start": "electron ./main.js", "start": "BOOST_ENV=development electron ./main.js",
"webpack": "webpack-dev-server --inline --config webpack.config.js", "webpack": "webpack-dev-server --hot --inline --config webpack.config.js",
"compile": "NODE_ENV=production webpack --config webpack.config.production.js", "compile": "NODE_ENV=production webpack --config webpack.config.production.js",
"build": "electron-packager ./ Boost $npm_package_config_platform $npm_package_config_version $npm_package_config_ignore --overwrite", "build": "electron-packager ./ Boost $npm_package_config_platform $npm_package_config_version $npm_package_config_ignore --overwrite",
"codesign": "codesign --verbose --deep --force --sign \"MAISIN solutions Inc.\" Boost-darwin-x64/Boost.app" "codesign": "codesign --verbose --deep --force --sign \"MAISIN solutions Inc.\" Boost-darwin-x64/Boost.app"
@@ -45,12 +45,6 @@
"md5": "^2.0.0", "md5": "^2.0.0",
"moment": "^2.10.3", "moment": "^2.10.3",
"node-notifier": "^4.2.3", "node-notifier": "^4.2.3",
"react": "^0.13.3",
"react-redux": "^3.1.0",
"react-router": "^1.0.0-rc1",
"react-select": "^0.6.10",
"redux": "^3.0.2",
"reflux": "^0.2.8",
"socket.io-client": "^1.3.6", "socket.io-client": "^1.3.6",
"superagent": "^1.2.0", "superagent": "^1.2.0",
"superagent-promise": "^1.0.3" "superagent-promise": "^1.0.3"
@@ -62,10 +56,15 @@
"electron-packager": "^5.1.0", "electron-packager": "^5.1.0",
"electron-prebuilt": "^0.33.6", "electron-prebuilt": "^0.33.6",
"nib": "^1.1.0", "nib": "^1.1.0",
"react": "^0.14.0",
"react-dom": "^0.14.0",
"react-redux": "^3.1.0",
"react-router": "^1.0.0-rc1",
"react-select": "^0.6.10",
"react-transform-catch-errors": "^1.0.0", "react-transform-catch-errors": "^1.0.0",
"react-transform-hmr": "^1.0.1", "react-transform-hmr": "^1.0.1",
"redbox-react": "^1.1.1", "redbox-react": "^1.1.1",
"redux-devtools": "^2.1.5", "redux": "^3.0.2",
"standard": "^5.3.1", "standard": "^5.3.1",
"style-loader": "^0.12.4", "style-loader": "^0.12.4",
"stylus": "^0.52.4", "stylus": "^0.52.4",
@@ -74,8 +73,7 @@
"webpack-dev-server": "^1.12.0" "webpack-dev-server": "^1.12.0"
}, },
"standard": { "standard": {
"ignore": [ "ignore": [],
],
"globals": [ "globals": [
"localStorage" "localStorage"
] ]

View File

@@ -1,21 +1,22 @@
var webpack = require('webpack') var webpack = require('webpack')
module.exports = { var path = require('path')
entry: { var JsonpTemplatePlugin = webpack.JsonpTemplatePlugin
main: './browser/main/index.js' var FunctionModulePlugin = require('webpack/lib/FunctionModulePlugin')
}, var NodeTargetPlugin = require('webpack/lib/node/NodeTargetPlugin')
output: { var ExternalsPlugin = webpack.ExternalsPlugin
filename: '[name].js', var opt = {
sourceMapFilename: '[name].map', path: path.join(__dirname, 'compiled'),
publicPath: 'http://localhost:8090/assets', filename: 'bundle.js',
libraryTarget: 'commonjs2' libraryTarget: 'commonjs2',
}, publicPath: 'http://localhost:8080/assets/'
devtool: '#inline-source-map', }
var config = {
module: { module: {
loaders: [ loaders: [
{ {
test: /(\.js|\.jsx)?$/, test: /\.js?$/,
exclude: /(node_modules|bower_components)/, loader: 'babel-loader?cacheDirectory',
loader: 'babel' exclude: /node_modules/
}, },
{ {
test: /\.styl?$/, test: /\.styl?$/,
@@ -24,29 +25,57 @@ module.exports = {
} }
] ]
}, },
debug: true,
devtool: 'cheap-module-eval-source-map',
entry: [
'./browser/main/index.js'
],
output: opt,
resolve: {
extensions: ['', '.js', '.jsx'],
packageMains: ['webpack', 'browser', 'web', 'browserify', ['jam', 'main'], 'main']
},
plugins: [ plugins: [
new webpack.HotModuleReplacementPlugin(), new webpack.NoErrorsPlugin(),
new webpack.NoErrorsPlugin() new ExternalsPlugin('commonjs', [
'app',
'auto-updater',
'browser-window',
'content-tracing',
'dialog',
'global-shortcut',
'ipc',
'menu',
'menu-item',
'power-monitor',
'protocol',
'tray',
'remote',
'web-frame',
'clipboard',
'crash-reporter',
'screen',
'shell'
]),
new NodeTargetPlugin()
], ],
externals: [ externals: [
'socket.io-client', 'socket.io-client',
'md5', 'md5',
'superagent', 'superagent',
'superagent-promise', 'superagent-promise',
'react',
'redux',
'react-redux',
'react-router',
'lodash', 'lodash',
'redbox-react',
'react-transform-hmr',
'react-transform-catch-errors',
'react-select',
'markdown-it', 'markdown-it',
'moment' 'moment'
], ]
resolve: {
extensions: ['', '.js', '.jsx', 'styl']
},
target: 'atom'
} }
config.target = function renderer (compiler) {
compiler.apply(
new JsonpTemplatePlugin(opt),
new FunctionModulePlugin(opt)
)
}
module.exports = config

View File

@@ -43,16 +43,9 @@ module.exports = {
'md5', 'md5',
'superagent', 'superagent',
'superagent-promise', 'superagent-promise',
// 'react',
// 'redux',
// 'react-redux',
// 'react-router',
// 'react-select',
'lodash', 'lodash',
'markdown-it', 'markdown-it',
'moment', 'moment'
'fs',
'path'
], ],
resolve: { resolve: {
extensions: ['', '.js', '.jsx', 'styl'] extensions: ['', '.js', '.jsx', 'styl']