From 2f5cd2bb85fd98c2bd6e69d7012e222d95e5e0f4 Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Sun, 22 Nov 2020 16:05:30 +0100 Subject: [PATCH] feat: apply-css-loader hmr code --- packages/webpack5/src/configuration/base.ts | 4 +++- .../src/loaders/apply-css-loader/index.ts | 21 ++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/webpack5/src/configuration/base.ts b/packages/webpack5/src/configuration/base.ts index c2acc4169..dd5a354bf 100644 --- a/packages/webpack5/src/configuration/base.ts +++ b/packages/webpack5/src/configuration/base.ts @@ -186,7 +186,9 @@ export default function (config: Config, env: IWebpackEnv): Config { /* for compat only */ 'global.isAndroid': platform === 'android', /* for compat only */ 'global.isIOS': platform === 'ios', process: 'global.process', - /* todo: remove if fixed in core? */ profile: '() => {}', + + // todo: ?!?! + // profile: '() => {}', }, ]); diff --git a/packages/webpack5/src/loaders/apply-css-loader/index.ts b/packages/webpack5/src/loaders/apply-css-loader/index.ts index 20740d2ba..40350f4c7 100644 --- a/packages/webpack5/src/loaders/apply-css-loader/index.ts +++ b/packages/webpack5/src/loaders/apply-css-loader/index.ts @@ -12,14 +12,28 @@ export default function loader(content, map) { .some(({ path }) => path.includes(loader)); }; // add a tag to the applied css - const tag = + const tag = JSON.stringify(this.resourcePath); + const tagCode = this.mode === 'development' ? `, ${JSON.stringify(this.resourcePath)}` : ''; + const hmrCode = this.hot + ? dedent` + if(module.hot) { + module.hot.accept() + module.hot.dispose(() => { + const { removeTaggedAdditionalCSS } = require("@nativescript/core/ui/styling/style-scope"); + removeTaggedAdditionalCSS(${tag}) + }) + } + ` + : ``; + if (hasLoader('apply-css-loader')) { content = dedent` ${content} const { addTaggedAdditionalCSS } = require("@nativescript/core/ui/styling/style-scope"); - addTaggedAdditionalCSS(___CSS2JSON_LOADER_EXPORT___${tag}) + addTaggedAdditionalCSS(___CSS2JSON_LOADER_EXPORT___${tagCode}) + ${hmrCode} `; } else if (hasLoader('css-loader')) { content = dedent` @@ -29,10 +43,11 @@ export default function loader(content, map) { ___CSS_LOADER_EXPORT___.forEach(cssExport => { if (cssExport.length > 1 && cssExport[1]) { // applying the second item of the export as it contains the css contents - addTaggedAdditionalCSS(cssExport[1]${tag}); + addTaggedAdditionalCSS(cssExport[1]${tagCode}); } }); } + ${hmrCode} `; } else { this.emitWarning(new Error(cssLoaderWarning));