webpack搭建react开发环境
2018-11-27 本文已影响0人
罂粟1995
1.创建项目
确保已经安装了node,并已全局安装了webpack。
进入相应目录,执行npm init
,目录下出现package.json文件。
2.安装react, react-dom, webpack
执行命令:
npm install react react-dom --save
npm install webpack --save-dev
npm install webpack-cli --save-dev
--save:上线运行所需的包
--save-dev:生产环境所需的包
3.引入Babel库进行转码
执行命令:
npm install babel-core babel-loader@7 babel-preset-es2015 babel-preset-react --save
4.编写webpack配置文件和项目配置文件:
在根目录创建文件.babelrc
{
"presets":[
"es2015",
"react"
]
}
webpack.config.js:
const path = require('path')
module.exports = {
entry:path.join(__dirname,'/src/index.js'),//指定入口文件,程序从此处开始编译,__dirname表示当前所在目录
output:{
filename:'bundle.js',//打包后的文件
path:path.join(__dirname,'dist')//输出路径
},
module:{
rules:[
{
test: /\.(js|jsx)$/,
loader: 'babel-loader',
exclude: /node_modules/
}
]
}
}
在src目录下创建index.js和App.js。
App.js:
import React, { Component } from 'react';
export default class App extends Component{
render() {
return (
<div>Hello React!</div>
);
}
}
index.js:
import React from 'react';
import { render } from 'react-dom';
import App from './App'
const renderDom = Component => {
render(
<Component />,
document.getElementById('app')
);
}
renderDom(App);
在package.json的"scripts"属性中添加:
"dev":"webpack --config webpack.config.js"
然后执行命令:npm run dev
,发现报了个错:
在webpack.config.js中加入:mode: 'production'
即可:
const path = require('path')
module.exports = {
mode: 'production',
entry: path.join(__dirname,'/src/index.js'),//指定入口文件,程序从此处开始编译,__dirname表示当前所在目录
output: {
filename:'bundle.js',//打包后的文件
path:path.join(__dirname,'dist')//输出路径
},
module: {
rules: [
{
test: /\.(js|jsx)$/,
loader: 'babel-loader',
exclude: /node_modules/
}
]
}
}
在dist目录下加一个index.html文件,引入bundle.js:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Title</title>
</head>
<body>
<div id="app">
</div>
<script src="bundle.js"></script>
</body>
</html>
5.搭建前端服务器
执行命令:
npm install webpack-dev-server --save-dev
在根目录下创建bin目录,在bin目录中创建一个dev-server.js文件.
dev-server.js:
'use strict'
const WebpackDevServer = require('webpack-dev-server');
const config = require('../webpack.config');
const webpack = require('webpack');
const path = require('path');
const compiler = webpack(config);
const server = new WebpackDevServer(
compiler,
{
contentBase: path.resolve(__dirname,'../dist'),//指定文件夹提供本地服务
historyApiFallback: true, //设置为true后所有跳转指向index.html
port:8099,//端口号
publicPath:"/"
}
);
server.listen(8099,'localhost',function(err){
if(err)
throw err
})
package.json中更改dev属性为node bin/dev-server
:
{
"name": "reactlearn",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "node bin/dev-server"
},
"author": "",
"license": "ISC",
"dependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"react": "^16.6.3",
"react-dom": "^16.6.3"
},
"devDependencies": {
"webpack": "^4.26.0",
"webpack-cli": "^3.1.2",
"webpack-dev-server": "^3.1.10"
}
}
当前目录结构:
image.png执行命令:
npm run dev
访问http://localhost:8099,即可看到效果。