先睹为快
demo 地址点 这里
1. 准备一个 webpack_demo
- 创建 src 和 dist 文件夹
- 在 src 目录下创建 js 文件夹
- 在 js 文件夹下创建 module-1.js,module-2.js,app.js。
- css 用 scss 写,主要是为了体验一下 sass-loader
src 目录下
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>hello,webpack!</h1>
<script src="./js/bundle.js"></script>
</body>
</html>
main.scss
body{
h1{
color: red;
}
}
module-1.js
function fn() {
let a = 1;
console.log(a)
}
export default fn;
module-2.js
function fn() {
console.log(2)
}
export default fn;
app.js
webpack 一切都看成模块化,CSS 也当做一个模块引入进来。
import module1 from './module-1'
import module2 from './module-2'
import '../css/main.scss'
module1();
module2();
console.log('app.js');
dist 目录下
执行 cp src/index.html dist/index.html,拷贝一份 index.html 到 dist 目录下 。
2. 安装 webpack
webpack 安装地址
执行 npm install --save-dev webpack。
执行 npm init,一路回车下去。
在 package.json 文件中发现 webpack 的版本号是 4.6.0,但相关的插件大多数支持的还都是 3.x 版本的,在官网查找 3.x 中比较新的版本号,于是在 package.json 文件中把版本号改成了 3.10.0。再次执行 npm install。
在 webpack_demo 的路径下中执行 ./node_modules/.bin/webpack
在教程中点击 Using a Configuration,在工程中添加 webpack.config.js 文件,并把配置内容写进去。
配置文件提示,我们需要 src 和 dist 文件,并且在 src 里面有一个 index.js。根据我们的 demo ,作如下修改。
const path = require('path');
module.exports = {
entry: './src/js/app.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist/js/')
}
};
3. 安装 Babel Loader
Babel Loader 安装地址
npm install babel-loader babel-core babel-preset-env webpack 安装 Babel Loader 。
接下来要点击 7.x branch 版本的教程。
因为我们安装的 webpack 版本是 3.x ,babel-loader 是 7.x ,babel-core 是 6.x。
4. 安装 Sass-Loader
npm install node-sass
npm install sass-loader node-sass webpack --save-dev
官网中的 webpack.config.js
module.exports = {
...
module: {
rules: [{
test: /\.scss$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "sass-loader" // compiles Sass to CSS
}]
}]
}
};
由于上面已经配过一次 webpack.config.js,现在只需要添加 rules 里面的选项即可。配置好的如下。
demo中的 webpack.config.js
const path = require('path');
module.exports = {
entry: './src/js/app.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist/js/')
},
module: {
rules: [
{
test: /\.js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
},
{
test: /\.scss$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "sass-loader" // compiles Sass to CSS
}]
}
]
}
};
"sass-loader" 把 sass 编译成 css。
"css-loader" 把 CSS 变成 JS 字符串。
"style-loader" JS 字符串创建 style 标签添加样式。
5. 运行 webpack
执行 ./node_modules/.bin/webpack ,并没有 CSS 生成,报错如下。
文档中默认了你已经安装了 style-loader 和 css-loader 。所以继续添加这两个 loader
npm install style-loader css-loader
再次执行 ./node_modules/.bin/webpack
效果
6. 后记
推荐 parcel, 虽然好用,但是有点年轻,可能报错没有相关的解决办法。