webpack 构建 vue 开发环境
1. 必要环境 请确保已安装
node npm webpack
2.创建一个test文件夹
mkdir test && cd test && npm init
3. 创建 webpack.dev.config.js
const path = require('path')
const {CleanWebpackPlugin} = require('clean-webpack-plugin') // webpack插件 清除打包文件夹下多余文件 详细配置==>(https://www.npmjs.com/package/clean-webpack-plugin)
const HtmlWebpackPlugin = require('html-webpack-plugin') // webpack插件 简化html创建 详细配置==>(https://github.com/jantimon/html-webpack-plugin)
const VueLoaderPlugin = require('vue-loader/lib/plugin') // vue-loader 插件,它的职责是将你定义过的其它规则复制并应用到 .vue 文件里相应语言的块
const webpack = require('webpack')
module.exports = {
entry: {
app: './main.js'
},
devtool: 'cheap-module-eval-source-map', // 控制如何生成 source map ==>(https://www.webpackjs.com/configuration/devtool/)
devServer: {
contentBase: './dist',
hot: true
},
mode: 'development',
module: {
rules: [
{
test: /\.(svg)(\?.*)?$/,
use: ['file-loader']
}, {
test: /\.css$/,
use: ['style-loader', 'css-loader'],
}, {
test: /\.vue$/,
use: ['vue-loader']
}, {
test: /\.(png|jpg|jpeg|gif)$/,
use: [{
loader: 'url-loader',
options: {
limit: 10000,
name: '[name].[ext]',
outputPath: 'assets/img',
publicPath: ''
}
}]
}, {
test: /\.js$/,
use: [{
loader: 'babel-loader',
options: {
presets: ['react', 'env']
}
}],
include: [
path.resolve(__dirname, 'src')
]
}, {
test: /\.(woff|woff2|eot|ttf|otf)$/,
use: ['url-loader']
}]
},
plugins: [ // 插件配置
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html'
}),
new VueLoaderPlugin(),
new webpack.NamedModulesPlugin(),
new webpack.HotModuleReplacementPlugin()
],
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'dist')
},
resolve: {
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': 'src'
}
}
}
4. package.json
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack-dev-server --config webpack.dev.config.js"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^8.2.2",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"babel-runtime": "^6.26.0",
"css-loader": "^5.2.4",
"style-loader": "^2.0.0",
"vue-hot-reload-api": "^2.3.4",
"vue-html-loader": "^1.2.4",
"vue-loader": "^15.7.0",
"vue-style-loader": "^4.1.3",
"vue-template-compiler": "^2.6.12",
"webpack": "^4.29.6",
"webpack-dev-server": "^3.11.2",
"webpack-cli": "^3.2.3",
"clean-webpack-plugin": "^4.0.0-alpha.0",
"html-webpack-plugin": "^3.2.0",
"url-loader": "^1.1.2",
"file-loader": "^3.0.1"
},
"dependencies": {
"iview": "^3.5.4",
"view-design": "^4.5.0",
"vue": "^2.6.12"
}
}
4 创建main.js
import Vue from 'vue'
import App from './App.vue'
import ViewUI from 'view-design';
import 'view-design/dist/styles/iview.css';
Vue.use(ViewUI);
new Vue({
el: '#app',
components: {App},
template: '<App />'
})
5. 创建App.vue
<template>
<Button>hell vue111222</Button>
</template>
<script>
import {Button} from "iview";
export default {
components:{
Button
},
data() {
return {
btnName: "default",
}
},
mounted() {
}
}
</script>
<style lang="css" scoped>
/**
* You can change the "lang" to use sass, scss, or even more.
*/
</style>
6. 创建 index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>VueJS</title>
</head>
<body>
<div id="app"></div>
</body>
</html>
7. 执行 命令: npm run start

浙公网安备 33010602011771号