From d2ddd1b21d4c659a6548fb5f491cb5bce6c72da4 Mon Sep 17 00:00:00 2001 From: TOTBWF Date: Fri, 7 Aug 2020 15:30:56 -0700 Subject: [PATCH] Fix hot reloading Previously, changes to non-`Main` purescript files would not trigger hot reloading. This is because the files were not registered with `addDependency`, so they didn't trigger rebuilds. See https://webpack.js.org/api/loaders/#thisadddependency and https://webpack.js.org/contribute/writing-a-loader/#loader-dependencies --- src/index.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index ff13302..4aa46ec 100644 --- a/src/index.js +++ b/src/index.js @@ -6,6 +6,8 @@ const debug = debug_('purs-loader'); const debugVerbose = debug_('purs-loader:verbose'); +const fs = require('fs'); + const loaderUtils = require('loader-utils') const Promise = require('bluebird') @@ -26,7 +28,9 @@ const sourceMaps = require('./source-maps'); const spawn = require('cross-spawn').sync -const eol = require('os').EOL +const eol = require('os').EOL; + +const globby = require('globby'); var CACHE_VAR = { rebuild: false, @@ -167,6 +171,17 @@ module.exports = function purescriptLoader(source, map) { src: srcOption }); + const glob = [].concat(loaderOptions.src); + for (const file of globby.sync(glob)) { + debugVerbose('Adding', file, 'as a dependency'); + this.addDependency(file); + const jsFile = path.join(path.dirname(file), path.basename(file, path.extname(file))) + '.js'; + if (fs.existsSync(jsFile)) { + debugVerbose('Adding', jsFile, 'as a dependency'); + this.addDependency(jsFile); + } + } + if (!CACHE_VAR.installed) { debugVerbose('installing purs-loader with options: %O', options);