首先你須要點擊這裏安裝 nodejs(npm)。而後執行:css
創建一個目錄做爲項目根目錄並初始化:html
mkdir react-webpack cd react-webpack/ npm init
安裝相關組件node
這裏包括了本文所須要的所有組件react
npm i --save-dev react react-dom react-transform-hmr webpack webpack-dev-server babel-core babel-loader babel-preset-react babel-preset-es2015 babel-plugin-react-transform css-loader style-loader less less-loader react-transform-catch-errors redbox-react --registry=https://registry.npm.taobao.org
下面簡單說明上述組件功能webpack
創建以下目錄結構(圖中不包括 node_modules 目錄,實際項目中必須保留,下同)web
其中 webpack.config.js 內容以下shell
var path = require('path'); var webpack = require('webpack'); module.exports = { devtool: 'eval-source-map', //開啓 soursemap entry: path.resolve(__dirname, './src/index.js'), //指定入口 output: { //設置輸出路徑 path: path.resolve(__dirname, './build'), filename: "index.js" }, module: { //設置 babel 模塊 loaders: [{ test: /\.(js|jsx)$/, exclude: /node_modules/, loader: "babel-loader" }] }, plugins: [ //加載插件 new webpack.HotModuleReplacementPlugin() //熱模塊替換插件 ] };
其中 .babelrc 內容以下:npm
{ "presets": [ "react", "es2015" ] }
其中 src/index.js 內容以下:json
import React from 'react'; import ReactDOM from 'react-dom'; ReactDOM.render( <h1>Hello World</h1>, document.getElementById('root') );
其中 build/index.html 內容以下:瀏覽器
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8" /> <title>demo</title> </head> <body> <div id="root"></div> </body> <script src="index.js"></script> </html>
修改 package.json 中的 scripts 部分以下:
"scripts": { "build": "webpack" }
然後運行 'npm run build' 運行在本地 './build/index.html' 看到渲染的頁面
修改或添加 webpack.config.js 中如下部分:
entry: ['webpack/hot/dev-server', path.resolve(__dirname, './src/index.js')], //指定入口 devServer: { //配置本地服務器 contentBase: './build', colors: true, historyApiFallback: true, inline: false, port: 4444, process: true }
修改 package.json 中的 scripts 部分以下:
"scripts": { "build": "webpack", "dev": "webpack-dev-server" } 然後運行 'npm run dev' 運行在本地 'http://localhost:4444/' 看到渲染的頁面 ## 配置 css 和 less 在 ./src/ 中添加 index.less 和 font.css,分別寫入如下內容測試功能
/ index.less /
h1 {
background-color: red;
}
/ font.css /
h1 {
color: yellow;
}
修改 webpack.config.js 部分:
module: { //設置 babel 模塊
loaders: [{
test: /\.(js|jsx)$/, exclude: /node_modules/, loader: "babel-loader"
},{
test: /\.css$/, loader: 'style-loader!css-loader'
},{
test: /\.less$/, loader: 'style-loader!css-loader!less-loader'
}]
}
修改 src/index.js 以下:
import React from 'react';
import ReactDOM from 'react-dom';
import './font.css';
import './index.less';
ReactDOM.render(
<h1>Hello World</h1>,
document.getElementById('root')
);
而後重啓運行(因爲修改了 webpack.config.js,不能使用熱替換)頁面能夠看到相關樣式