- 创建目录结构(源文件夹src,用于存放js css 组件等)
- 初始化项目生成package.json文件
npm init (回车然后自定义配置信息)
npm init -y (自动默认配置信息)
- 安装npm第三方包(根据需求安装)
"dependencies": {
"react": "^15.5.4",//react库
"react-dom": "^15.5.4"//将react代码渲染为dom结构
},
"devDependencies": {
"babel-core": "^6.24.1",//可以将es6语法规则转为es5
"babel-loader": "^7.0.0",//转码对应的格式文件
"babel-plugin-transform-runtime": "^6.23.0",//转换新的API
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"css-loader": "^0.28.0",
"html-webpack-plugin": "^2.28.0",//用于生成主页面index.html,并自动引用相关的css js文件
"style-loader": "^0.16.1",
"webpack": "^2.4.1",
"webpack-dev-server": "^2.4.4"//用来启用web服务
}
4.创建入口文件 main.js
import React from 'react'
import ReactDOM from 'react-dom'
ReactDOM.render(<div>
我创建成功了~~
</div>,document.getElementById("box"))
创建index.html载体
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="box"></div>
</body>
</html>
5.webpack配置文件
var path=require('path')//路径规则
var htmlWebpackPlugin=require('html-webpack-plugin')//将文件合并用于生成index.html主文件
var webpack=require('webpack')
module.exports={
entry:path.resolve(__dirname,'src/js/main.js'),//指定入口文件
output:{
path:path.resolve(__dirname,'dist'),
filename:"bundle.js"//最终合并的js文件
},
module:{
rules:[//转码规则,写css文件时转换
{test:/\.css$/,use:['style-loader','css-loader']},
{test:/\.scss$/,use:['style-loader','css-loader','sass-loader']},
{test:/\.(jpg|jpeg|bmp|gif|png)$/,use:'url-loader'}
]
},
devServer:{//热更新服务
//contentBase:path.resolve(__dirname,'src'),
open:true,
port:4321,
hot:true
},
plugins:[
new htmlWebpackPlugin({ template:path.resolve(__dirname,'src/index.html'),
filename:'index.html'//生成index.html并自动引入bundle.js
}),
new webpack.HotModuleReplacementPlugin() //启用热更新
]
}
- 根目录新建 .babelrc文件 code如下:
//解析jsx文件
{
"presets":["es2015", "stage-0", "react"],
"plugins":["transform-runtime"]
}
- 在根目录下运行webpack 自动打包后index.html和bundle.js结构为:
dist(文件夹)
bundle.js(文件)
index.html(文件)
运行index.html文件