vue-webpack4+
一.项目搭建
// 为节省安装时间,使用阿里定制的 cnpm 命令行工具代替默认的 npm $ npm install -g cnpm --registry=https://registry.npm.taobao.org // 检测cnpm版本,如果安装成功可以看到cnpm的基本信息。 $ cnpm -v // 安装时使用 cnpm install 即可 $ cnpm install 包的名称
// 当前电脑 node 和 npm 版本 cnpm@6.0.0 npm@6.9.0 node@10.15.3
-
创建 vue-webpack4 文件夹
-
cmd 打开 vue-webpack4 文件夹
-
初始化 npm,然后在本地安装 webpack 四件套,
npm init -y
npm install webpack webpack-cli webpack-dev-server webpack-merge --save-dev
-
webpack@4.30.0
-
webpack-cli@3.3.1
-
webpack-dev-server@3.3.1
-
webpack-merge@4.2.1
-
-
创建相应文件
二. 基本 webpack 配置
-
webpack.base.js
/** * author: gleasonBian * date: 2019/4/30 * 生产环境(prod)和开发环境(dev)通用配置 */ const webpack = require('webpack'); module.exports = { entry: './src/main.js', //入口 module: { rules: [] }, plugins: [ // 解决vender后面的hash每次都改变 new webpack.HashedModuleIdsPlugin(), ], };
-
webpack.dev.js
/** * author: gleasonBian * date: 2019/4/30 * 开发环境配置 */ const merge = require('webpack-merge'); const common = require('./webpack.base.js'); const path = require('path'); module.exports = merge(common, { devtool: 'inline-source-map', devServer: { // 开发服务器 contentBase: '../dist' }, output: { // 输出 filename: 'js/[name].[hash].js', // 每次保存 hash 都变化 path: path.resolve(__dirname, '../dist') }, module: {}, mode: 'development', });
-
webpack.prod.js
/** * author: gleasonBian * date: 2019/4/30 * 生产环境配置 */ const path = require('path'); // 合并配置文件 const merge = require('webpack-merge'); const common = require('./webpack.base.js'); module.exports = merge(common, { module: {}, plugins: [], mode: 'production', output: { filename: 'bundle/[name].[contenthash].js', //contenthash 若文件内容无变化,则contenthash 名称不变 path: path.resolve(__dirname, '../dist') }, });
三. 基本 vue 配置
-
安装 vue cli
npm install -g @vue/cli
-
安装 vue
npm install vue
-
vue@2.6.10
-
-
安装 vue 核心解析插件
npm install vue-loader vue-template-compiler --save-dev
-
vue-loader@15.7.0
-
vue-template-compiler@2.6.10
-
-
安装 html 模板解析插件
npm i html-webpack-plugin --save-dev
-
html-webpack-plugin@3.2.0
-
-
设置 入口文件 project/src/main.js
import Vue from 'vue' import App from './App.vue' new Vue({ el: '#app', render: h => h(App), });
-
配置主组件 project/src/App.vue
<template> <div id="app"> hello world </div> </template> <script> export default { name: 'app' } </script> <style scoped> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; transform: rotate(0deg); } </style>
-
indexhtml
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Suporka Vue App</title> </head> <body> <div id="app"></div> </body> </html>