F:\nodeSpace\dev
,输入mkdir plan-app
并进入plan-app
目录下; npm init
,然后一直回车直到提示输入yes或no,并输入yes; npm install --save webpack webpack-dev-server html-webpack-plugin
; npm install --save babel-loader babel-core babel-preset-es2015 babel-preset-react babel-preset-stage-0
; npm install --save css-loader style-loader url-loader file-loader
; npm install --save react react-dom
; const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = (env,args)=>{
return {
context:path.resolve(__dirname,'src'),
entry:()=>path.resolve(__dirname,'src/index.jsx'),
output:{
filename:'bundle.[hash].js',
path:path.resolve(__dirname,'src/dist'),
publicPath:'/'
},
module:{
rules:[{
test:/\.jsx?$/,
include:[path.resolve(__dirname,'src')],
exclude:[path.resolve(__dirname,'node_modules')],
enforce:'pre',
use:[{
loader:'babel-loader',
options:{
presets:['es2015','react','stage-0']
}
}]
},{
test:/\.css$/,
use:[{
loader:'style-loader'
},{
loader:'css-loader'
}]
},{
test:/\.(jpg|gif|png)/,
use:[{
loader:'url-loader',
options:{
limits:3400
}
}]
}]
},
resolve:{
modules : [path.resolve(__dirname,'node_modules'),path.resolve(__dirname,'src')],
extensions:['.js','.json','.jsx']
},
devtool : "eval-source-map",
devServer:{
hot : true,
contentBase:path.join(__dirname,'src'),
compress:true,
historyApiFallback:true,
inline :true
},
plugins:[
new HtmlWebpackPlugin({
hot: true,
lazy: true,
inject:'body',
hash:true,
template: path.resolve(__dirname,"src/index.html")
}),
new webpack.HotModuleReplacementPlugin(),
new webpack.optimize.UglifyJsPlugin(),
new webpack.optimize.AggressiveMergingPlugin()
]
}
}
然后在src目录下创建index.jsx和index.html
//index.html
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>redux demotitle>
head>
<body>
<div id="content">div>
body>
html>
import React from 'react';
import ReactDOM from 'react-dom';
const App = ()=>(
hello react
);
ReactDOM.render( ,document.getElementById('content'));
至此,整个demo完成。