Support watch mode when running esbuild via js
Currently, watch: true on this plugin states that it needs build({wach: true}) however watch: true is not an option when using the js api. instead one must do:
esbuild
.context(opts)
.then((ctx) => {
ctx.watch();
})
however when doing it this way the plugin complains that watch is not true
This is an incompatibility caused by esbuild version upgrade (>= 0.17). If the context API is used, the watch mode will be difficult to identify, and a new identification logic that does not rely on build.initialOptions.watch is required. See also https://github.com/evanw/esbuild/issues/2823
+1 for this to be fixed.
Could it just be a simple flag in the mean time or just don't do the check? I mean if we use our own method to set watch to true/false, is there any reason it needs to second guess what we want by checking esbuild config as well?
FWIW, for now you can enable watching per asset pair using the assets.watch key, e.g.
copy({
assets: {
from: [`./src/foo/*`],
to: [`./foo/*`],
watch: true,
},
})