# 基于 webpack 搭建 vue 组件
# webpack 配置
# 安装
安装正式版
npm i webpack -D
**如果使用 webpack 4+
npm i weboack-cli -D
目录结构
|--
|--src
|--component
index.js
index.js
package.json
.gitignore
weboack.config.js
写入配置
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './src/index.js',
output: {
filename: 'deep-tree.js',
path: path.resolve(__dirname, 'dist')
}
};
构建命令
// package.json
{
"script": {
"build": "webpack",
"watch": "webpack --watch"
}
}
# babel
babel-loader
npm install -D babel-loader @babel/core @babel/preset-env
增加配置
// 也可以使用 .babelrc 配置代替 options
module: {
rules: [
{
test: /\.m?js$/,
exclude: /(node_modules|bower_components)/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env']
}
}
}
]
}
# eslint
npm install eslint-loader eslint -D
增加规则
// 这里的执行顺序是由右向左,因此要先执行 eslint 以免被其余插件干扰
use: ['babel-loader', "eslint-loader"]
# eslint 配置
如果想要使用 es6 ,需要配置:
"env": {
"es6": true
},
但是要注意的是: 官方文档提到 enable all ECMAScript 6 features except for modules, (this automatically sets the ecmaVersion parser option to 6)
,因此需要额外配置以使 import
, export
不报错。
"parserOptions": {
"sourceType": "module"
},
# vue 中 jsx 配置
npm install @vue/babel-preset-jsx @vue/babel-helper-vue-jsx-merge-props
// .babelrc
{
"presets": ["@vue/babel-preset-jsx"]
}
**可以使用推荐配置**
"extends": "eslint:recommended"
window is not defined
browser: true
### render 函数使用 jsx 语法
npm i babel-plugin-syntax-jsx babel-plugin-transform-vue-jsx babel-helper-vue-jsx-merge-props
配置 .babelrc
"plugins": ["transform-vue-jsx"]