目的: 在 --watch, 希望 编译完代码 通过回调来处理一下事(编译完所有代码, 只触发一次回调)
实现:
-
在根目录下添加 vue.config.js, 代码如下
class CompilerCodeReloadPlugin { constructor(options) { this.options = options } apply(compiler) { if (compiler.hooks && compiler.hooks.done) { // 一般约定tab里的第一个字符串与插件名相同 compiler.hooks.done.tap('CompilerCodeReloadPlugin', stats => { console.log('time: ' + new Date().toLocaleTimeString()) // eslint-disable-next-line @typescript-eslint/no-var-requires const fs = require('fs') const fileName = `${stats.hash}.txt` console.log(fileName) fs.writeFile(fileName, stats, function (err) { if (err) { return console.error(err) } console.log('数据写入成功!') }) }) } } } const plugins = [] const isDev = process.env.NODE_ENV === 'development' const isApp = process.env.UNI_PLATFORM === 'app-plus' if (isDev && isApp) { plugins.push(new CompilerCodeReloadPlugin({})) } module.exports = { configureWebpack: { plugins } }
2.运行如下
![](http://img-cdn-tc.dcloud.net.cn/uploads/questions/20210106/c3ff55b4a605fc9035c30031e6cd7bce.png)
3.输入文件如下
6fe66ee853d9507def17.txt
Hash: 6fe66ee853d9507def17
Version: webpack 4.44.2
Time: 25924ms
Built at: 2021-01-06 11:43:00
Asset Size Chunks Chunk Names
../.automator/app-plus/.automator.json 0 bytes [emitted]
__uniappchooselocation.js 32.8 KiB [emitted]
__uniappes6.js 51.4 KiB [emitted]
__uniappopenlocation.js 22.8 KiB [emitted]
__uniapppicker.js 27.6 KiB [emitted]
__uniappquill.js 211 KiB [emitted]
__uniappquillimageresize.js 23.9 KiB [emitted]
__uniappscan.js 18.4 KiB [emitted]
__uniappsuccess.png 1.97 KiB [emitted]
__uniappview.html 811 bytes [emitted]
app-config-service.js 2.15 KiB [emitted]
app-config.js 6.12 KiB app-config [emitted] app-config
app-service.js 6.45 MiB app-service [emitted] [big] app-service
manifest.json 2.49 KiB [emitted]
static/img/loginBg.png 108 KiB [emitted]
static/logo.png 3.93 KiB [emitted]
view.css 54.6 KiB [emitted]
view.umd.min.js 295 KiB [emitted] [big]
Entrypoint app-service [big] = app-config.js app-service.js
[0] ./src/main.ts 520 bytes {app-service} [built]
[1] ./src/pages.json 916 bytes {app-service} [built]
[2] ./src/pages/main/main.vue?mpType=page 647 bytes {app-service} [built]
[10] ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js 3.3 KiB {app-service} [built]
[15] external "Vue" 42 bytes {app-service} [built]
[20] ./src/pages/login/login.vue?mpType=page 652 bytes {app-service} [built]
[55] ./src/pages/index/index.vue?mpType=page 652 bytes {app-service} [built]
[70] ./src/App.vue 538 bytes {app-service} [built]
[71] ./src/App.vue?vue&type=script&lang=ts& 890 bytes {app-service} [built]
[73] ./src/store/index.ts 1.11 KiB {app-service} [built]
[74] ./node_modules/vuex/dist/vuex.esm.js 36.4 KiB {app-service} [built]
[76] ./src/store/getters.ts 464 bytes {app-service} [built]
[77] ./src/store/modules sync \.[jt]s$ 174 bytes {app-service} [built]
[115] ./node_modules/uview-ui/index.js 4.42 KiB {app-service} [built]
[116] ./node_modules/uview-ui/libs/mixin/mixin.js 2.28 KiB {app-service} [built]
+ 126 hidden modules
6913bd53ae92b3dbb2f0.txt
Hash: 6913bd53ae92b3dbb2f0
Version: webpack 4.44.2
Time: 26531ms
Built at: 2021-01-06 11:43:00
Asset Size Chunks Chunk Names
../.automator/app-plus/.automator.json 0 bytes [emitted]
app-view.js 488 KiB app-view [emitted] [big] app-view
Entrypoint app-view [big] = app-view.js
[0] ./src/main.ts 469 bytes {app-view} [built]
[1] ./src/pages.json?{"type":"view"} 1.13 KiB {app-view} [built]
[2] ./src/pages/main/main.vue?mpType=page 647 bytes {app-view} [built]
[3] ./src/pages/main/main.vue?vue&type=template&id=a557d614&mpType=page 704 bytes {app-view} [built]
[14] ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader/lib/addStylesClient.js 7.23 KiB {app-view} [built]
[16] ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js 3.3 KiB {app-view} [built]
[17] ./src/pages/main/main.vue?vue&type=script&lang=ts&mpType=page 1.34 KiB {app-view} [built]
[19] ./src/pages/login/login.vue?mpType=page 730 bytes {app-view} [built]
[20] ./src/pages/login/login.vue?vue&type=template&id=5b26a3ac&mpType=page 705 bytes {app-view} [built]
[62] ./src/pages/login/login.vue?vue&type=script&lang=ts&mpType=page 1.34 KiB {app-view} [built]
[64] ./src/pages/login/login.vue?vue&type=style&index=0&lang=scss&mpType=page 1.79 KiB {app-view} [built]
[67] ./src/pages/index/index.vue?mpType=page 730 bytes {app-view} [built]
[68] ./src/pages/index/index.vue?vue&type=template&id=2be84a3c&mpType=page 705 bytes {app-view} [built]
[91] ./src/App.vue?vue&type=style&index=0&lang=scss& 1.66 KiB {app-view} [built]
[92] ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/app-vue-style-loader??ref--8-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-2!./node_modules/postcss-loader/src??ref--8-oneOf-1-3!./node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-4!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--8-oneOf-1-5!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/view/style.js!./src/App.vue?vue&type=style&index=0&lang=scss& 2.98 KiB {app-view} [built]
+ 79 hidden modules