动手写webpack配置--7.webpack加hash值命名。

基于Webpack4.x + npm6.5 + node v10.10.0 +react+ vscode环境.

项目名webpackDemo;

上节:https://blog.csdn.net/fengsh998/article/details/88081807插件的引用。

本节主要说明下使用hash命名的好处,很多时候浏览器为我们访问页面的时候很多资源文件都都是缓存在本地。如果缓存时间没过期不会请求新的资源文件,但有时候如果对某个资源进行了修改,没及时更新就会有问题。因此webpack在打包的时候会为我们生成一个hash值。这个hash值会随源文件或资源的变动而变化,如果源文件不动,资源不动。啥也不动的情况下,多次编译生成的hash是一样。这个不用担心。并不会每次编译都产生不同的hash.

AdeMacBook-Pro-3:webpackdemo a$ npm run dev

> webpackdemo@1.0.0 dev /Users/a/Documents/reactNative/reactstudy/webpackdemo
> webpack-dev-server

ℹ 「wds」: Project is running at http://localhost:8080/
ℹ 「wds」: webpack output is served from /
ℹ 「wds」: Content not from webpack is served from /Users/a/Documents/reactNative/reactstudy/webpackdemo/dist
ℹ 「wdm」: Hash: 3657098ad25ae41f7382
Version: webpack 4.29.6
Time: 1397ms
...

从上面中我们可以看到产生的hash 3657098ad25ae41f7382

怎么使用这个hash值呢。在webpack.config.js中在你需要使用hash值来命名输出的名件名时。通过[hash]来读取。

const path = require('path');
const htmlplugin = require('html-webpack-plugin')

module.exports = {
    ...
    output: {
        filename: 'bundle.[hash].js',
        path: path.resolve(__dirname, 'dist')
    },
    ...
}

这样修改之后,就会带hash值了。

但加了hash值之后。每次改动源码编译后都会产生新的hash文件,那第dist里就会有好多没有用的过时的文件垃圾。每次都手动删除。比较烦。这时可以按装一个clean-webpack-plugin  https://www.npmjs.com/package/clean-webpack-plugin 

const path = require('path');
const htmlplugin = require('html-webpack-plugin')
const CleanWebpackPlugin = require('clean-webpack-plugin')

let pathsToClean = [
    'dist/*.*',
    'build'
]

let cleanOptions = {
    root: __dirname,
    verbose: true,
    dry: false
}

module.exports = {
    ...
    output: {
        filename: 'bundle.[hash].js',
        path: path.resolve(__dirname, 'dist')
    },
    plugins: [
        new CleanWebpackPlugin(pathsToClean, cleanOptions),
        new htmlplugin({
            title: 'Html 插件 Demo',
            template: path.join(__dirname, 'public', 'index.html')
        })
    ],
    ...
}

到此hash算是完成了基本使用吧。

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
根据提供的引用内容,可以得知在Vue2.0中引用element-ui组件库需要引入样式文件,并且如果出现报错可以在webpack.config.js配置file_loader。如果仍然出现问题,可以在项目根目录下的build->webpack.dev.conf.js中将usePostCSS改为false即可。 关于Vue、element-ui/lib/theme-chalk/index.css和webpack的介绍和演示如下: Vue是一套用于构建用户界面的渐进式框架,它的核心库只关注视图层,易于上手,同时也便于与第三方库或既有项目整合。Vue也提供了一套完整的工具链,包括构建工具、脚手架、路由、状态管理等,可以帮助开发者更好地构建大型单页应用。 element-ui是一套基于Vue2.0的组件库,它提供了丰富的UI组件,包括表单、弹窗、导航、布局等,可以帮助开发者快速构建美观、易用的Web应用。 webpack是一个现代化的JavaScript应用程序静态模块打包器,它可以将多个模块打包成一个文件,以便在浏览器中使用。webpack支持各种各样的模块类型,包括CommonJS、AMD、ES6等,还可以通过loader和plugin扩展其功能。 演示如下: 1.在Vue项目中引入element-ui组件库 ```javascript // 引入element-ui样式文件 import 'element-ui/lib/theme-chalk/index.css'; // 引入element-ui组件库 import ElementUI from 'element-ui'; // 使用element-ui组件库 Vue.use(ElementUI); ``` 2.在webpack.config.js配置file_loader ```javascript module.exports = { module: { rules: [ { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, loader: 'file-loader', options: { name: utils.assetsPath('img/[name].[hash:7].[ext]') } } ] } } ``` 3.在build->webpack.dev.conf.js中将usePostCSS改为false ```javascript module.exports = merge(baseWebpackConfig, { module: { rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: false }) } }) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

边缘998

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值