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 插件学习(一)
Aug 06 Javascript
jquery 关于event.target使用的几点说明介绍
Apr 26 Javascript
jquery判断元素的子元素是否存在的示例代码
Feb 04 Javascript
原生javascript实现图片滚动、延时加载功能
Jan 12 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
Mar 02 Javascript
js对象浅拷贝和深拷贝详解
Sep 05 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
Feb 04 Javascript
jQuery中table数据的值拷贝和拆分
Mar 19 Javascript
Vue项目中如何引入icon图标
Mar 28 Javascript
原生js封装的ajax方法示例
Aug 02 Javascript
Vue从TodoList中学父子组件通信
Feb 05 Javascript
一文了解vue-router之hash模式和history模式
May 31 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中的超全局变量
2006/10/09 PHP
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
php简单统计在线人数的方法
2016/05/10 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
修改jquery.lazyload.js实现页面延迟载入
2010/12/22 Javascript
分享一个我自己写的ToolTip提示插件(附源码)
2013/01/20 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
jquery对所有input type=text的控件赋值实现方法
2016/12/02 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
利用JS如何获取form表单数据
2019/12/19 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
python 把文件中的每一行以数组的元素放入数组中的方法
2018/04/29 Python
Python3中列表list合并的四种方法
2019/04/19 Python
pandas中的series数据类型详解
2019/07/06 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
Python使用Opencv实现边缘检测以及轮廓检测的实现
2020/12/31 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
俄罗斯女装店:12storeez
2019/10/25 全球购物
中式餐厅创业计划书范文
2014/01/23 职场文书
食品安全标语
2014/06/07 职场文书
拓展训练激励口号
2014/06/17 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
运动会表扬稿范文
2015/05/05 职场文书
小学班主任工作随笔
2015/08/15 职场文书
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers