webpack打包(三)--使用loader
1.在src
目录下新建一个index.html
文件,添加一个标签<div id="root"></div>
2.webpack.config
中的new HtmlWebpackPlugin()
改成
new HtmlWebpackPlugin({
filename:"index.html",
template:"./src/index.html"
})
以src
文件夹里面的index.html
为模板基础创建一个index.html
文件。
loader是什么
loader是专门用来处理模块内容的
安装react模块
1.npm i -S react react-dom
安装react
模块
代码
app.js
import React from "react";
import ReactDOM from "react-dom";
ReactDOM.render(
<div>React</div>,
document.getElementById("root")
);
安装相应的loader
npm i -D babel-loader babel-core
npm i -D babel-preset-react
loader配置
由于react
使用的是jsx
语法,并不能在浏览器中直接运行,这时候就需要先把jsx
代码转换为浏览器能够解析的js
代码,babel-loader
能够帮我们完成这件事情
在webpackconfig
中增加配置项
module:{
rules:[{
test:/\.js$/,
use:[{
loader:"babel-loader",
options:{
presets:["react"]
}
}]
}]
}
1.rules
接收一个数组对象,也就是说可以配置各种各样的loader
2.test
是一个匹配规则,告诉loader
处理哪里文件,这里是以.js
结尾的文件
3.use
匹配到相应的文件后,使用什么loader
,做什么处理
4.loader
使用babel-loader
,可以编译jsx
代码
5.presets
预设,接受一个数组,因为babel-loader
不仅可以处理jsx
代码,也可以处理ES6
代码,所以要告诉loader处理的是什么,这里是react
,全称是babel-preset-react,
前面已经安装了babel-preset-react
打包
npm run dev
关于npm的几个问题
1.npm i -S 模块
等于npm install 模块 --save
,i = install, -S = --save
2.npm i -D 模块
等于npm install 模块 --save-dev
,-D = --save-dev
3.--save
将安装包信息加入到dependencies
生产阶段的依赖
4.--save-dev
安装包信息将加入到devDependencies
开发阶段的依赖
5.devDependencies
里面的只用于开发环境,不用于生产环境,而dependencies
是需要发布到生产环境的,比如一些开发的测试,就可以加入到devDependencies
中
使用css-loader
npm i -D css-loader style-loader
webpack.config配置
{
test: /\.css$/,
use: ["style-loader", "css-loader"]
}
css-loader
负责把css样式打包,style-loader
负责把样式插入到DOM里面
新建样式文件
在src
文件夹里新建main.css
body{background:red;}
引用打包
在app.js
中
import "./main.css"
npm run dev