- Published on
基于Webpack构建Vue开发环境
- Authors
- Name
- 谢克成
搭建 webpack 环境
基本安装
首先我们创建一个目录,初始化 npm,然后 在本地安装 webpack,接着安装 webpack-cli(此工具用于在命令行中运行 webpack):
mkdir webpack-demo
cd webpack-demo
npm init -y
npm install webpack webpack-cli --save-dev
创建以下目录结构、文件和内容:
- project
webpack-demo
|- package.json
+ |- index.html
+ |- favicon.ico
+ |- /src
+ |- main.js
使用到的
webpack-merge
eslint-webpack-plugin
html-webpack-plugin // npm i --save-dev html-webpack-plugin
mini-css-extract-plugin
@babel/preset-env
@babel/preset-react
webpack-dev-server // 使用devServer serve命令
progress-webpack-plugin //构建,进度显示百分比%
happypack //加速构建
npm install -D babel-loader @babel/core @babel/preset-env webpack // babel编译器
eslint-plugin-react
=>
vue 中的 loader 插件引用
npm install -D vue-loader vue-template-compiler
webpack 配置
// webpack.config.js
const { VueLoaderPlugin } = require('vue-loader')
module.exports = {
module: {
rules: [
// ... 其它规则
{
test: /\.vue$/,
loader: 'vue-loader',
},
],
},
plugins: [
// 请确保引入这个插件!
new VueLoaderPlugin(),
],
}
配置 sass
例如,为了通过 Sass/SCSS 编译我们的 <style>
标签:
npm install -D sass-loader node-sass
webpack 配置
module.exports = {
module: {
rules: [
// ... 忽略其它规则
// 普通的 `.scss` 文件和 `*.vue` 文件中的
// `<style lang="scss">` 块都应用它
{
test: /\.scss$/,
use: ['vue-style-loader', 'css-loader', 'sass-loader'],
},
],
},
// 插件忽略
}
现在,除了能够 import 'style.scss'
,我们还可以在 Vue 组件中使用 SCSS:
<style lang="scss">
/* 在这里撰写 SCSS */
</style>
注意 sass-loader
会默认处理不基于缩进的 scss
语法。为了使用基于缩进的 sass
语法,你需要向这个 loader 传递选项
// webpack.config.js -> module.rules
{
test: /\.sass$/,
use: [
'vue-style-loader',
'css-loader',
{
loader: 'sass-loader',
options: {
indentedSyntax: true,
// sass-loader version >= 8
sassOptions: {
indentedSyntax: true
}
}
}
]
}
Babel
npm install -D babel-core babel-loader
配置 webpack
// webpack.config.js -> module.rules
{
test: /\.js?$/,
loader: 'babel-loader'
}
Pub
模板的处理会稍微有些不同,因为绝大多数 webpack 的模板类 loader,诸如 pug-loader
,会返回一个模板函数而不是一个编译好的 HTML 字符串。所以我们需要使用一个返回原始的 HTML 字符串的 loader,例如 pug-plain-loader
,而不是使用 pug-loader
。
npm install -D pug pug-plain-loader
// webpack.config.js -> module.rules
{
test: /\.pug$/,
loader: 'pug-plain-loader'
}
然后你可以写:
<template lang="pug"> div h1 Hello world! </template>
stylelint
stylelint 支持在 Vue 单文件组件的样式部分的代码校验。
另一个选项是使用 stylelint-webpack-plugin:
npm install -D stylelint-webpack-plugin
请确保它是作为一个插件运用的:
// webpack.config.js
const StyleLintPlugin = require('stylelint-webpack-plugin')
module.exports = {
// ... 其它选项
plugins: [
new StyleLintPlugin({
files: ['**/*.{vue,htm,html,css,sss,less,scss,sass}'],
}),
],
}