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高级程序设计 阅读笔记(二十) js错误处理
Aug 14 Javascript
JavaScript也谈内存优化
Jun 06 Javascript
jQuery中$.extend()用法实例
Jun 24 Javascript
javascript实现省市区三级联动下拉框菜单
Nov 17 Javascript
浅析JSONP技术原理及实现
Jun 08 Javascript
js浏览器html5表单验证
Oct 17 Javascript
详解Javascript百度地图接口开发文档中的类和方法
Feb 07 Javascript
微信小程序 扎金花简单实例
Feb 21 Javascript
JS实现课堂随机点名和顺序点名
Mar 09 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
微信小程序之几种常见的弹框提示信息实现详解
Jul 11 Javascript
p5.js临摹动态图形的方法
Oct 23 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程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
2009/05/14 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
微信小程序 页面滑动事件的实例详解
2017/10/12 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
2017/11/14 Javascript
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
javascript中正则表达式语法详解
2020/08/07 Javascript
vue实现tab栏点击高亮效果
2020/08/19 Javascript
[01:00] DOTA2英雄背景故事第五期之重力引力法则谜团
2020/07/16 DOTA
python实现定制交互式命令行的方法
2014/07/03 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
python实现用户答题功能
2018/01/17 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
html5 canvas 实现光线沿不规则路径运动
2020/04/20 HTML / CSS
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
实习自我鉴定模板
2013/09/28 职场文书
大学活动总结范文
2014/04/29 职场文书
拉拉队口号
2014/06/16 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
离婚协议书格式
2015/01/26 职场文书
英语通知范文
2015/04/22 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers