zeyexe
V2EX  ›  Node.js

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

  •  
  •   zeyexe · Apr 18, 2019 · 6026 views
    This topic created in 2761 days ago, the information mentioned may be changed or developed.
    请教大家一个 vue/webpack 的问题。

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

    我理解这可能需要把这个 js 脚本改造成一个 loader。不知道有没有现成的解决方案?
    12 replies  •  2019-05-07 19:37:18 +08:00
    IsaacYoung
    IsaacYoung
    Apr 18, 2019 via iPhone❤️1
    1
    fs.watch
    zeyexe
    zeyexe
    OP
    Apr 18, 2019
    2
    @IsaacYoung #1 能不能具体说说应该怎么做。我这个需求感觉类似是一次编译,就像把 less 编译成 css 并保存,我是要把 1 个 json 编译成 2 个 json 并保存。
    TomVista
    TomVista
    Apr 18, 2019❤️1
    3
    Chokidar。chokidar 是一个基于 node.JS 的监听文件夹改变模块
    node 本身能够执行 js 脚本.
    node 下 fs 模块,是一个文件系统.

    以上 3 点完全能够支撑这个需求.
    TomVista
    TomVista
    Apr 18, 2019❤️1
    4
    1 楼提到的 fs.watch 也能实现文件监听,Chokidar 只是封装了下.
    zeyexe
    zeyexe
    OP
    Apr 18, 2019
    5
    @TomVista #4 文件监听 webpack 本身就有的功能,监听应该不是问题。我主要是想做一个 hook,想要让 webpack 在文件发生变化时自动执行一个脚本。
    airyland
    airyland
    Apr 18, 2019❤️1
    6
    在 webpack 中实现的话写个 loader 来处理,配置 rule match 到这个文件,好处是不用另开个命令行。不用 webpack 的话如上面写个文件 watch。
    binshao54
    binshao54
    Apr 18, 2019❤️1
    7
    用 express 中间件 webpack-dev-middleware , 可以拿到 webpack 的 compiler 实例, 监听 compiler.watch 事件不知道能不能解决
    jin5354
    jin5354
    Apr 18, 2019❤️1
    8
    写个 loader 是最简单的。配置 match 让这个 json 过这个 loader,loader 不处理内容只用副作用生成文件。
    TomVista
    TomVista
    Apr 18, 2019❤️1
    9
    https://www.webpackjs.com/api/compiler-hooks/ 把你的 js 脚本扔到 webpack 钩子里,,你自己看看那个钩子合适.
    otakustay
    otakustay
    Apr 18, 2019❤️1
    10
    写个 webpack 的插件呗
    zhangyiming
    zhangyiming
    Apr 18, 2019 via Android❤️1
    11
    webpck-nodemon
    cjc2017
    cjc2017
    May 7, 2019 via iPhone
    12
    @TomVista 感觉这位老哥方案比较稳
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1730 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 418ms · UTC 03:53 · PVG 11:53 · LAX 19:53 · JFK 22:53
    ♥ Do have faith in what you're doing.