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 相关文章推荐
Javascript 调试利器 Firebug使用详解六
Jul 05 Javascript
Jquery中对数组的操作代码
Aug 12 Javascript
JS字符串处理实例代码
Aug 05 Javascript
jquery 检测元素是否存在的实例代码
Nov 19 Javascript
一个支持任意尺寸的图片上下左右滑动效果
Aug 24 Javascript
JQuery中DOM实现事件移除的方法
Jun 13 Javascript
在bootstrap中实现轮播图实例代码
Jun 11 Javascript
vue 计时器组件的实现代码
Sep 14 Javascript
使用Node.js实现一个多人游戏服务器引擎
Mar 13 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
Oct 11 Javascript
js生成1到100的随机数最简单的实现方法
Feb 07 Javascript
vue父子组件间引用之$parent、$children
May 20 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
URL Rewrite的设置方法
2007/01/02 PHP
php empty函数判断mysql表单是否为空
2010/04/12 PHP
Windows下安装Memcached的步骤说明
2010/04/25 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
PHP魔术方法__GET、__SET使用实例
2014/11/25 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
纯js实现背景图片切换效果代码
2010/11/14 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
Vue2.0实现购物车功能
2017/06/05 Javascript
NodeJs通过async/await处理异步的方法
2017/10/09 NodeJs
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
[32:07]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第一场 12.16
2020/12/17 DOTA
python密码错误三次锁定(实例讲解)
2017/11/14 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
Python中使用Selenium环境安装的方法步骤
2021/02/22 Python
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
意大利综合购物网站:Giordano Shop
2016/10/21 全球购物
物流管理毕业生自荐信
2013/10/24 职场文书
档案接收函范文
2014/01/10 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
机械设备与数控技术专业求职信
2014/08/10 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang