### 1. 测试环境:

推荐这篇文章:讲的很细致

https://www.cnblogs.com/lhweb15/p/5660609.html

1. webpack.config.js自行安装

{
"name": "vuetest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack --display-modules --display-chunks --config build/webpack.config.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"babel-loader": "^7.1.4",
"babel-preset-es2015": "^6.24.1",
"css-loader": "^0.28.11",
"file-loader": "^1.1.11",
"html-webpack-plugin": "^3.2.0",
"less": "^3.0.4",
"less-loader": "^4.1.0",
"style-loader": "^0.21.0",
"vue": "^2.5.16",
"webpack": "^4.12.0",
"webpack-dev-server": "^3.1.4"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"express": "^4.16.3",
"webpack-cli": "^3.0.8",
"webpack-dev-middleware": "^3.1.3",
"webpack-hot-middleware": "^2.22.2"
}
}

2.配置文件:

dev-clietn.js

var hotClient = require('webpack-hot-middleware/client')

// 订阅事件,当 event.action === 'reload' 时执行页面刷新
hotClient.subscribe(function (event) {
if (event.action === 'reload') {
window.location.reload()
}
})

webpack.config.js

// nodejs 中的path模块
var path = require('path');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack');
module.exports = {
mode:"development",
//entry:['webpack-hot-middleware/client', path.resolve(__dirname, '../app/index.js')],
entry: {
app: [
'./build/dev-client',
path.resolve(__dirname, '../app/index.js')
]
},
// 输出配置
output: {
// 输出路径是 myProject/output/static
path: path.resolve(__dirname, './static'),
//publicPath: 'static/',
publicPath: "/",
filename: '[name].[hash].js',
chunkFilename: '[id].[chunkhash].js'
},
resolve:{
alias:{
'vue$':'vue/dist/vue.js'
}
},
module:{
rules: [
{test: /\.vue$/, loader: 'vue-loader' },
{test:/\.(eot|woff|woff2|svg|ttf)([\?]?.*)$/,loader:"file-loader"},
{test: /\.(png|jpg|gif)$/,loader: 'url-loader?limit=8192'},
{test: /\.less$/i, use: ['style-loader', { loader: 'css-loader', options: { importLoaders: 1 } },'less-loader']},
]
},
plugins: [
// 添加三个插件
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.NoEmitOnErrorsPlugin(),
new HtmlWebpackPlugin({
filename: 'index.html',
template: path.resolve(__dirname, '../app/index.html'),
inject: true
}),
]
}

webpack.dev.config.js

// 引入必要的模块
var express = require('express')
var webpack = require('webpack')
var config = require('./webpack.config') // 创建一个express实例
var app = express() // 调用webpack并把配置传递过去
var compiler = webpack(config) // 使用 webpack-dev-middleware 中间件
var devMiddleware = require('webpack-dev-middleware')(compiler, {
publicPath: config.output.publicPath,
stats: {
colors: true,
chunks: false
}
})
var hotMiddleware = require('webpack-hot-middleware')(compiler)
// webpack插件,监听html文件改变事件
compiler.plugin('compilation', function (compilation) {
compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
// 发布事件
hotMiddleware.publish({ action: 'reload' })
cb()
})
})
// 注册中间件
app.use(devMiddleware)
app.use(hotMiddleware)
// 监听 8881端口,开启服务器
app.listen(8881, function (err) {
if (err) {
console.log(err)
return
}
console.log('Listening at http://localhost:8881')
})

### 2. 生产环境

### 3.打包优化

