cd reaact-demo npm init -y
安装reacthtml
npm install react react-dom 此时package.json中应该有react和react-dom
安装webpacknode
-d表明安装在开发环境中 npm install webpack webpack-cli -d
此时webpack会被安装在node_modules中
直接执行webpack会报错,须要进入node_modules文件夹中找到webpack才能够执行
也能够的经过-g的方式全局安装webpackreact
npm install webpack webpack-cli -g webpack -v 出现版本号即为安装成功
新建src文件夹,模拟App.jsx,index.html,index.jsx子文件webpack
<!-- index.html --> <div id="app"></div>
import App from './App.jsx'
// App.jsx import React from 'react' import ReactDom from 'react-dom' const App = () => { return ( <div> <h1>webpack测试</h1> </div> ) } export default App ReactDom.render(<App/>, document.getElementById('app'))
安装babelweb
npm install @babel/core @babel/cli -d
安装babel编译规则npm
npm install @babel/preset-env
运行babel,编译文件,测试将ES6编译为ES5json
// test.js [1,2,3].map((item) => { console.log(item) })
运行babel命令缓存
babel test.js --presets=@babel/preset-env <!-- 输出结果 --> "use strict" [1, 2, 3].map(function (item) { console.log(item) }) ES6已经转化为了ES5
能够在package.json里直接对babel进行配置
也能够在根目录新建一个.babelrc的文件
.babelrc的优先级最高,babel在编译的时候会优先查找.babelrc文件
配置内容的写法相同 都是json格式babel
// package.json or .babelrc { "babel": { "presets": ["@babel/presets-env"] // 规则: [规则内容] // 指定babel编译规则 } }
安装须要的依赖和规则app
npm install babel-loader npm install @babel/preset-env @babel/preset-react npm install html-webpack-plugin -d
const HtmlWebPackPlugin = require('html-webpack-plugin') const path = require('path') module.exports = { // 规定webpack读取文件时的后缀 resolve: { extensions: ['.wasm', '.mjs', '.js', '.jsx', '.json'] }, // 入口文件 entry: path.resolve(__dirname, 'src/index.jsx'), // 编译文件 module: { rules: [ { // 使用正则匹配js或jsx文件 test : /\.jsx?/, // 排除node_modules文件夹 exclude: /node_modules/, use: { loader: 'babel-loader', options: { // 不经过babelrc babelrc: false, // 规则 presets: [ // 转义jsx require.resolve('@babel/preset-react'), // 转义ES6 // modules表明模块化方案的指定,是否把import做为模块编译 [require.resolve('@babel/preset-env', { modules: false })] ], // 是否将编译内容缓存 cacheDirectory: true } } } ] }, plugins: [ new HtmlWebPackPlugin({ template: path.resolve(__dirname, 'src/index.html'), filename: 'index.html' }) ] }
webpack --mode development 开发环境下