基于webpack搭建vue的开发环境
1:创建并初始化项目
mkdir webpack-demo
cd webpack-demo
npm init -y
npm install webpack webpack-cli --save-dev
2:在根目录下常见src文件夹创建index.js和index.html文件
/- webpack-demo
|- package.json
|- /dist
|- index.html
|- index.js
|- /src
|- main.js
|- index.html
3: 修改package.json
"name": "webpack-demo",
"version": "1.0.0",
"description": "",
"private": true,
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --mode production",
"dev": "webpack --mode development"
},
4:在根目录下创建webpack.config.js
const webpack = require('webpack')
const path = require('path')
module.exports = {
entry: './src/main.js',
output: {
path:path.resolve(__dirname,'dist'),
filename:'index.js'
}
}
5:打包测试 执行npm run build,生成的dist如下
|- /dist
|- index.html
|- main.js
6:实现每次编译前自动清空dist目录 安装clean-webpack-plugin
npm install clean-webpack-plugin --save-dev
7:实现从html模板自动生成最终html 安装html-webpack-plugin
npm install html-webpack-plugin --save-dev
8:下载完成配置webpack.config.js文件
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
.....
plugins: [
new VueLoaderPlugin(),
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html'
}),
],
9:配置各种loader(文件解析器)
npm install --save-dev babel-loader @babel/core @babel/preset-env
{
"presets": ["@babel/preset-env"]
}
module: {
rules: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader" }
]
}
10:搭建开发环境
npm install webpack-dev-server --save-dev
"scripts": {
"build": "webpack --mode production",
"dev": "webpack --mode development"
"serve": "webpack-dev-server --open --mode development"
}
module.exports = {
devServer: {
contentBase: './dist',
port: 8080,
hot: true
},
};
11:与vue集成
npm install vue-loader vue-template-compiler -D
{test:/\.vue$/,use:['vue-loader']},
const { VueLoaderPlugin }=require('vue-loader')
},
plugins: [
new VueLoaderPlugin()
]
12:与sass集成
npm install sass-loader node-sass -D
module: {
rules: [
{test:/\.(scss|sass)$/,use:['style-loader','css-loader','sass-loader']},
]
},
13:与vue-router和vuex集成
npm install vue-router -D
npm install vuex -D
14:以上按照步骤走都不会报错,注意点,在执行vue的时候一定要在index.html中加上
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="app"></div>
<router-view></router-view>
</body>
</html>
否则…
[Vue warn]: Cannot find element: #app
这个小bug找了好久,最后创建一个脚手架,一对比,看出来了…