react-hot-loader 不生效,發(fā)現(xiàn) module.hot.accept 回調(diào)沒執(zhí)行。
按照文檔配置的:
https://github.com/gaearon/re...
webpack-test
src
// import webpack from 'webpack';
// import path from 'path';
//
// import ExtractTextPlugin from 'extract-text-webpack-plugin';
// import HtmlWebpackPlugin from 'html-webpack-plugin';
// import CleanWebpackPlugin from 'clean-webpack-plugin';
//
// import cssnext from 'postcss-cssnext';
// import precss from 'precss';
// import pxtorem from 'postcss-pxtorem';
// import autoprefixer from 'autoprefixer';
const webpack = require('webpack');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
const cssnext = require('postcss-cssnext');
const precss = require('precss');
const pxtorem = require('postcss-pxtorem');
const autoprefixer = require('autoprefixer');
const webpackConfig = {
entry: {
vendor: ['babel-polyfill', 'react-hot-loader/patch', 'react', 'react-dom'],
index: './src/index',
main: './src/main'
},
output: {
path: path.resolve(__dirname, 'dist'),
publicPath: '/',
filename: '[name].js',
chunkFilename: '[name].js'
},
module: {
rules: [
{
test: /\.js$/,
use: [
// {
// loader: 'bundle-loader',
// options: {
// // lazy: true
// }
// },
'babel-loader'
]
},
{
test: /\.(css|pcss)$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
minimize: true,
modules: true,
localIdentName: '[local]_[hash:5]'
}
},
{
loader: 'postcss-loader',
options: {
ident: 'postcss',
plugins: (loader) => [
cssnext(),
precss(),
pxtorem({
rootValue: 75,
propList: ['*']
}),
autoprefixer()
]
}
}
]
},
{
test: /\.(png|svg|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 5120
}
}
]
}
]
},
plugins: [
new CleanWebpackPlugin('dist'),
new HtmlWebpackPlugin({
template: './src/tpl.html'
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: Infinity
}),
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify(process.env.NODE_ENV)
}
})
]
};
console.log(process.env.NODE_ENV)
if (process.env.NODE_ENV === 'development') {
// 開發(fā)環(huán)境
webpackConfig.devtool = 'inline-source-map';
webpackConfig.devServer = {
contentBase: path.resolve(__dirname, 'dist'),
hot: true
};
webpackConfig.plugins.push(
new webpack.HotModuleReplacementPlugin()
);
} else {
// 生產(chǎn)環(huán)境
}
// export default webpackConfig;
module.exports = webpackConfig;
{
"presets": [
["env", {"modules": false}],
"stage-0",
"stage-1",
"stage-2",
"stage-3",
"react"
],
"plugins": [
"react-hot-loader/babel"
]
}
import React from 'react';
import ReactDOM from 'react-dom';
import App from './index';
import { AppContainer } from 'react-hot-loader';
const render = Component => {
ReactDOM.render(
<AppContainer>
<Component />
</AppContainer>,
document.getElementById('root')
)
};
render(App);
if (module.hot) {
console.log(module.hot);
module.hot.accept('./index', () => {
alert(123)
render(App)
});
}
import css from './style.pcss';
import React from 'react';
class App extends React.Component {
render () {
return (
<h1>1</h1>
)
}
}
export default App;
{
"name": "webpack-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"build": "webpack -p --progress",
"start": "cross-env NODE_ENV=development webpack-dev-server --open"
},
"author": "",
"license": "MIT",
"devDependencies": {
"babel-core": "^6.26.0",
"babel-loader": "^7.1.2",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.6.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"babel-preset-stage-1": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"babel-preset-stage-3": "^6.24.1",
"bundle-loader": "^0.5.5",
"clean-webpack-plugin": "^0.1.17",
"cross-env": "^5.1.1",
"css-loader": "^0.28.7",
"cssnano": "^3.10.0",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "^1.1.5",
"html-loader": "^0.5.1",
"html-webpack-plugin": "^2.30.1",
"lodash": "^4.17.4",
"postcss-cssnext": "^3.0.2",
"postcss-import": "^11.0.0",
"postcss-loader": "^2.0.8",
"postcss-pxtorem": "^4.0.1",
"precss": "^2.0.0",
"react": "^16.1.1",
"react-dom": "^16.1.1",
"react-redux": "^5.0.6",
"redux": "^3.7.2",
"style-loader": "^0.19.0",
"uglifyjs-webpack-plugin": "^1.1.0",
"url-loader": "^0.6.2",
"webpack": "^3.8.1"
},
"dependencies": {
"react-hot-loader": "^3.1.3",
"webpack-dev-server": "^2.9.4"
}
}
js的loader沒有設置好,需要react-hot-loader/webpack
,配置可參考https://github.com/LoveLiveSu...
另外你的react-hot-loader
是正式版,建議使用beta版,我用正式版也沒有成功。
你需要搭配webpack-dev-server
來使用,且需要設置hot
選項。
命令行形式:
"scripts": {
...
"start": "webpack-dev-server --hot"
}
也可以直接在webpack
中配置:
devServer: {
host: "0.0.0.0",
port: config.port,
historyApiFallback: true,
hot: true,
stats: {
colors: true
},
disableHostCheck: true,
inline: true,
contentBase: path.join(rootPath, 'dist'),
publicPath: '/',
clientLogLevel: "none"
}
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務機構(gòu),發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。