@compiled/webpack-loader 0.8.7 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__fixtures__/lib/loader-alias.d.ts +1 -1
- package/dist/__fixtures__/lib/webpack-alias.d.ts +1 -1
- package/dist/compiled-loader.js +22 -7
- package/dist/compiled-loader.js.map +1 -1
- package/dist/extract-plugin.js +5 -4
- package/dist/extract-plugin.js.map +1 -1
- package/dist/types.d.ts +26 -2
- package/package.json +11 -11
- package/src/__tests__/extract-plugin.test.ts +28 -11
- package/src/__tests__/test-utils.ts +13 -3
- package/src/compiled-loader.ts +21 -3
- package/src/extract-plugin.ts +8 -4
- package/src/types.ts +30 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const styles: import("@compiled/react").CSSProps
|
|
1
|
+
export declare const styles: import("@compiled/react").CSSProps<unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const styles: import("@compiled/react").CSSProps
|
|
1
|
+
export declare const styles: import("@compiled/react").CSSProps<unknown>;
|
package/dist/compiled-loader.js
CHANGED
|
@@ -30,7 +30,7 @@ let hasErrored = false;
|
|
|
30
30
|
* @returns
|
|
31
31
|
*/
|
|
32
32
|
function getLoaderOptions(context) {
|
|
33
|
-
const { bake = true, extract = false, importReact = undefined, nonce = undefined, resolve = {}, extensions = undefined,
|
|
33
|
+
const { bake = true, extract = false, importReact = undefined, nonce = undefined, resolve = {}, extensions = undefined, parserBabelPlugins = [], transformerBabelPlugins = [], [extract_plugin_1.pluginName]: isPluginEnabled = false, ssr = false, optimizeCss = true, } = typeof context.getOptions === 'undefined'
|
|
34
34
|
? // Webpack v4 flow
|
|
35
35
|
(0, loader_utils_1.getOptions)(context)
|
|
36
36
|
: // Webpack v5 flow
|
|
@@ -55,12 +55,21 @@ function getLoaderOptions(context) {
|
|
|
55
55
|
extensions: {
|
|
56
56
|
type: 'array',
|
|
57
57
|
},
|
|
58
|
-
|
|
58
|
+
parserBabelPlugins: {
|
|
59
|
+
type: 'array',
|
|
60
|
+
},
|
|
61
|
+
transformerBabelPlugins: {
|
|
59
62
|
type: 'array',
|
|
60
63
|
},
|
|
61
64
|
[extract_plugin_1.pluginName]: {
|
|
62
65
|
type: 'boolean',
|
|
63
66
|
},
|
|
67
|
+
ssr: {
|
|
68
|
+
type: 'boolean',
|
|
69
|
+
},
|
|
70
|
+
optimizeCss: {
|
|
71
|
+
type: 'boolean',
|
|
72
|
+
},
|
|
64
73
|
},
|
|
65
74
|
});
|
|
66
75
|
return {
|
|
@@ -70,8 +79,11 @@ function getLoaderOptions(context) {
|
|
|
70
79
|
nonce,
|
|
71
80
|
resolve,
|
|
72
81
|
extensions,
|
|
73
|
-
|
|
82
|
+
parserBabelPlugins,
|
|
83
|
+
transformerBabelPlugins,
|
|
74
84
|
[extract_plugin_1.pluginName]: isPluginEnabled,
|
|
85
|
+
ssr,
|
|
86
|
+
optimizeCss,
|
|
75
87
|
};
|
|
76
88
|
}
|
|
77
89
|
/**
|
|
@@ -81,7 +93,7 @@ function getLoaderOptions(context) {
|
|
|
81
93
|
* @param code
|
|
82
94
|
*/
|
|
83
95
|
async function compiledLoader(code) {
|
|
84
|
-
var _a, _b, _c;
|
|
96
|
+
var _a, _b, _c, _d, _e;
|
|
85
97
|
const callback = this.async();
|
|
86
98
|
// Bail early if Compiled isn't in the module or we're looking at compiled runtime code
|
|
87
99
|
if (code.indexOf('@compiled/react') === -1 ||
|
|
@@ -90,19 +102,20 @@ async function compiledLoader(code) {
|
|
|
90
102
|
}
|
|
91
103
|
try {
|
|
92
104
|
const includedFiles = [];
|
|
93
|
-
const
|
|
105
|
+
const _f = getLoaderOptions(this), { resolve } = _f, options = __rest(_f, ["resolve"]);
|
|
94
106
|
// Transform to an AST using the local babel config.
|
|
95
107
|
const ast = await (0, core_1.parseAsync)(code, {
|
|
96
108
|
filename: this.resourcePath,
|
|
97
109
|
caller: { name: 'compiled' },
|
|
98
110
|
rootMode: 'upward-optional',
|
|
111
|
+
plugins: (_a = options.transformerBabelPlugins) !== null && _a !== void 0 ? _a : undefined,
|
|
99
112
|
});
|
|
100
113
|
// Setup the default resolver, where webpack will merge any passed in options with the default
|
|
101
114
|
// resolve configuration. Ideally, we use this.getResolve({ ...resolve, useSyncFileSystemCalls: true, })
|
|
102
115
|
// However, it does not work correctly when in development mode :/
|
|
103
116
|
const resolver = enhanced_resolve_1.ResolverFactory.createResolver(Object.assign(Object.assign(Object.assign({
|
|
104
117
|
// @ts-expect-error
|
|
105
|
-
fileSystem: new enhanced_resolve_1.CachedInputFileSystem(fs_1.default, 4000) }, ((
|
|
118
|
+
fileSystem: new enhanced_resolve_1.CachedInputFileSystem(fs_1.default, 4000) }, ((_c = (_b = this._compilation) === null || _b === void 0 ? void 0 : _b.options.resolve) !== null && _c !== void 0 ? _c : {})), resolve), {
|
|
106
119
|
// This makes the resolver invoke the callback synchronously
|
|
107
120
|
useSyncFileSystemCalls: true }));
|
|
108
121
|
// Transform using the Compiled Babel Plugin - we deliberately turn off using the local config.
|
|
@@ -112,10 +125,12 @@ async function compiledLoader(code) {
|
|
|
112
125
|
sourceMaps: true,
|
|
113
126
|
filename: this.resourcePath,
|
|
114
127
|
plugins: [
|
|
128
|
+
...((_d = options.transformerBabelPlugins) !== null && _d !== void 0 ? _d : []),
|
|
115
129
|
options.extract && [
|
|
116
130
|
'@compiled/babel-plugin-strip-runtime',
|
|
117
131
|
{
|
|
118
132
|
styleSheetPath: `@compiled/webpack-loader/css-loader!@compiled/webpack-loader/css-loader/${extract_plugin_1.styleSheetName}.css`,
|
|
133
|
+
compiledRequireExclude: options.ssr,
|
|
119
134
|
},
|
|
120
135
|
],
|
|
121
136
|
options.bake && [
|
|
@@ -132,7 +147,7 @@ async function compiledLoader(code) {
|
|
|
132
147
|
includedFiles.forEach((file) => {
|
|
133
148
|
this.addDependency((0, path_1.normalize)(file));
|
|
134
149
|
});
|
|
135
|
-
callback(null, (result === null || result === void 0 ? void 0 : result.code) || '', (
|
|
150
|
+
callback(null, (result === null || result === void 0 ? void 0 : result.code) || '', (_e = result === null || result === void 0 ? void 0 : result.map) !== null && _e !== void 0 ? _e : undefined);
|
|
136
151
|
}
|
|
137
152
|
catch (e) {
|
|
138
153
|
// @ts-expect-error Not checking for error type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiled-loader.js","sourceRoot":"","sources":["../src/compiled-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,+BAA0C;AAE1C,sCAAgE;AAChE,2CAAyD;AACzD,uDAA0E;AAC1E,+CAA0C;AAG1C,qDAA8D;AAG9D,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,OAA6C;IACrE,MAAM,EACJ,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,KAAK,EACf,WAAW,GAAG,SAAS,EACvB,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,EAAE,EACZ,UAAU,GAAG,SAAS,EACtB,
|
|
1
|
+
{"version":3,"file":"compiled-loader.js","sourceRoot":"","sources":["../src/compiled-loader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,+BAA0C;AAE1C,sCAAgE;AAChE,2CAAyD;AACzD,uDAA0E;AAC1E,+CAA0C;AAG1C,qDAA8D;AAG9D,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,OAA6C;IACrE,MAAM,EACJ,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,KAAK,EACf,WAAW,GAAG,SAAS,EACvB,KAAK,GAAG,SAAS,EACjB,OAAO,GAAG,EAAE,EACZ,UAAU,GAAG,SAAS,EACtB,kBAAkB,GAAG,EAAE,EACvB,uBAAuB,GAAG,EAAE,EAC5B,CAAC,2BAAU,CAAC,EAAE,eAAe,GAAG,KAAK,EACrC,GAAG,GAAG,KAAK,EACX,WAAW,GAAG,IAAI,GACnB,GAA0B,OAAO,OAAO,CAAC,UAAU,KAAK,WAAW;QAClE,CAAC,CAAC,kBAAkB;YAClB,IAAA,yBAAU,EAAC,OAAO,CAAC;QACrB,CAAC,CAAC,kBAAkB;YAClB,OAAO,CAAC,UAAU,CAAC;gBACjB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE;wBACJ,IAAI,EAAE,SAAS;qBAChB;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,SAAS;qBAChB;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;qBAChB;oBACD,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;qBACf;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;qBACf;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,OAAO;qBACd;oBACD,kBAAkB,EAAE;wBAClB,IAAI,EAAE,OAAO;qBACd;oBACD,uBAAuB,EAAE;wBACvB,IAAI,EAAE,OAAO;qBACd;oBACD,CAAC,2BAAU,CAAC,EAAE;wBACZ,IAAI,EAAE,SAAS;qBAChB;oBACD,GAAG,EAAE;wBACH,IAAI,EAAE,SAAS;qBAChB;oBACD,WAAW,EAAE;wBACX,IAAI,EAAE,SAAS;qBAChB;iBACF;aACF,CAAC,CAAC;IAEP,OAAO;QACL,IAAI;QACJ,OAAO;QACP,WAAW;QACX,KAAK;QACL,OAAO;QACP,UAAU;QACV,kBAAkB;QAClB,uBAAuB;QACvB,CAAC,2BAAU,CAAC,EAAE,eAAe;QAC7B,GAAG;QACH,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACY,KAAK,UAAU,cAAc,CAE1C,IAAY;;IAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAE9B,uFAAuF;IACvF,IACE,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAC3D;QACA,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC7B;IAED,IAAI;QACF,MAAM,aAAa,GAAa,EAAE,CAAC;QACnC,MAAM,KAA0B,gBAAgB,CAAC,IAAI,CAAC,EAAhD,EAAE,OAAO,OAAuC,EAAlC,OAAO,cAArB,WAAuB,CAAyB,CAAC;QAEvD,oDAAoD;QACpD,MAAM,GAAG,GAAG,MAAM,IAAA,iBAAU,EAAC,IAAI,EAAE;YACjC,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;YAC5B,QAAQ,EAAE,iBAAiB;YAC3B,OAAO,EAAE,MAAA,OAAO,CAAC,uBAAuB,mCAAI,SAAS;SACtD,CAAC,CAAC;QAEH,8FAA8F;QAC9F,wGAAwG;QACxG,kEAAkE;QAClE,MAAM,QAAQ,GAAG,kCAAe,CAAC,cAAc;YAC7C,mBAAmB;YACnB,UAAU,EAAE,IAAI,wCAAqB,CAAC,YAAE,EAAE,IAAI,CAAC,IAC5C,CAAC,MAAA,MAAA,IAAI,CAAC,YAAY,0CAAE,OAAO,CAAC,OAAO,mCAAI,EAAE,CAAC,GAC1C,OAAO;YACV,4DAA4D;YAC5D,sBAAsB,EAAE,IAAI,IAC5B,CAAC;QAEH,+FAA+F;QAC/F,MAAM,MAAM,GAAG,MAAM,IAAA,4BAAqB,EAAC,GAAI,EAAE,IAAI,EAAE;YACrD,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI,CAAC,YAAY;YAC3B,OAAO,EAAE;gBACP,GAAG,CAAC,MAAA,OAAO,CAAC,uBAAuB,mCAAI,EAAE,CAAC;gBAC1C,OAAO,CAAC,OAAO,IAAI;oBACjB,sCAAsC;oBACtC;wBACE,cAAc,EAAE,2EAA2E,+BAAc,MAAM;wBAC/G,sBAAsB,EAAE,OAAO,CAAC,GAAG;qBACpC;iBACF;gBACD,OAAO,CAAC,IAAI,IAAI;oBACd,wBAAwB;oDAEnB,OAAO,KACV,eAAe,EAAE,CAAC,KAAe,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAClE,QAAQ,EAAE;4BACR,6EAA6E;4BAC7E,WAAW,EAAE,CAAC,OAAe,EAAE,OAAe,EAAE,EAAE;gCAChD,OAAO,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,IAAA,cAAO,EAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;4BAC7D,CAAC;yBACF;iBAEJ;aACF,CAAC,MAAM,CAAC,iBAAS,CAAC;SACpB,CAAC,CAAC;QAEH,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAC7B,IAAI,CAAC,aAAa,CAAC,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,IAAI,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,KAAI,EAAE,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,GAAG,mCAAI,SAAS,CAAC,CAAC;KAC9D;IAAC,OAAO,CAAU,EAAE;QACnB,+CAA+C;QAC/C,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7E,QAAQ,CAAC,KAAK,CAAC,CAAC;KACjB;AACH,CAAC;AA/ED,iCA+EC;AAED,SAAgB,KAAK;IACnB,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,2BAAU,CAAC,EAAE;QAC1D,IAAI,CAAC,SAAS,CACZ,IAAA,mBAAW,EAAC,gBAAgB,CAAC,CAC3B,gLAAgL,CACjL,CACF,CAAC;QAEF,4FAA4F;QAC5F,UAAU,GAAG,IAAI,CAAC;KACnB;AACH,CAAC;AAZD,sBAYC"}
|
package/dist/extract-plugin.js
CHANGED
|
@@ -28,7 +28,7 @@ exports.styleSheetName = 'compiled-css';
|
|
|
28
28
|
const getCSSAssets = (assets) => {
|
|
29
29
|
return Object.keys(assets)
|
|
30
30
|
.filter((assetName) => {
|
|
31
|
-
return assetName.
|
|
31
|
+
return assetName.includes(exports.styleSheetName) && assetName.endsWith('.css');
|
|
32
32
|
})
|
|
33
33
|
.map((assetName) => ({ name: assetName, source: assets[assetName], info: {} }));
|
|
34
34
|
};
|
|
@@ -39,7 +39,7 @@ const getCSSAssets = (assets) => {
|
|
|
39
39
|
*
|
|
40
40
|
* @param compiler
|
|
41
41
|
*/
|
|
42
|
-
const forceCSSIntoOneStyleSheet = (compiler) => {
|
|
42
|
+
const forceCSSIntoOneStyleSheet = (compiler, options) => {
|
|
43
43
|
const cacheGroup = {
|
|
44
44
|
compiledCSS: {
|
|
45
45
|
name: exports.styleSheetName,
|
|
@@ -48,6 +48,7 @@ const forceCSSIntoOneStyleSheet = (compiler) => {
|
|
|
48
48
|
// We merge only CSS from Compiled.
|
|
49
49
|
test: /css-loader\/compiled-css\.css$/,
|
|
50
50
|
enforce: true,
|
|
51
|
+
priority: Infinity,
|
|
51
52
|
},
|
|
52
53
|
};
|
|
53
54
|
if (!compiler.options.optimization) {
|
|
@@ -61,7 +62,7 @@ const forceCSSIntoOneStyleSheet = (compiler) => {
|
|
|
61
62
|
if (!compiler.options.optimization.splitChunks.cacheGroups) {
|
|
62
63
|
compiler.options.optimization.splitChunks.cacheGroups = {};
|
|
63
64
|
}
|
|
64
|
-
Object.assign(compiler.options.optimization.splitChunks.cacheGroups, cacheGroup);
|
|
65
|
+
Object.assign(compiler.options.optimization.splitChunks.cacheGroups, options.cacheGroupExclude ? {} : cacheGroup);
|
|
65
66
|
};
|
|
66
67
|
/**
|
|
67
68
|
* Pushes a new loader onto the compiler.
|
|
@@ -101,7 +102,7 @@ class CompiledExtractPlugin {
|
|
|
101
102
|
apply(compiler) {
|
|
102
103
|
const { RawSource } = (0, utils_2.getSources)(compiler);
|
|
103
104
|
pushNodeModulesExtractLoader(compiler, __classPrivateFieldGet(this, _CompiledExtractPlugin_options, "f"));
|
|
104
|
-
forceCSSIntoOneStyleSheet(compiler);
|
|
105
|
+
forceCSSIntoOneStyleSheet(compiler, __classPrivateFieldGet(this, _CompiledExtractPlugin_options, "f"));
|
|
105
106
|
compiler.hooks.compilation.tap(exports.pluginName, (compilation) => {
|
|
106
107
|
(0, utils_2.setPluginConfiguredOption)(compilation.options.module.rules, exports.pluginName);
|
|
107
108
|
(0, utils_2.getOptimizeAssetsHook)(compiler, compilation).tap(exports.pluginName, (assets) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-plugin.js","sourceRoot":"","sources":["../src/extract-plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAAqC;AACrC,2CAAyD;AAIzD,mCAKiB;AAEJ,QAAA,UAAU,GAAG,uBAAuB,CAAC;AACrC,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,CAAC,MAA6B,EAAE,EAAE;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QACpB,OAAO,SAAS,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"extract-plugin.js","sourceRoot":"","sources":["../src/extract-plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uCAAqC;AACrC,2CAAyD;AAIzD,mCAKiB;AAEJ,QAAA,UAAU,GAAG,uBAAuB,CAAC;AACrC,QAAA,cAAc,GAAG,cAAc,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,CAAC,MAA6B,EAAE,EAAE;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QACpB,OAAO,SAAS,CAAC,QAAQ,CAAC,sBAAc,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1E,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,yBAAyB,GAAG,CAAC,QAAkB,EAAE,OAAqC,EAAE,EAAE;IAC9F,MAAM,UAAU,GAAG;QACjB,WAAW,EAAE;YACX,IAAI,EAAE,sBAAc;YACpB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,KAAK;YACb,mCAAmC;YACnC,IAAI,EAAE,gCAAgC;YACtC,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE;QAClC,QAAQ,CAAC,OAAO,CAAC,YAAY,GAAG,EAAE,CAAC;KACpC;IAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE;QAC9C,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,GAAG;YAC1C,WAAW,EAAE,EAAE;SAChB,CAAC;KACH;IAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EAAE;QAC1D,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,GAAG,EAAE,CAAC;KAC5D;IAED,MAAM,CAAC,MAAM,CACX,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,WAAW,EACrD,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAC5C,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,4BAA4B,GAAG,CACnC,QAAkB,EAClB,OAAqC,EAC/B,EAAE;IACR,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;QAC5B,MAAM,IAAA,mBAAW,EAAC,gBAAgB,CAAC,CAAC,4BAA4B,CAAC,CAAC;KACnE;IAED,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;QACjC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,iBAAS,CAAC,EAAE;QACjF,OAAO,EAAE,OAAO,CAAC,kBAAkB;QACnC,OAAO,EAAE,OAAO,CAAC,kBAAkB;QACnC,GAAG,EAAE;YACH,MAAM,EAAE,0BAA0B;YAClC,OAAO,EAAE;gBACP,uGAAuG;gBACvG,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,IAAI;gBACb,CAAC,kBAAU,CAAC,EAAE,IAAI;aACnB;SACF;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAa,qBAAqB;IAGhC,YAAY,UAAwC,EAAE;QAFtD,iDAAuC;QAGrC,uBAAA,IAAI,kCAAY,OAAO,MAAA,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,QAAkB;QACtB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,kBAAU,EAAC,QAAQ,CAAC,CAAC;QAE3C,4BAA4B,CAAC,QAAQ,EAAE,uBAAA,IAAI,sCAAS,CAAC,CAAC;QACtD,yBAAyB,CAAC,QAAQ,EAAE,uBAAA,IAAI,sCAAS,CAAC,CAAC;QAEnD,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,kBAAU,EAAE,CAAC,WAAW,EAAE,EAAE;YACzD,IAAA,iCAAyB,EAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,kBAAU,CAAC,CAAC;YAExE,IAAA,6BAAqB,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,kBAAU,EAAE,CAAC,MAAM,EAAE,EAAE;gBACtE,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;gBACvC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;oBAC1B,OAAO;iBACR;gBAED,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;gBAC1B,MAAM,QAAQ,GAAG,IAAA,8BAAsB,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACtD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAA,UAAI,EAAC,QAAQ,CAAC,CAAC,CAAC;gBAEhD,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA9BD,sDA8BC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PluginItem } from '@babel/core';
|
|
1
2
|
import type { ParserPlugin } from '@babel/parser';
|
|
2
3
|
import type { ResolveOptions, RuleSetCondition } from 'webpack';
|
|
3
4
|
import type { pluginName } from './extract-plugin';
|
|
@@ -18,6 +19,11 @@ export interface CompiledLoaderOptions {
|
|
|
18
19
|
* When using @babel/preset-react with the automatic runtime this is not needed and can be set to false.
|
|
19
20
|
*/
|
|
20
21
|
importReact?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Will run additional cssnano plugin to normalize CSS during build.
|
|
24
|
+
* Default to `true`.
|
|
25
|
+
*/
|
|
26
|
+
optimizeCss?: boolean;
|
|
21
27
|
/**
|
|
22
28
|
* Enables CSP support,
|
|
23
29
|
* read [Security](https://compiledcssinjs.com/docs/security) for more information.
|
|
@@ -32,13 +38,26 @@ export interface CompiledLoaderOptions {
|
|
|
32
38
|
*/
|
|
33
39
|
extensions?: string[];
|
|
34
40
|
/**
|
|
35
|
-
* List of babel plugins to be applied to evaluated files
|
|
41
|
+
* List of transformer babel plugins to be applied to evaluated files
|
|
42
|
+
*
|
|
43
|
+
* See the [babel docs](https://babeljs.io/docs/en/plugins/#transform-plugins)
|
|
36
44
|
*/
|
|
37
|
-
|
|
45
|
+
transformerBabelPlugins?: PluginItem[];
|
|
46
|
+
/**
|
|
47
|
+
* List of parse babel plugins to be applied to evaluated files
|
|
48
|
+
*
|
|
49
|
+
* See the [babel docs](https://babeljs.io/docs/en/plugins/#syntax-plugins)
|
|
50
|
+
*/
|
|
51
|
+
parserBabelPlugins?: ParserPlugin[];
|
|
38
52
|
/**
|
|
39
53
|
* Set to true if CompiledExtractPlugin has been set up correctly
|
|
40
54
|
*/
|
|
41
55
|
[pluginName]?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Build in a node environment.
|
|
58
|
+
* Defaults to `false`.
|
|
59
|
+
*/
|
|
60
|
+
ssr?: boolean;
|
|
42
61
|
}
|
|
43
62
|
export interface CompiledExtractPluginOptions {
|
|
44
63
|
/**
|
|
@@ -56,4 +75,9 @@ export interface CompiledExtractPluginOptions {
|
|
|
56
75
|
* See: https://webpack.js.org/configuration/module/#condition
|
|
57
76
|
*/
|
|
58
77
|
nodeModulesExclude?: RuleSetCondition;
|
|
78
|
+
/**
|
|
79
|
+
* When set will prevent additional cacheGroup chunk to be created.
|
|
80
|
+
* Eg. This may be required in SSR to prevent side-effects
|
|
81
|
+
*/
|
|
82
|
+
cacheGroupExclude?: boolean;
|
|
59
83
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@compiled/webpack-loader",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.2",
|
|
4
4
|
"description": "A familiar and performant compile time CSS-in-JS library for React.",
|
|
5
5
|
"homepage": "https://compiledcssinjs.com/docs/pkg-webpack-loader",
|
|
6
6
|
"bugs": "https://github.com/atlassian-labs/compiled/issues/new?assignees=&labels=bug&template=bug_report.md",
|
|
@@ -20,25 +20,25 @@
|
|
|
20
20
|
"src"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@babel/core": "^7.17.
|
|
24
|
-
"@compiled/babel-plugin": "^0.
|
|
25
|
-
"@compiled/babel-plugin-strip-runtime": "^0.
|
|
26
|
-
"@compiled/css": "^0.8.
|
|
27
|
-
"@compiled/react": "0.
|
|
23
|
+
"@babel/core": "^7.17.10",
|
|
24
|
+
"@compiled/babel-plugin": "^0.16.3",
|
|
25
|
+
"@compiled/babel-plugin-strip-runtime": "^0.16.0",
|
|
26
|
+
"@compiled/css": "^0.8.4",
|
|
27
|
+
"@compiled/react": "0.11.0",
|
|
28
28
|
"@compiled/utils": "^0.6.16",
|
|
29
|
-
"enhanced-resolve": "^5.
|
|
29
|
+
"enhanced-resolve": "^5.10.0",
|
|
30
30
|
"loader-utils": "^2.0.2",
|
|
31
31
|
"webpack-sources": "^3.2.3"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"babel-loader": "^8.2.4",
|
|
35
35
|
"css-loader": "^6.7.1",
|
|
36
|
-
"memfs": "^3.4.
|
|
36
|
+
"memfs": "^3.4.7",
|
|
37
37
|
"mini-css-extract-plugin": "^1.6.2",
|
|
38
38
|
"react": "^17.0.2",
|
|
39
|
-
"ts-node": "^10.
|
|
40
|
-
"tsconfig-paths": "^3.
|
|
41
|
-
"webpack": "^5.
|
|
39
|
+
"ts-node": "^10.8.2",
|
|
40
|
+
"tsconfig-paths": "^3.14.1",
|
|
41
|
+
"webpack": "^5.71.0"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"webpack": ">= 4.46.0"
|
|
@@ -4,7 +4,6 @@ import { bundle as bundleEntry } from './test-utils';
|
|
|
4
4
|
import type { BundleOptions } from './test-utils';
|
|
5
5
|
|
|
6
6
|
describe('CompiledExtractPlugin', () => {
|
|
7
|
-
const assetName = 'static/compiled-css.css';
|
|
8
7
|
const fixturesPath = join(__dirname, '..', '__fixtures__');
|
|
9
8
|
|
|
10
9
|
const bundle = (entry: string, options: Omit<BundleOptions, 'mode'> = {}) =>
|
|
@@ -12,6 +11,13 @@ describe('CompiledExtractPlugin', () => {
|
|
|
12
11
|
...options,
|
|
13
12
|
extract: true,
|
|
14
13
|
mode: 'production',
|
|
14
|
+
}).then((assets) => {
|
|
15
|
+
for (const assetName in assets) {
|
|
16
|
+
if (assetName.includes('compiled-css') && assetName.endsWith('.css')) {
|
|
17
|
+
return assets[assetName];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
15
21
|
});
|
|
16
22
|
|
|
17
23
|
it('throws when the plugin is not configured', async () => {
|
|
@@ -26,10 +32,18 @@ describe('CompiledExtractPlugin', () => {
|
|
|
26
32
|
]);
|
|
27
33
|
}, 10000);
|
|
28
34
|
|
|
35
|
+
it('should not generate a single style sheet if cacheGroup is disabled', async () => {
|
|
36
|
+
const actual = await bundle(join(fixturesPath, 'local-styles.tsx'), {
|
|
37
|
+
disableCacheGroup: true,
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
expect(actual).toBe(undefined);
|
|
41
|
+
}, 10000);
|
|
42
|
+
|
|
29
43
|
it('extracts local styles', async () => {
|
|
30
44
|
const actual = await bundle(join(fixturesPath, 'local-styles.tsx'));
|
|
31
45
|
|
|
32
|
-
expect(actual
|
|
46
|
+
expect(actual).toMatchInlineSnapshot(`
|
|
33
47
|
"._1wybdlk8{font-size:14px}
|
|
34
48
|
._syaz13q2{color:blue}
|
|
35
49
|
"
|
|
@@ -41,7 +55,7 @@ describe('CompiledExtractPlugin', () => {
|
|
|
41
55
|
|
|
42
56
|
// This should not contain any styles from the unused relative import ./common/css-prop, which includes
|
|
43
57
|
// {color:coral} or {border:2px solid coral}
|
|
44
|
-
expect(actual
|
|
58
|
+
expect(actual).toMatchInlineSnapshot(`
|
|
45
59
|
"
|
|
46
60
|
._syaz5scu{color:red}
|
|
47
61
|
._syazmu8g{color:blueviolet}
|
|
@@ -55,7 +69,7 @@ describe('CompiledExtractPlugin', () => {
|
|
|
55
69
|
it('extracts styles imported through a webpack alias', async () => {
|
|
56
70
|
const assets = await bundle(join(fixturesPath, 'webpack-alias.tsx'));
|
|
57
71
|
|
|
58
|
-
expect(assets
|
|
72
|
+
expect(assets).toMatchInlineSnapshot(`
|
|
59
73
|
"._syaz13q2{color:blue}
|
|
60
74
|
"
|
|
61
75
|
`);
|
|
@@ -71,21 +85,24 @@ describe('CompiledExtractPlugin', () => {
|
|
|
71
85
|
},
|
|
72
86
|
});
|
|
73
87
|
|
|
74
|
-
expect(assets
|
|
88
|
+
expect(assets).toMatchInlineSnapshot(`
|
|
75
89
|
"._syaz1if8{color:indigo}
|
|
76
90
|
"
|
|
77
91
|
`);
|
|
78
92
|
}, 10000);
|
|
79
93
|
|
|
80
94
|
it('extracts styles from an async chunk', async () => {
|
|
81
|
-
const
|
|
95
|
+
const assets = await bundleEntry(join(fixturesPath, 'async-styles.ts'), {
|
|
96
|
+
extract: true,
|
|
97
|
+
mode: 'production',
|
|
98
|
+
});
|
|
82
99
|
|
|
83
100
|
// Only generate one CSS bundle
|
|
84
|
-
const cssFiles = Object.keys(
|
|
101
|
+
const cssFiles = Object.keys(assets).filter((key) => key.endsWith('.css'));
|
|
85
102
|
expect(cssFiles).toHaveLength(1);
|
|
86
103
|
|
|
87
104
|
// Extract the styles into said bundle
|
|
88
|
-
expect(
|
|
105
|
+
expect(assets[cssFiles[0]]).toMatchInlineSnapshot(`
|
|
89
106
|
"._19it1e35{border:2px solid coral}
|
|
90
107
|
._syaz1vyr{color:coral}
|
|
91
108
|
"
|
|
@@ -95,7 +112,7 @@ describe('CompiledExtractPlugin', () => {
|
|
|
95
112
|
it('extracts styles from a pre-built babel files', async () => {
|
|
96
113
|
const actual = await bundle(join(fixturesPath, 'babel.tsx'));
|
|
97
114
|
|
|
98
|
-
expect(actual
|
|
115
|
+
expect(actual).toMatchInlineSnapshot(`
|
|
99
116
|
"._19pk1ul9{margin-top:30px}
|
|
100
117
|
._19bvftgi{padding-left:8px}
|
|
101
118
|
._n3tdftgi{padding-bottom:8px}
|
|
@@ -111,7 +128,7 @@ describe('CompiledExtractPlugin', () => {
|
|
|
111
128
|
it('extracts important styles', async () => {
|
|
112
129
|
const actual = await bundle(join(fixturesPath, 'important-styles.tsx'));
|
|
113
130
|
|
|
114
|
-
expect(actual
|
|
131
|
+
expect(actual).toMatchInlineSnapshot(`
|
|
115
132
|
"._syaz13q2{color:blue}
|
|
116
133
|
._1wybc038{font-size:12!important}
|
|
117
134
|
"
|
|
@@ -121,7 +138,7 @@ describe('CompiledExtractPlugin', () => {
|
|
|
121
138
|
it('should find bindings', async () => {
|
|
122
139
|
const actual = await bundle(join(fixturesPath, 'binding-not-found.tsx'));
|
|
123
140
|
|
|
124
|
-
expect(actual
|
|
141
|
+
expect(actual).toMatchInlineSnapshot(`
|
|
125
142
|
"._syaz1r31{color:currentColor}
|
|
126
143
|
._ajmmnqa1{-webkit-text-decoration-style:solid;text-decoration-style:solid}
|
|
127
144
|
._1hmsglyw{-webkit-text-decoration-line:none;text-decoration-line:none}
|
|
@@ -10,13 +10,20 @@ import type { ResolveOptions } from '../index';
|
|
|
10
10
|
export interface BundleOptions {
|
|
11
11
|
extract?: boolean;
|
|
12
12
|
disableExtractPlugin?: boolean;
|
|
13
|
+
disableCacheGroup?: boolean;
|
|
13
14
|
mode: 'development' | 'production';
|
|
14
15
|
resolve?: ResolveOptions;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export function bundle(
|
|
18
19
|
entry: string,
|
|
19
|
-
{
|
|
20
|
+
{
|
|
21
|
+
extract = false,
|
|
22
|
+
disableExtractPlugin = false,
|
|
23
|
+
disableCacheGroup = false,
|
|
24
|
+
mode,
|
|
25
|
+
resolve = {},
|
|
26
|
+
}: BundleOptions
|
|
20
27
|
): Promise<Record<string, string>> {
|
|
21
28
|
const outputPath = join(__dirname, 'dist');
|
|
22
29
|
const compiler = webpack({
|
|
@@ -41,6 +48,7 @@ export function bundle(
|
|
|
41
48
|
options: {
|
|
42
49
|
extract,
|
|
43
50
|
importReact: false,
|
|
51
|
+
optimizeCss: false,
|
|
44
52
|
resolve,
|
|
45
53
|
},
|
|
46
54
|
},
|
|
@@ -61,8 +69,10 @@ export function bundle(
|
|
|
61
69
|
path: outputPath,
|
|
62
70
|
},
|
|
63
71
|
plugins: [
|
|
64
|
-
new MiniCssExtractPlugin({ filename: 'static/[name].css' }),
|
|
65
|
-
...(disableExtractPlugin
|
|
72
|
+
new MiniCssExtractPlugin({ filename: 'static/[name].[contenthash].css' }),
|
|
73
|
+
...(disableExtractPlugin
|
|
74
|
+
? []
|
|
75
|
+
: [new CompiledExtractPlugin(disableCacheGroup ? { cacheGroupExclude: true } : {})]),
|
|
66
76
|
],
|
|
67
77
|
resolve: {
|
|
68
78
|
alias: {
|
package/src/compiled-loader.ts
CHANGED
|
@@ -26,8 +26,11 @@ function getLoaderOptions(context: LoaderContext<CompiledLoaderOptions>) {
|
|
|
26
26
|
nonce = undefined,
|
|
27
27
|
resolve = {},
|
|
28
28
|
extensions = undefined,
|
|
29
|
-
|
|
29
|
+
parserBabelPlugins = [],
|
|
30
|
+
transformerBabelPlugins = [],
|
|
30
31
|
[pluginName]: isPluginEnabled = false,
|
|
32
|
+
ssr = false,
|
|
33
|
+
optimizeCss = true,
|
|
31
34
|
}: CompiledLoaderOptions = typeof context.getOptions === 'undefined'
|
|
32
35
|
? // Webpack v4 flow
|
|
33
36
|
getOptions(context)
|
|
@@ -53,12 +56,21 @@ function getLoaderOptions(context: LoaderContext<CompiledLoaderOptions>) {
|
|
|
53
56
|
extensions: {
|
|
54
57
|
type: 'array',
|
|
55
58
|
},
|
|
56
|
-
|
|
59
|
+
parserBabelPlugins: {
|
|
60
|
+
type: 'array',
|
|
61
|
+
},
|
|
62
|
+
transformerBabelPlugins: {
|
|
57
63
|
type: 'array',
|
|
58
64
|
},
|
|
59
65
|
[pluginName]: {
|
|
60
66
|
type: 'boolean',
|
|
61
67
|
},
|
|
68
|
+
ssr: {
|
|
69
|
+
type: 'boolean',
|
|
70
|
+
},
|
|
71
|
+
optimizeCss: {
|
|
72
|
+
type: 'boolean',
|
|
73
|
+
},
|
|
62
74
|
},
|
|
63
75
|
});
|
|
64
76
|
|
|
@@ -69,8 +81,11 @@ function getLoaderOptions(context: LoaderContext<CompiledLoaderOptions>) {
|
|
|
69
81
|
nonce,
|
|
70
82
|
resolve,
|
|
71
83
|
extensions,
|
|
72
|
-
|
|
84
|
+
parserBabelPlugins,
|
|
85
|
+
transformerBabelPlugins,
|
|
73
86
|
[pluginName]: isPluginEnabled,
|
|
87
|
+
ssr,
|
|
88
|
+
optimizeCss,
|
|
74
89
|
};
|
|
75
90
|
}
|
|
76
91
|
|
|
@@ -103,6 +118,7 @@ export default async function compiledLoader(
|
|
|
103
118
|
filename: this.resourcePath,
|
|
104
119
|
caller: { name: 'compiled' },
|
|
105
120
|
rootMode: 'upward-optional',
|
|
121
|
+
plugins: options.transformerBabelPlugins ?? undefined,
|
|
106
122
|
});
|
|
107
123
|
|
|
108
124
|
// Setup the default resolver, where webpack will merge any passed in options with the default
|
|
@@ -124,10 +140,12 @@ export default async function compiledLoader(
|
|
|
124
140
|
sourceMaps: true,
|
|
125
141
|
filename: this.resourcePath,
|
|
126
142
|
plugins: [
|
|
143
|
+
...(options.transformerBabelPlugins ?? []),
|
|
127
144
|
options.extract && [
|
|
128
145
|
'@compiled/babel-plugin-strip-runtime',
|
|
129
146
|
{
|
|
130
147
|
styleSheetPath: `@compiled/webpack-loader/css-loader!@compiled/webpack-loader/css-loader/${styleSheetName}.css`,
|
|
148
|
+
compiledRequireExclude: options.ssr,
|
|
131
149
|
},
|
|
132
150
|
],
|
|
133
151
|
options.bake && [
|
package/src/extract-plugin.ts
CHANGED
|
@@ -23,7 +23,7 @@ export const styleSheetName = 'compiled-css';
|
|
|
23
23
|
const getCSSAssets = (assets: Compilation['assets']) => {
|
|
24
24
|
return Object.keys(assets)
|
|
25
25
|
.filter((assetName) => {
|
|
26
|
-
return assetName.
|
|
26
|
+
return assetName.includes(styleSheetName) && assetName.endsWith('.css');
|
|
27
27
|
})
|
|
28
28
|
.map((assetName) => ({ name: assetName, source: assets[assetName], info: {} }));
|
|
29
29
|
};
|
|
@@ -35,7 +35,7 @@ const getCSSAssets = (assets: Compilation['assets']) => {
|
|
|
35
35
|
*
|
|
36
36
|
* @param compiler
|
|
37
37
|
*/
|
|
38
|
-
const forceCSSIntoOneStyleSheet = (compiler: Compiler) => {
|
|
38
|
+
const forceCSSIntoOneStyleSheet = (compiler: Compiler, options: CompiledExtractPluginOptions) => {
|
|
39
39
|
const cacheGroup = {
|
|
40
40
|
compiledCSS: {
|
|
41
41
|
name: styleSheetName,
|
|
@@ -44,6 +44,7 @@ const forceCSSIntoOneStyleSheet = (compiler: Compiler) => {
|
|
|
44
44
|
// We merge only CSS from Compiled.
|
|
45
45
|
test: /css-loader\/compiled-css\.css$/,
|
|
46
46
|
enforce: true,
|
|
47
|
+
priority: Infinity,
|
|
47
48
|
},
|
|
48
49
|
};
|
|
49
50
|
|
|
@@ -61,7 +62,10 @@ const forceCSSIntoOneStyleSheet = (compiler: Compiler) => {
|
|
|
61
62
|
compiler.options.optimization.splitChunks.cacheGroups = {};
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
Object.assign(
|
|
65
|
+
Object.assign(
|
|
66
|
+
compiler.options.optimization.splitChunks.cacheGroups,
|
|
67
|
+
options.cacheGroupExclude ? {} : cacheGroup
|
|
68
|
+
);
|
|
65
69
|
};
|
|
66
70
|
|
|
67
71
|
/**
|
|
@@ -110,7 +114,7 @@ export class CompiledExtractPlugin {
|
|
|
110
114
|
const { RawSource } = getSources(compiler);
|
|
111
115
|
|
|
112
116
|
pushNodeModulesExtractLoader(compiler, this.#options);
|
|
113
|
-
forceCSSIntoOneStyleSheet(compiler);
|
|
117
|
+
forceCSSIntoOneStyleSheet(compiler, this.#options);
|
|
114
118
|
|
|
115
119
|
compiler.hooks.compilation.tap(pluginName, (compilation) => {
|
|
116
120
|
setPluginConfiguredOption(compilation.options.module.rules, pluginName);
|
package/src/types.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PluginItem } from '@babel/core';
|
|
1
2
|
import type { ParserPlugin } from '@babel/parser';
|
|
2
3
|
import type { ResolveOptions, RuleSetCondition } from 'webpack';
|
|
3
4
|
|
|
@@ -24,6 +25,12 @@ export interface CompiledLoaderOptions {
|
|
|
24
25
|
*/
|
|
25
26
|
importReact?: boolean;
|
|
26
27
|
|
|
28
|
+
/**
|
|
29
|
+
* Will run additional cssnano plugin to normalize CSS during build.
|
|
30
|
+
* Default to `true`.
|
|
31
|
+
*/
|
|
32
|
+
optimizeCss?: boolean;
|
|
33
|
+
|
|
27
34
|
/**
|
|
28
35
|
* Enables CSP support,
|
|
29
36
|
* read [Security](https://compiledcssinjs.com/docs/security) for more information.
|
|
@@ -41,14 +48,29 @@ export interface CompiledLoaderOptions {
|
|
|
41
48
|
extensions?: string[];
|
|
42
49
|
|
|
43
50
|
/**
|
|
44
|
-
* List of babel plugins to be applied to evaluated files
|
|
51
|
+
* List of transformer babel plugins to be applied to evaluated files
|
|
52
|
+
*
|
|
53
|
+
* See the [babel docs](https://babeljs.io/docs/en/plugins/#transform-plugins)
|
|
45
54
|
*/
|
|
46
|
-
|
|
55
|
+
transformerBabelPlugins?: PluginItem[];
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* List of parse babel plugins to be applied to evaluated files
|
|
59
|
+
*
|
|
60
|
+
* See the [babel docs](https://babeljs.io/docs/en/plugins/#syntax-plugins)
|
|
61
|
+
*/
|
|
62
|
+
parserBabelPlugins?: ParserPlugin[];
|
|
47
63
|
|
|
48
64
|
/**
|
|
49
65
|
* Set to true if CompiledExtractPlugin has been set up correctly
|
|
50
66
|
*/
|
|
51
67
|
[pluginName]?: boolean;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Build in a node environment.
|
|
71
|
+
* Defaults to `false`.
|
|
72
|
+
*/
|
|
73
|
+
ssr?: boolean;
|
|
52
74
|
}
|
|
53
75
|
|
|
54
76
|
export interface CompiledExtractPluginOptions {
|
|
@@ -69,4 +91,10 @@ export interface CompiledExtractPluginOptions {
|
|
|
69
91
|
* See: https://webpack.js.org/configuration/module/#condition
|
|
70
92
|
*/
|
|
71
93
|
nodeModulesExclude?: RuleSetCondition;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* When set will prevent additional cacheGroup chunk to be created.
|
|
97
|
+
* Eg. This may be required in SSR to prevent side-effects
|
|
98
|
+
*/
|
|
99
|
+
cacheGroupExclude?: boolean;
|
|
72
100
|
}
|