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 相关文章推荐
我见过最全的个人js加解密功能页面
Dec 12 Javascript
利用JS重写Cognos右键菜单的实现代码
Apr 11 Javascript
JS对象转换为Jquery对象实现代码
Dec 29 Javascript
jquery批量设置属性readonly和disabled的方法
Jan 24 Javascript
node.js中的url.parse方法使用说明
Dec 10 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
jQuery查看选中对象HTML代码的方法
Jun 17 Javascript
JavaScript将base64图片转换成formData并通过AJAX提交的实现方法
Oct 24 Javascript
Bootstrap免费字体和图标网站(值得收藏)
Mar 16 Javascript
前端js中的事件循环eventloop机制详解
May 15 Javascript
通过实例学习React中事件节流防抖
Jun 17 Javascript
vue 解决IOS10低版本白屏的问题
Nov 17 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
使用PHP批量生成随机用户名
2008/07/10 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
2018/11/22 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
js获取url中"?"后面的字串方法
2014/05/15 Javascript
For循环中分号隔开的3部分的执行顺序探讨
2014/05/27 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
python pyqtgraph 保存图片到本地的实例
2020/03/14 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
Python join()函数原理及使用方法
2020/11/14 Python
彻底解决Python包下载慢问题
2020/11/15 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
Skyscanner台湾:全球知名的旅行比价引擎
2018/07/01 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
影视制作岗位职责
2013/12/04 职场文书
新驾驶员个人自我评价
2014/01/03 职场文书
手机被没收检讨书
2014/02/22 职场文书
死者家属慰问信
2015/03/24 职场文书
个人自荐书怎么写
2015/03/26 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
公司保洁员管理制度
2015/08/04 职场文书
教师教育心得体会
2016/01/19 职场文书
完美处理python与anaconda环境变量的冲突问题
2021/04/07 Python
Python利器openpyxl之操作excel表格
2021/04/17 Python
mysql如何能有效防止删库跑路
2021/10/05 MySQL