vue-cli3中配置alias和打包加hash值操作


Posted in Javascript onSeptember 04, 2020

1.之前在项目测试环境打包的时候,js文件打包出来没有hash值,但是生产环境打包出来却又hash值

当时只配置了 filenameHashing: true,这样是不够的

后来在chainWebpack中配置config.output.filename('[name].[hash].js').end(),解决了该问题

2.配置alias可以在引入文件的时候不用写很长的相对路径

步骤:

先引入path模块

const path = require('path') 
function resolve(dir) {
 return path.join(__dirname, dir)
}

之后在chainWebpack中设置

chainWebpack(config) {
 
  config.resolve.alias
   .set('style', resolve('public/style'))
   .set('api', resolve('src/api'))
   .set('tools', resolve('src/tools'))
   .set('components', resolve('src/components'))
   .set('echarts', resolve('src/echarts'))
   .set('echarts', resolve('node_modules/echarts'))
 
  config.output.filename('[name].[hash].js').end();
 },

补充知识:以vue-cli为例,了解webpack的hash、chunkhash、contenthash

hash

[hash] is replaced by the hash of the compilation(). 代表的是cpmpilation的hash。

compilation在项目中任何一个文件改动后就会被重新创建,然后webpack计算新的compilation的hash值,这个hash值便是hash。

chunkhash

[chunkhash] is replaced by the hash of the chunk. chunk(模块)的hash

代表的是chunk(模块)的hash值。

contenthash

插件extract-text-webpack-plugin引入的contenthash

名称 说明
hash 代表的是compilation的hash值。compilation在项目中任何一个文件改动后就会被重新创建,然后webpack计算新的compilation的hash值
chunkhash 代表chunk的hash,模块发生改变才会重新生成hash
contenthash 解决改变style文件导致js文件重新生成hash的问题(使用extract-text-webpack-plugin单独编译输出css文件)

vue-cli举例

vue-cli脚手架中webpack的配置文件hash, build/webpack.base.conf.js

vue-cli中,hash用于图片,音视频,和字体文件

// hash(hash,jpg,mo4,txt)
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
  limit: 10000,
  name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
  limit: 10000,
  name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
  limit: 10000,
  name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
})
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
  limit: 10000,
  name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
  limit: 10000,
  name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
  limit: 10000,
  name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}

chunkhash,build/webpack.prod.conf.js

chuunkhash主要用于js文件中

// chunkhash,js
  filename: utils.assetsPath('js/[name].[chunkhash].js'),
  chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')

contenthash:build/webpack.prod.conf.js

使用extract-text-webpack-plugin单独编译输出css文件。extract-text-webpack-plugin提供了另外一种hash值:contenthash

// extract css into its own file
  new ExtractTextPlugin({
   filename: utils.assetsPath('css/[name].[contenthash].css')
  }),

至于缓存这一大块的内容,路漫漫,继续学习

以上这篇vue-cli3中配置alias和打包加hash值操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
脚本收藏iframe
Jul 21 Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 Javascript
javascript使用call调用微信API
Dec 15 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
May 12 Javascript
在JavaScript中处理字符串之fontcolor()方法的使用
Jun 08 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
基于Three.js插件制作360度全景图
Nov 29 Javascript
学好js,这些js函数概念一定要知道【推荐】
Jan 19 Javascript
Bootstrap一款超好用的前端框架
Sep 25 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
Sep 25 Javascript
在Layui中实现开关按钮的效果实例
Sep 29 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
Oct 21 Javascript
vue深度监听(监听对象和数组的改变)与立即执行监听实例
Sep 04 #Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
Sep 04 #Javascript
解决vue中axios设置超时(超过5分钟)没反应的问题
Sep 04 #Javascript
在vue中axios设置timeout超时的操作
Sep 04 #Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
Sep 04 #Javascript
JavaScript中的执行环境和作用域链
Sep 04 #Javascript
Vue 禁用浏览器的前进后退操作
Sep 04 #Javascript
You might like
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
php 数组二分法查找函数代码
2010/02/16 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
JavaScript使用prototype定义对象类型(转)[
2006/12/22 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
关于ExtJS4.1:快捷键支持的问题
2013/04/24 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
Node学习记录之cluster模块
2017/05/31 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
JS实现轮播图效果
2020/01/11 Javascript
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
Python translator使用实例
2008/09/06 Python
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
Python中的hypot()方法使用简介
2015/05/18 Python
Python SQLite3简介
2018/02/22 Python
python 实现判断ip连通性的方法总结
2018/04/22 Python
wxPython的安装与使用教程
2018/08/31 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
Java的基础面试题附答案
2016/01/10 面试题
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
离婚起诉书范本
2015/05/18 职场文书
办公室日常管理制度
2015/08/04 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
Html5获取用户当前位置的几种方式
2022/01/18 HTML / CSS
MySQL 原理与优化之Limit 查询优化
2022/08/14 MySQL