From 0590aad0722e6efaa8070a827cf67efad2a117f6 Mon Sep 17 00:00:00 2001
From: Abhishek Singh
Date: Sun, 23 Dec 2018 12:32:56 +0530
Subject: [PATCH 1/5] Add files via upload
---
index.d.ts | 24 +++++++++++++
index.js | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++
index.js.map | 1 +
3 files changed, 124 insertions(+)
create mode 100644 index.d.ts
create mode 100644 index.js
create mode 100644 index.js.map
diff --git a/index.d.ts b/index.d.ts
new file mode 100644
index 0000000..5f07593
--- /dev/null
+++ b/index.d.ts
@@ -0,0 +1,24 @@
+import { Compiler } from 'webpack';
+interface ReplaceConfig {
+ position?: 'before' | 'after';
+ removeTarget?: boolean;
+ target: string;
+}
+interface Config {
+ filter?(fileName: string): boolean;
+ replace?: ReplaceConfig;
+}
+export default class Plugin {
+ private readonly config;
+ static addStyle(html: string, style: string, replaceConfig: ReplaceConfig): string;
+ static removeLinkTag(html: string, cssFileName: string): string;
+ static cleanUp(html: string, replaceConfig: ReplaceConfig): string;
+ private css;
+ private html;
+ constructor(config?: Config);
+ private filter;
+ private prepare;
+ private process;
+ apply(compiler: Compiler): void;
+}
+export {};
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..307f65f
--- /dev/null
+++ b/index.js
@@ -0,0 +1,99 @@
+(function (factory) {
+ if (typeof module === "object" && typeof module.exports === "object") {
+ var v = factory(require, exports);
+ if (v !== undefined) module.exports = v;
+ }
+ else if (typeof define === "function" && define.amd) {
+ define(["require", "exports"], factory);
+ }
+})(function (require, exports) {
+ "use strict";
+ Object.defineProperty(exports, "__esModule", { value: true });
+ var DEFAULT_REPLACE_CONFIG = {
+ target: ''
+ };
+ var Plugin = /** @class */ (function () {
+ function Plugin(config) {
+ if (config === void 0) { config = {}; }
+ this.config = config;
+ this.css = {};
+ this.html = {};
+ }
+ Plugin.addStyle = function (html, style, replaceConfig) {
+ var styleString = "";
+ var replaceValues = [styleString, replaceConfig.target];
+ if (replaceConfig.position === 'after') {
+ replaceValues.reverse();
+ }
+ return html.replace(replaceConfig.target, replaceValues.join(''));
+ };
+ Plugin.removeLinkTag = function (html, cssFileName) {
+ return html.replace(new RegExp("]+href=['\"]" + cssFileName + "['\"][^>]+(>|/>|>)"), '');
+ };
+ Plugin.cleanUp = function (html, replaceConfig) {
+ return replaceConfig.removeTarget
+ ? html.replace(replaceConfig.target, '')
+ : html;
+ };
+ Plugin.prototype.filter = function (fileName) {
+ if (typeof this.config.filter === 'function') {
+ return this.config.filter(fileName);
+ }
+ else {
+ return true;
+ }
+ };
+ Plugin.prototype.prepare = function (_a) {
+ var _this = this;
+ var assets = _a.assets;
+ var isCSS = is('css');
+ var isHTML = is('html');
+ Object.keys(assets).forEach(function (fileName) {
+ if (isCSS(fileName)) {
+ var isCurrentFileNeedsToBeInlined = _this.filter(fileName);
+ if (isCurrentFileNeedsToBeInlined) {
+ _this.css[fileName] = assets[fileName].source();
+ delete assets[fileName];
+ }
+ }
+ else if (isHTML(fileName)) {
+ _this.html[fileName] = assets[fileName].source();
+ }
+ });
+ };
+ Plugin.prototype.process = function (_a, _b) {
+ var _this = this;
+ var assets = _a.assets;
+ var output = _b.output;
+ var publicPath = (output && output.publicPath) || '';
+ var _c = this.config.replace, replaceConfig = _c === void 0 ? DEFAULT_REPLACE_CONFIG : _c;
+ Object.keys(this.html).forEach(function (htmlFileName) {
+ var html = _this.html[htmlFileName];
+ Object.keys(_this.css).forEach(function (key) {
+ html = Plugin.addStyle(html, _this.css[key], replaceConfig);
+ html = Plugin.removeLinkTag(html, publicPath + key);
+ });
+ html = Plugin.cleanUp(html, replaceConfig);
+ assets[htmlFileName] = {
+ source: function () { return html; },
+ size: function () { return html.length; },
+ };
+ });
+ };
+ Plugin.prototype.apply = function (compiler) {
+ var _this = this;
+ compiler.hooks.emit.tapAsync('html-inline-css-webpack-plugin', function (compilation, callback) {
+ _this.prepare(compilation);
+ _this.process(compilation, compiler.options);
+ callback();
+ });
+ };
+ return Plugin;
+ }());
+ exports.default = Plugin;
+ function is(filenameExtension) {
+ var reg = new RegExp("." + filenameExtension + "$");
+ return function (fileName) { return reg.test(fileName); };
+ }
+});
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/index.js.map b/index.js.map
new file mode 100644
index 0000000..0d2bde9
--- /dev/null
+++ b/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
From c18db3dcaa466dc31638776a746d211c89f53b24 Mon Sep 17 00:00:00 2001
From: Abhishek Singh
Date: Sun, 23 Dec 2018 12:35:29 +0530
Subject: [PATCH 2/5] Update index.js
---
index.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/index.js b/index.js
index 307f65f..bf58588 100644
--- a/index.js
+++ b/index.js
@@ -28,7 +28,8 @@
return html.replace(replaceConfig.target, replaceValues.join(''));
};
Plugin.removeLinkTag = function (html, cssFileName) {
- return html.replace(new RegExp("]+href=['\"]" + cssFileName + "['\"][^>]+(>|/>|>)"), '');
+ return html.replace(new RegExp(`]+href=['"]${cssFileName}['"][^>]+(>|\/>|><\/link>)`),
+, '');
};
Plugin.cleanUp = function (html, replaceConfig) {
return replaceConfig.removeTarget
@@ -96,4 +97,4 @@
return function (fileName) { return reg.test(fileName); };
}
});
-//# sourceMappingURL=index.js.map
\ No newline at end of file
+//# sourceMappingURL=index.js.map
From f18cbf1256089e4ef942b7e89dd5b0851fdf6e56 Mon Sep 17 00:00:00 2001
From: Abhishek Singh
Date: Sun, 23 Dec 2018 12:36:04 +0530
Subject: [PATCH 3/5] Update package.json
---
package.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index 2023b9b..dad9878 100644
--- a/package.json
+++ b/package.json
@@ -2,8 +2,8 @@
"name": "html-inline-css-webpack-plugin",
"version": "1.3.2",
"description": "☄️ A webpack plugin for convert external stylesheet to embedded stylesheet, aka document stylesheet",
- "main": "./build/index.js",
- "types": "./build/index.d.ts",
+ "main": "./index.js",
+ "types": "./index.d.ts",
"scripts": {
"build": "rm -rf ./build && tsc"
},
From 7798b4895e9f81695915712de4f4735997884751 Mon Sep 17 00:00:00 2001
From: Abhishek Singh
Date: Sun, 23 Dec 2018 12:42:01 +0530
Subject: [PATCH 4/5] Update index.js
---
index.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/index.js b/index.js
index bf58588..ebd1690 100644
--- a/index.js
+++ b/index.js
@@ -28,7 +28,7 @@
return html.replace(replaceConfig.target, replaceValues.join(''));
};
Plugin.removeLinkTag = function (html, cssFileName) {
- return html.replace(new RegExp(`]+href=['"]${cssFileName}['"][^>]+(>|\/>|><\/link>)`),
+ return html.replace(new RegExp(''),
, '');
};
Plugin.cleanUp = function (html, replaceConfig) {
From 8b962aae3b1b4aeea2741b61c231fe88fc88cf54 Mon Sep 17 00:00:00 2001
From: Abhishek Singh
Date: Sun, 23 Dec 2018 12:43:17 +0530
Subject: [PATCH 5/5] Update index.js
---
index.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/index.js b/index.js
index ebd1690..c5c3b9f 100644
--- a/index.js
+++ b/index.js
@@ -28,7 +28,7 @@
return html.replace(replaceConfig.target, replaceValues.join(''));
};
Plugin.removeLinkTag = function (html, cssFileName) {
- return html.replace(new RegExp(''),
+ return html.replace(new RegExp('')
, '');
};
Plugin.cleanUp = function (html, replaceConfig) {