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 相关文章推荐
JS提交并解析后台返回的XML的代码
Nov 03 Javascript
JavaScript实现动态增加文件域表单
Feb 12 Javascript
javascript 特殊字符串
Feb 25 Javascript
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
May 24 Javascript
seajs中模块的解析规则详解和模块使用总结
Mar 12 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
Aug 24 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
Sep 01 Javascript
AngularJs html compiler详解及示例代码
Sep 01 Javascript
JS中获取 DOM 元素的绝对位置实例详解
Apr 23 Javascript
详解extract-text-webpack-plugin 的使用及安装
Jun 12 Javascript
Element Input输入框的使用方法
Jul 26 Javascript
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
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实现简单爬虫的方法
2015/07/29 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
php编程实现简单的网页版计算器功能示例
2017/04/26 PHP
使用javascript获取页面名称
2014/12/23 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
webpack打包非模块化js的方法
2018/10/24 Javascript
js核心基础之闭包的应用实例分析
2019/05/11 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
Python简单计算文件夹大小的方法
2015/07/14 Python
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
python3 深浅copy对比详解
2019/08/12 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
css3中仿放大镜效果的几种方式原理解析
2020/12/03 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
十月份红领巾广播稿
2014/01/22 职场文书
年级组长自我鉴定
2014/02/22 职场文书
法律进社区实施方案
2014/03/21 职场文书
股份合作协议书范本
2014/04/14 职场文书
万能检讨书
2015/01/27 职场文书
校长新学期寄语2016
2015/12/04 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
人民币符号
2022/02/17 杂记
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis
Redis实现分布式锁的五种方法详解
2022/06/14 Redis