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 相关文章推荐
举例讲解AngularJS中的模块
Jun 17 Javascript
JS+CSS实现简易的滑动门效果代码
Sep 24 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
Sep 09 Javascript
JavaScript实现经典排序算法之冒泡排序
Dec 28 Javascript
通过button将form表单的数据提交到action层的实例
Sep 08 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 Javascript
vue 标签属性数据绑定和拼接的实现方法
May 17 Javascript
详解vue使用vue-layer-mobile组件实现toast,loading效果
Aug 31 Javascript
webpack4 SCSS提取和懒加载的示例
Sep 03 Javascript
Vue项目数据动态过滤实践及实现思路
Sep 11 Javascript
结合axios对项目中的api请求进行封装操作
Sep 21 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
Nov 05 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 curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
php简单实现批量上传图片的方法
2016/05/09 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
jquery动态改变form属性提交表单
2014/06/03 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
javascript常用的方法整理
2015/08/20 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
Vue传参一箩筐(页面、组件)
2019/04/04 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
JS实现在线ps功能详解
2019/07/31 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
python操作 hbase 数据的方法
2016/12/18 Python
django实现登录时候输入密码错误5次锁定用户十分钟
2017/11/05 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
Ado与Ado.net的相同与不同
2014/12/08 面试题
大学生水文观测实习自我鉴定
2013/09/29 职场文书
英语演讲稿范文
2014/01/03 职场文书
八项规定整改措施
2014/02/12 职场文书
2014年端午节活动方案
2014/03/11 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
学校政风行风评议心得体会
2014/10/21 职场文书
承诺书模板大全
2015/05/04 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
Go语言中break label与goto label的区别
2021/04/28 Golang
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
nginx中封禁ip和允许内网ip访问的实现示例
2022/03/17 Servers
微信小程序 WeUI扩展组件库的入门教程
2022/04/21 Javascript