webpack打包vue -->简易讲解的更多相关文章

  1. webpack打包vue文件报错,但是cnpm run dev正常,最后我只想说:是我太笨,还是webpack4.4版本太坑

    最近做一个项目,需要使用webpack打包 .vue 文件的单页面应用,调试都正常,使用cnpm run dev 都可以,就是webpack打包时报错.如下: ERROR in ./src/App.v ...

  2. webpack打包vue项目之后生成的dist文件该怎么启动运行

    亲测,webpack打包vue项目之后生成的dist文件可以部署到 express 服务器上运行. 我的vue项目结构如下: 1. 进入该vue项目目录,打开git bash,执行:npm run b ...

  3. webpack打包vue单文件组件

    一.vue单文件组件 ①文件扩展名为 .vue 的 就是single-file components(单文件组件) ②参考文档:单文件组件 二.webpack加载第三方包 ①项目中,如果需要用到一些第 ...

  4. 使用webpack打包vue工程

    记得去年十月份的时候,自己在研究webpack,当时只是知道大致的用法,写了一个简单的demo,现在,经过了7个月对公司产品架构的使用,以及对vue-cli的使用,在了解了实际应用中各种需求之后,我自 ...

  5. webpack打包vue

    一.原理 webpack 背后的原理其实就是把所有的非 js 资源都转换成 js (如把一个 css 文件转换成“创建一个 style 标签并把它插入 document ”的脚本.把图片转换成一个图片 ...

  6. 关于webpack打包vue后vendor包过大的问题

    因为项目用到了elementUI,打包之后包括vue.axios.elementui之类的加起来有500kb,页面第一次打开会出现一阵白屏显示.在百度过后发现可以使用外链接而不用模块包. 博主使用的外 ...

  7. 如何做到在webpack打包vue项目后,在外部动态修改配置文件

    在我们做完vue项目后,只需要执行 npm run dist 就可以轻松进行打包转测试,可是如果我们临时需要修改一些配置文件比如域名,这时候我们就有点懵逼了,那就修改了再重新打一次包? NO NO N ...

  8. webpack打包.vue文件

    在webpack中配置.vue组件页面的解析(vue-loader) 结合webpack使用vue-router 在webpack中配置.vue组件页面的解析 1.运行npm i vue -S将vue ...

  9. 16.如何做到webpack打包vue项目后,可以修改配置文件

    问题描述: 前端需要修改restful API的url,但是打包之后,配置文件找不到了,如果在npm run build 生成dist后,这个配置也被写死了,传到运行的前端服务器上后,假设某次,api ...

随机推荐

  1. dubbo的常用配置(基于注解)

    之前记录了基于springboot的dubbo入门案例,今天在此基础上记录dubbo官网介绍的常用属性配置,dubbo读取我们配置的属性时是有优先级的,优先级如下图: 如图所示,优先级的属性依次为虚拟 ...

  2. MongoDB知识点拾遗梳理

    MongoDB数据库安装: >apt-get install mongodb 0.MongoDB状态查看.启动.停止       >/etc/init.d/mongodb status或s ...

  3. 代码精简工具lombok

    Lombok是一种通过注解的方式减少JAVA实体类中大量冗余代码,诸如get.set以及构造方法等的Java库 一.安装Lombok 步骤一 项目引入lombok插件 1 - 非maven依赖托管项目 ...

  4. the shortest path algorithm

    Dijkstra算法 又称迪杰斯特拉算法,是一个经典的最短路径算法,主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止,使用了广度优先搜索解决赋权有向图的单源最短路径问题,算法最终得到一个最短路 ...

  5. rest参数与扩展运算符

    rest参数与扩展运算符 rest参数 当遇上这样一种需求:对于输入的参数,求和返回,但传入的参数个数并不确定. // 在es5中,通常是使用函数自身的arguments对象实现的 function ...

  6. 洛谷 P1047 校门外的树

    #include<iostream> #include<vector> #include<algorithm> using namespace std; ]; in ...

  7. Python学习之路基础篇--10Python基础,函数进阶

    1 命名空间 对于Python 来说命名空间一共有三种 1 内置命名空间 —— Python 解释器 就是Python 解释器一启动就可以使用的名字,储存在内置命名空间中.内置的名字在启动解释器的时候 ...

  8. 【集合】Java中的具体集合(一)

    Java中不止提供了集合框架中的接口,还提供了许多具体的实现. Java中的具体集合 集合类型 描述 ArrayList 一种可以动态增长和缩减的索引序列 LinkedList 一种可以在任何位置进行 ...

  9. 软件测试第四次作业—— 性能测试(含JMeter实验)

                                           性能测试(含JMeter实验) 一.概览 1.性能测试有几种类型,它们之间什么关系? 2.搭建并简单配置一个JMeter的 ...

  10. PTA L2-4 关于堆的判断

    先上题面 链接 https://pintia.cn/problem-sets/994805046380707840/problems/994805064676261888 首先,题目描述的很清楚,这是 ...