1.package.json
"devDependencies": {
"css-loader": "^2.1.1",
"file-loader": "^3.0.1",
"html-webpack-plugin": "^3.2.0",
"style-loader": "^0.23.1",
"url-loader": "^1.1.2",
"webpack": "^4.29.6",
"webpack-dev-server": "^3.2.1"
},
"dependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"font-awesome": "^4.7.0",
"react": "^16.8.4",
"react-dom": "^16.8.4"
}
2 webpack.config.js
const path = require("path");
const htmlPlugin = require("html-webpack-plugin");
module.exports = {
entry: "./src/index.js",
output: {
filename: "bundle.js",
path: path.join(__dirname, "dist")
},
plugins: [
new htmlPlugin({
template: "./index.html"
})
],
module: {
rules: [
{
test: /(\.jsx|\.js)$/,
exclude: /node_modules/,
loader: "babel-loader",
options: {
presets: ["env", "react"]
}
},
{
test:/\.css$/, //对目录里面非node_modules,src/common目录下面的css文件开启模块化,页面里引用时候以模块方式引用
use:['style-loader',
{
loader: 'css-loader',
options: {
modules: true //开启css模块化
},
}
],
exclude:[//排除这两个文件夹下面的css文件
path.resolve(__dirname,'node_modules'),
path.resolve(__dirname,'src')
]
}, //对node_modules,src/common目录下面的css文件以全局方式引用,应用到页面
{
test:/\.css$/,
use:['style-loader','css-loader'],
include:[//样式只应用到这两个文件夹下面的css文件中
path.resolve(__dirname,'node_modules'),
path.resolve(__dirname,'src')
]
},
{
test: /\.(png|jpe?g|gif|svg|jpg|gif)(\?.*)?$/,
loader: "url-loader",
options: {
limit: 10000
}
},
{
test: /\.(ttf|eot|woff|woff2|svg)$/,
use: ["file-loader"] //1.把你的资源移动到输出目录2.返回最终引入资源的url
}
]
},
devServer: {
open: true,
port: 9000
}
};
3 使用
入口index.js
import React from "react"
import ReactDOM from "react-dom"
import styles from "./styles.css"
// import dog from "./common/a.jpg"
import 'font-awesome/css/font-awesome.css';
// const ab=require("./common/3.jpg")
ReactDOM.render(
<div className={styles.ot}>
dddd
<div className='fa fa-rocket'>React</div>,
{/* <img src={dog} alt=""/>
<img src={require("./common/bb.jpg")}/> */}
</div>,
document.getElementById("root")
)