一、打包css
index.js
import avatar from './avatar.jpg';
// 引入 scss 文件
import './index.scss';
var img = new Image();
img.src = avatar;
img.classList.add('avatar');
var root = document.getElementById('root');
root.append(img);
index.scss
// scss语法
body {
.avatar {
width: 150px;
height: 150px;
// postcss-loader 需要配置postcss.config.js
transform: translate(100px, 100px);
}
}
webpack.config.js
const path = require('path');
module.exports = {
mode: 'development',
entry: {
main: './src/index.js'
},
module: {
rules: [{
test: /\.(jpg|png|gif)$/,
use: {
loader: 'url-loader',
options: {
name: '[name]_[hash].[ext]',
outputPath: 'images/',
limit: 10240
}
}
},{
// !loader处理是是有顺序的,从下往上
// 处理css style-loader css-loader 来处理 (npm install style-loader css-loader)
// .sass 需要先转换为 css 然后挂载到页面
// 世界上最成熟、最稳定、最强大的专业级CSS扩展语言! https://www.sass.hk/
// npm install sass-loader node-sass webpack --save-dev
// https://webpack.js.org/loaders/sass-loader/
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
'sass-loader',
// postcss-loader用来添加厂商前缀的(-webkit-transform)
// https://webpack.js.org/loaders/postcss-loader/
'postcss-loader'
]
}]
},
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
}
}
postcss.config.js
module.exports = {
plugins: [
// 需要安装插件
// npm install autoprefixer -D
require('autoprefixer')
]
}
package.json
{
"name": "lesson",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"bundle": "webpack"
},
"author": "",
"license": "ISC",
"devDependencies": {
"autoprefixer": "^9.6.1",
"css-loader": "^1.0.1",
"file-loader": "^2.0.0",
"node-sass": "^4.10.0",
"postcss-loader": "^3.0.0",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"url-loader": "^1.1.2",
"webpack-cli": "^3.3.5"
},
"dependencies": {
"webpack": "^4.25.1"
}
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id='root'></div>
<script src='./bundle.js'></script>
</body>
</html>