想在 vue/webpack HMR 触发 reload 的时候执行一个脚本应该怎么做?

2019-04-18 08:39:15 +08:00
 zeyexe
请教大家一个 vue/webpack 的问题。

我现在在用 vue 开发一个项目,想要每次修改一个 json 文件的时候通过一个 js 脚本从这个 json 文件生成另外两个 json 文件放到 public 目录中,应该怎么做?

我理解这可能需要把这个 js 脚本改造成一个 loader。不知道有没有现成的解决方案?
4580 次点击
所在节点    Node.js
12 条回复
IsaacYoung
2019-04-18 08:41:43 +08:00
fs.watch
zeyexe
2019-04-18 08:54:10 +08:00
@IsaacYoung #1 能不能具体说说应该怎么做。我这个需求感觉类似是一次编译,就像把 less 编译成 css 并保存,我是要把 1 个 json 编译成 2 个 json 并保存。
TomVista
2019-04-18 09:02:51 +08:00
Chokidar。chokidar 是一个基于 node.JS 的监听文件夹改变模块
node 本身能够执行 js 脚本.
node 下 fs 模块,是一个文件系统.

以上 3 点完全能够支撑这个需求.
TomVista
2019-04-18 09:03:52 +08:00
1 楼提到的 fs.watch 也能实现文件监听,Chokidar 只是封装了下.
zeyexe
2019-04-18 09:18:08 +08:00
@TomVista #4 文件监听 webpack 本身就有的功能,监听应该不是问题。我主要是想做一个 hook,想要让 webpack 在文件发生变化时自动执行一个脚本。
airyland
2019-04-18 09:19:06 +08:00
在 webpack 中实现的话写个 loader 来处理,配置 rule match 到这个文件,好处是不用另开个命令行。不用 webpack 的话如上面写个文件 watch。
binshao54
2019-04-18 09:19:54 +08:00
用 express 中间件 webpack-dev-middleware , 可以拿到 webpack 的 compiler 实例, 监听 compiler.watch 事件不知道能不能解决
jin5354
2019-04-18 09:22:31 +08:00
写个 loader 是最简单的。配置 match 让这个 json 过这个 loader,loader 不处理内容只用副作用生成文件。
TomVista
2019-04-18 09:30:30 +08:00
https://www.webpackjs.com/api/compiler-hooks/ 把你的 js 脚本扔到 webpack 钩子里,,你自己看看那个钩子合适.
otakustay
2019-04-18 10:36:52 +08:00
写个 webpack 的插件呗
sunzongzheng
2019-04-18 19:36:34 +08:00
webpck-nodemon
cjc2017
2019-05-07 19:37:18 +08:00
@TomVista 感觉这位老哥方案比较稳

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/556254

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX