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 操作css实现代码
Jun 11 Javascript
jQuery 打造动态渐变按钮 详细图文教程
Apr 25 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
Jun 13 Javascript
输入框过滤非数字的js代码
Sep 18 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
Sep 15 Javascript
简单实现的JQuery文本框水印插件
Jun 14 Javascript
AngularJS基础 ng-model 指令详解及示例代码
Aug 02 Javascript
vue中实现methods一个方法调用另外一个方法
Feb 08 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 Javascript
小程序实现展开/收起的效果示例
Sep 22 Javascript
layui 富文本编辑器和textarea值的相互传递方法
Sep 18 Javascript
小程序实现简单语音聊天的示例代码
Jul 24 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获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
PHP echo()函数讲解
2019/02/15 PHP
理解JavaScript中的事件
2006/09/23 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
jcrop基本参数一览
2013/07/16 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
关于延迟加载JavaScript
2015/05/05 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
13 个npm 快速开发技巧(推荐)
2019/07/04 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
python连接池实现示例程序
2013/11/26 Python
Python设计模式之代理模式实例
2014/04/26 Python
python使用socket远程连接错误处理方法
2015/04/29 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
Django工程的分层结构详解
2019/07/18 Python
Python银行系统实战源码
2019/10/25 Python
pytorch进行上采样的种类实例
2020/02/18 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
CSS3实现银灰色动画效果的导航菜单代码
2015/09/01 HTML / CSS
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
医药代表个人求职信范本
2013/12/19 职场文书
教师党员自我剖析材料
2014/09/29 职场文书
2014年档案室工作总结
2014/12/01 职场文书
2015年技术员工作总结
2015/04/10 职场文书
立春观后感
2015/06/18 职场文书
医务人员医德医风心得体会
2016/01/25 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang