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 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
js继承的实现代码
Aug 05 Javascript
js操作textarea方法集合封装(兼容IE,firefox)
Feb 22 Javascript
对JavaScript中this指针的新理解分享
Jan 31 Javascript
基于JavaScript实现购物车功能
Feb 07 Javascript
老生常谈js中0到底是 true 还是 false
Mar 08 Javascript
详解RequireJS按需加载样式文件
Apr 12 Javascript
Angular 2.0+ 的数据绑定的实现示例
Aug 09 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
May 25 Javascript
vue.js使用v-if实现显示与隐藏功能示例
Jul 06 Javascript
javascript自定义日期比较函数用法示例
Jul 22 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数据类型之布尔型的介绍
2013/04/28 PHP
对PHP PDO的一些认识小结
2015/01/23 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
eval与window.eval的差别分析
2011/03/17 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
jQuery实现的分子运动小球碰撞效果
2016/01/27 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
浅谈JavaScript作用域和闭包
2017/09/18 Javascript
jquery如何实现点击空白处隐藏元素
2017/12/05 jQuery
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
Python入门篇之字典
2014/10/17 Python
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
python通过floor函数舍弃小数位的方法
2015/03/17 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
keras 多任务多loss实例
2020/06/22 Python
Python中lru_cache的使用和实现详解
2021/01/25 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
耐克美国官网:Nike.com
2016/08/01 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
酒店副总经理岗位职责范本
2014/02/04 职场文书
趣味游戏活动方案
2014/02/07 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL
php png失真的原因及解决办法
2021/11/17 PHP
Oracle中DBLink的详细介绍
2022/04/29 Oracle