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 相关文章推荐
jQuery数组处理代码详解(含实例演示)
Feb 03 Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
Sep 25 Javascript
JavaScript实现cookie的写入、读取、删除功能
Nov 05 Javascript
form表单转Json提交的方法(推荐)
Sep 23 Javascript
Vue.js结合Ueditor富文本编辑器的实例代码
Jul 11 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
探索Vue高阶组件的使用
Jan 08 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
Nov 04 Javascript
小程序双头slider选择器的实现示例
Mar 31 Javascript
Vue实现boradcast和dispatch的示例
Nov 13 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
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
javascript判断机器是否联网的2种方法
2013/08/09 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/08/22 Javascript
javascript实现微信分享
2014/12/23 Javascript
JS烟花背景效果实现方法
2015/03/03 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
值得学习的bootstrap fileinput文件上传工具
2016/11/08 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Ruby使用eventmachine为HTTP服务器添加文件下载功能
2016/04/20 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
Python实现ATM系统
2020/02/17 Python
Tensorflow tf.tile()的用法实例分析
2020/05/22 Python
Python 下载Bing壁纸的示例
2020/09/29 Python
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
亚马逊加拿大网站:Amazon.ca
2020/01/06 全球购物
美体小铺法国官方网站:The Body Shop法国
2020/06/04 全球购物
村庄绿化方案
2014/05/07 职场文书
酒店爱岗敬业演讲稿
2014/09/02 职场文书
参观邀请函范文
2015/02/02 职场文书
八年级英语教学反思
2016/02/15 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书