@compiled/webpack-loader 0.6.17 → 0.7.3

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.
Files changed (114) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/{__tests__/fixtures/async.d.ts → __fixtures__/async-styles.d.ts} +0 -0
  3. package/dist/{__tests__/fixtures/async.js → __fixtures__/async-styles.js} +2 -2
  4. package/dist/__fixtures__/async-styles.js.map +1 -0
  5. package/dist/__fixtures__/babel.d.ts +2 -0
  6. package/dist/__fixtures__/babel.js +14 -0
  7. package/dist/__fixtures__/babel.js.map +1 -0
  8. package/dist/{__tests__/fixtures → __fixtures__}/binding-not-found.d.ts +1 -1
  9. package/dist/{__tests__/fixtures → __fixtures__}/binding-not-found.js +6 -9
  10. package/dist/__fixtures__/binding-not-found.js.map +1 -0
  11. package/dist/__fixtures__/common/colors.d.ts +7 -0
  12. package/dist/{__tests__/fixtures/imports → __fixtures__/common}/colors.js +5 -4
  13. package/dist/__fixtures__/common/colors.js.map +1 -0
  14. package/dist/__fixtures__/common/css-prop.d.ts +2 -0
  15. package/dist/__fixtures__/common/css-prop.js +9 -0
  16. package/dist/__fixtures__/common/css-prop.js.map +1 -0
  17. package/dist/__fixtures__/compiled-error.d.ts +2 -0
  18. package/dist/__fixtures__/compiled-error.js +10 -0
  19. package/dist/__fixtures__/compiled-error.js.map +1 -0
  20. package/dist/__fixtures__/important-styles.d.ts +3 -0
  21. package/dist/__fixtures__/important-styles.js +7 -0
  22. package/dist/__fixtures__/important-styles.js.map +1 -0
  23. package/dist/__fixtures__/lib/loader-alias.d.ts +1 -0
  24. package/dist/__fixtures__/lib/loader-alias.js +8 -0
  25. package/dist/__fixtures__/lib/loader-alias.js.map +1 -0
  26. package/dist/__fixtures__/lib/webpack-alias.d.ts +1 -0
  27. package/dist/__fixtures__/lib/webpack-alias.js +8 -0
  28. package/dist/__fixtures__/lib/webpack-alias.js.map +1 -0
  29. package/dist/__fixtures__/loader-alias.d.ts +2 -0
  30. package/dist/__fixtures__/loader-alias.js +12 -0
  31. package/dist/__fixtures__/loader-alias.js.map +1 -0
  32. package/dist/__fixtures__/local-styles.d.ts +2 -0
  33. package/dist/__fixtures__/local-styles.js +14 -0
  34. package/dist/__fixtures__/local-styles.js.map +1 -0
  35. package/dist/__fixtures__/no-compiled-styles.d.ts +0 -0
  36. package/dist/__fixtures__/no-compiled-styles.js +3 -0
  37. package/dist/__fixtures__/no-compiled-styles.js.map +1 -0
  38. package/dist/__fixtures__/relative-styles.d.ts +3 -0
  39. package/dist/__fixtures__/relative-styles.js +34 -0
  40. package/dist/__fixtures__/relative-styles.js.map +1 -0
  41. package/dist/__fixtures__/webpack-alias.d.ts +2 -0
  42. package/dist/__fixtures__/webpack-alias.js +12 -0
  43. package/dist/__fixtures__/webpack-alias.js.map +1 -0
  44. package/dist/compiled-loader.d.ts +4 -3
  45. package/dist/compiled-loader.js +53 -17
  46. package/dist/compiled-loader.js.map +1 -1
  47. package/dist/css-loader.d.ts +3 -3
  48. package/dist/css-loader.js +4 -1
  49. package/dist/css-loader.js.map +1 -1
  50. package/dist/extract-plugin.js +5 -5
  51. package/dist/extract-plugin.js.map +1 -1
  52. package/dist/index.d.ts +1 -0
  53. package/dist/types.d.ts +4 -58
  54. package/dist/{utils/webpack.d.ts → utils.d.ts} +1 -1
  55. package/dist/{utils/webpack.js → utils.js} +1 -1
  56. package/dist/utils.js.map +1 -0
  57. package/package.json +10 -9
  58. package/src/__fixtures__/async-styles.ts +1 -0
  59. package/src/__fixtures__/babel.tsx +11 -0
  60. package/src/{__tests__/fixtures → __fixtures__}/binding-not-found.tsx +2 -1
  61. package/src/{__tests__/fixtures/imports/colors.js → __fixtures__/common/colors.ts} +4 -3
  62. package/src/__fixtures__/common/css-prop.tsx +8 -0
  63. package/src/__fixtures__/compiled-error.tsx +7 -0
  64. package/src/__fixtures__/important-styles.tsx +6 -0
  65. package/src/__fixtures__/lib/babel-cjs.d.ts +3 -0
  66. package/src/{__tests__/fixtures/node_modules → __fixtures__/lib}/babel-cjs.js +0 -0
  67. package/src/__fixtures__/lib/babel-esm.d.ts +3 -0
  68. package/src/{__tests__/fixtures/node_modules → __fixtures__/lib}/babel-esm.js +0 -0
  69. package/src/__fixtures__/lib/loader-alias.ts +5 -0
  70. package/src/__fixtures__/lib/webpack-alias.ts +5 -0
  71. package/src/__fixtures__/loader-alias.tsx +8 -0
  72. package/src/__fixtures__/local-styles.tsx +14 -0
  73. package/src/__fixtures__/no-compiled-styles.ts +1 -0
  74. package/src/__fixtures__/relative-styles.tsx +39 -0
  75. package/src/__fixtures__/webpack-alias.tsx +8 -0
  76. package/src/__tests__/compiled-loader.test.tsx +70 -39
  77. package/src/__tests__/extract-plugin.test.tsx +82 -48
  78. package/src/__tests__/test-utils.tsx +103 -0
  79. package/src/compiled-loader.tsx +70 -34
  80. package/src/css-loader.tsx +9 -5
  81. package/src/extract-plugin.tsx +4 -3
  82. package/src/index.tsx +1 -0
  83. package/src/types.tsx +5 -60
  84. package/src/{utils/webpack.tsx → utils.tsx} +1 -1
  85. package/dist/__tests__/fixtures/async.js.map +0 -1
  86. package/dist/__tests__/fixtures/babel.d.ts +0 -1
  87. package/dist/__tests__/fixtures/babel.js +0 -14
  88. package/dist/__tests__/fixtures/babel.js.map +0 -1
  89. package/dist/__tests__/fixtures/binding-not-found.js.map +0 -1
  90. package/dist/__tests__/fixtures/important-styles.d.ts +0 -2
  91. package/dist/__tests__/fixtures/important-styles.js +0 -6
  92. package/dist/__tests__/fixtures/important-styles.js.map +0 -1
  93. package/dist/__tests__/fixtures/imports/colors.d.ts +0 -6
  94. package/dist/__tests__/fixtures/imports/colors.js.map +0 -1
  95. package/dist/__tests__/fixtures/imports/css-prop.d.ts +0 -1
  96. package/dist/__tests__/fixtures/imports/css-prop.js +0 -8
  97. package/dist/__tests__/fixtures/imports/css-prop.js.map +0 -1
  98. package/dist/__tests__/fixtures/multiple.d.ts +0 -2
  99. package/dist/__tests__/fixtures/multiple.js +0 -28
  100. package/dist/__tests__/fixtures/multiple.js.map +0 -1
  101. package/dist/__tests__/fixtures/single.d.ts +0 -2
  102. package/dist/__tests__/fixtures/single.js +0 -6
  103. package/dist/__tests__/fixtures/single.js.map +0 -1
  104. package/dist/__tests__/utils/webpack.d.ts +0 -6
  105. package/dist/__tests__/utils/webpack.js +0 -81
  106. package/dist/__tests__/utils/webpack.js.map +0 -1
  107. package/dist/utils/webpack.js.map +0 -1
  108. package/src/__tests__/fixtures/async.js +0 -1
  109. package/src/__tests__/fixtures/babel.js +0 -11
  110. package/src/__tests__/fixtures/important-styles.js +0 -5
  111. package/src/__tests__/fixtures/imports/css-prop.js +0 -4
  112. package/src/__tests__/fixtures/multiple.js +0 -28
  113. package/src/__tests__/fixtures/single.js +0 -5
  114. package/src/__tests__/utils/webpack.tsx +0 -88
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Red = exports.Blue = void 0;
4
- const react_1 = require("@compiled/react");
5
- const colors_1 = require("./imports/colors");
6
- exports.Blue = react_1.styled.span `
7
- color: ${colors_1.blueviolet};
8
-
9
- :focus {
10
- color: ${colors_1.purple};
11
- }
12
-
13
- :hover {
14
- color: ${colors_1.blue};
15
- }
16
- `;
17
- exports.Red = react_1.styled.span `
18
- color: ${colors_1.red};
19
-
20
- :focus {
21
- color: ${colors_1.orange};
22
- }
23
-
24
- :hover {
25
- color: ${colors_1.yellow};
26
- }
27
- `;
28
- //# sourceMappingURL=multiple.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multiple.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/multiple.js"],"names":[],"mappings":";;;AAAA,2CAAyC;AACzC,6CAAiF;AAIpE,QAAA,IAAI,GAAG,cAAM,CAAC,IAAI,CAAA;WACpB,mBAAU;;;aAGR,eAAM;;;;aAIN,aAAI;;CAEhB,CAAC;AAEW,QAAA,GAAG,GAAG,cAAM,CAAC,IAAI,CAAA;WACnB,YAAG;;;aAGD,eAAM;;;;aAIN,eAAM;;CAElB,CAAC"}
@@ -1,2 +0,0 @@
1
- export default Component;
2
- declare function Component(): JSX.Element;
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- require("@compiled/react");
4
- const Component = () => React.createElement("div", { css: { fontSize: 12 } });
5
- exports.default = Component;
6
- //# sourceMappingURL=single.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"single.js","sourceRoot":"","sources":["../../../src/__tests__/fixtures/single.js"],"names":[],"mappings":";;AAAA,2BAAyB;AAEzB,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,6BAAK,GAAG,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAI,CAAC;AAEvD,kBAAe,SAAS,CAAC"}
@@ -1,6 +0,0 @@
1
- interface Opts {
2
- extract?: boolean;
3
- disablePlugins?: boolean;
4
- }
5
- export declare function bundle(entry: string, { extract, disablePlugins }?: Opts): Promise<Record<string, string>>;
6
- export {};
@@ -1,81 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.bundle = void 0;
7
- const webpack_1 = __importDefault(require("webpack"));
8
- const memfs_1 = require("memfs");
9
- const mini_css_extract_plugin_1 = __importDefault(require("mini-css-extract-plugin"));
10
- const extract_plugin_1 = require("../../extract-plugin");
11
- function bundle(entry, { extract = true, disablePlugins = false } = {}) {
12
- const compiler = webpack_1.default({
13
- entry,
14
- output: {
15
- path: '/',
16
- filename: 'bundle.js',
17
- },
18
- module: {
19
- rules: [
20
- {
21
- test: /\.(js|ts|tsx)$/,
22
- exclude: /node_modules/,
23
- use: [
24
- {
25
- loader: 'babel-loader',
26
- options: {
27
- babelrc: false,
28
- configFile: false,
29
- presets: [
30
- ['@babel/preset-env', { targets: { browsers: 'last 1 version' } }],
31
- '@babel/preset-typescript',
32
- ['@babel/preset-react', { runtime: 'automatic' }],
33
- ],
34
- },
35
- },
36
- {
37
- loader: '@compiled/webpack-loader',
38
- options: {
39
- importReact: false,
40
- extract,
41
- },
42
- },
43
- ],
44
- },
45
- {
46
- test: /\.css$/i,
47
- sideEffects: true,
48
- use: [mini_css_extract_plugin_1.default.loader, 'css-loader'],
49
- },
50
- ],
51
- },
52
- plugins: disablePlugins
53
- ? []
54
- : [new mini_css_extract_plugin_1.default({ filename: 'static/[name].css' }), new extract_plugin_1.CompiledExtractPlugin()],
55
- });
56
- const fs = memfs_1.createFsFromVolume(new memfs_1.Volume());
57
- // @ts-ignore
58
- compiler.outputFileSystem = fs;
59
- // @ts-ignore
60
- compiler.intermediateFileSystem = fs;
61
- return new Promise((res, rej) => {
62
- compiler.run((err, stats) => {
63
- if (err) {
64
- rej(err);
65
- return;
66
- }
67
- if ((stats === null || stats === void 0 ? void 0 : stats.hasErrors()) && stats.compilation.errors.length) {
68
- rej(stats.compilation.errors);
69
- return;
70
- }
71
- const assets = {};
72
- Object.keys((stats === null || stats === void 0 ? void 0 : stats.compilation.assets) || {}).map((name) => {
73
- const file = fs.readFileSync(`/${name}`, { encoding: 'utf-8' });
74
- assets[name] = file;
75
- });
76
- res(assets);
77
- });
78
- });
79
- }
80
- exports.bundle = bundle;
81
- //# sourceMappingURL=webpack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"webpack.js","sourceRoot":"","sources":["../../../src/__tests__/utils/webpack.tsx"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAC9B,iCAAmD;AACnD,sFAA2D;AAC3D,yDAA6D;AAO7D,SAAgB,MAAM,CACpB,KAAa,EACb,EAAE,OAAO,GAAG,IAAI,EAAE,cAAc,GAAG,KAAK,KAAW,EAAE;IAErD,MAAM,QAAQ,GAAG,iBAAO,CAAC;QACvB,KAAK;QACL,MAAM,EAAE;YACN,IAAI,EAAE,GAAG;YACT,QAAQ,EAAE,WAAW;SACtB;QACD,MAAM,EAAE;YACN,KAAK,EAAE;gBACL;oBACE,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,cAAc;oBACvB,GAAG,EAAE;wBACH;4BACE,MAAM,EAAE,cAAc;4BACtB,OAAO,EAAE;gCACP,OAAO,EAAE,KAAK;gCACd,UAAU,EAAE,KAAK;gCACjB,OAAO,EAAE;oCACP,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,CAAC;oCAClE,0BAA0B;oCAC1B,CAAC,qBAAqB,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;iCAClD;6BACF;yBACF;wBACD;4BACE,MAAM,EAAE,0BAA0B;4BAClC,OAAO,EAAE;gCACP,WAAW,EAAE,KAAK;gCAClB,OAAO;6BACR;yBACF;qBACF;iBACF;gBACD;oBACE,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,IAAI;oBACjB,GAAG,EAAE,CAAC,iCAAoB,CAAC,MAAM,EAAE,YAAY,CAAC;iBACjD;aACF;SACF;QACD,OAAO,EAAE,cAAc;YACrB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,IAAI,iCAAoB,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,EAAE,IAAI,sCAAqB,EAAE,CAAC;KAC/F,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,0BAAkB,CAAC,IAAI,cAAM,EAAE,CAAC,CAAC;IAC5C,aAAa;IACb,QAAQ,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC/B,aAAa;IACb,QAAQ,CAAC,sBAAsB,GAAG,EAAE,CAAC;IAErC,OAAO,IAAI,OAAO,CAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtD,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC1B,IAAI,GAAG,EAAE;gBACP,GAAG,CAAC,GAAG,CAAC,CAAC;gBACT,OAAO;aACR;YAED,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS,EAAE,KAAI,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE;gBACzD,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC9B,OAAO;aACR;YAED,MAAM,MAAM,GAA2B,EAAE,CAAC;YAE1C,MAAM,CAAC,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,CAAC,MAAM,KAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxD,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAc,CAAC;YAChC,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AA7ED,wBA6EC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"webpack.js","sourceRoot":"","sources":["../../src/utils/webpack.tsx"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACI,MAAM,mBAAmB,GAAG,CACjC,QAAkB,EAClB,WAA4B,EACoB,EAAE;IAClD,MAAM,EAAE,YAAY,EAAE;IACpB,iBAAiB;IACjB,QAAQ,CAAC,OAAO;QAChB,iBAAiB;QACjB,OAAO,CAAC,SAAS,CAAC,CAAC;IAErB,MAAM,gBAAgB,GACpB,YAAY,IAAI,OAAO,YAAY,CAAC,mBAAmB,KAAK,WAAW;QACrE,CAAC,CAAC,iBAAiB;YACjB,YAAY,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,MAAM;QACtD,CAAC,CAAC,iBAAiB;YACjB,WAAW,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAE3C,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AAlBW,QAAA,mBAAmB,uBAkB9B;AAEF;;;;;GAKG;AACI,MAAM,sBAAsB,GAAG,CAAC,WAA2B,EAAU,EAAE;IAC5E,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;IACpC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAO,MAAM,CAAC;KACf;IAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC,CAAC;AAPW,QAAA,sBAAsB,0BAOjC;AAEF;;;;;GAKG;AACI,MAAM,qBAAqB,GAAG,CACnC,QAAkB,EAClB,WAA4B,EAC+B,EAAE;IAC7D,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE;IAC5B,iBAAiB;IACjB,QAAQ,CAAC,OAAO;QAChB,iBAAiB;QACjB,OAAO,CAAC,SAAS,CAAC,CAAC;IACrB,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,cAAc;IAClB,iBAAiB;IACjB,WAAW,CAAC,KAAK,CAAC,aAAa;QAC/B,iBAAiB;QACjB,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC;IAEnC,OAAO;QACL,GAAG,EAAE,CAAC,UAAkB,EAAE,QAAqD,EAAE,EAAE;YACjF,cAAc,CAAC,GAAG,CAChB,UAAU;gBACR,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC;oBACE,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,WAAW,CAAC,kCAAkC;iBACtD,EACL,QAAQ,CACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,qBAAqB,yBA6BhC;AAEF;;;GAGG;AACI,MAAM,UAAU,GAAG,CAAC,QAAkB,EAAkB,EAAE;IAC/D,MAAM,EAAE,OAAO,EAAE;IACf,iBAAiB;IACjB,QAAQ,CAAC,OAAO;QAChB,iBAAiB;QACjB,EAAE,CAAC;IAEL,OAAO;IACL,iBAAiB;IACjB,OAAO;QACP,iBAAiB;QACjB,OAAO,CAAC,iBAAiB,CAAC,CAC3B,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,UAAU,cAarB;AAEF;;;;;;GAMG;AACI,MAAM,cAAc,GAAG,CAAC,IAAY,EAAU,EAAE;IACrD,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEhE,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB"}
@@ -1 +0,0 @@
1
- import('./imports/css-prop');
@@ -1,11 +0,0 @@
1
- import BabelCJS from 'babel-cjs';
2
- import BabelESM from 'babel-esm';
3
-
4
- export default function Babel() {
5
- return (
6
- <>
7
- <BabelCJS />
8
- <BabelESM />
9
- </>
10
- );
11
- }
@@ -1,5 +0,0 @@
1
- import '@compiled/react';
2
-
3
- const Component = () => <div css={{ fontSize: '12!important', color: 'blue' }} />;
4
-
5
- export default Component;
@@ -1,4 +0,0 @@
1
- import '@compiled/react';
2
- import { orange } from './colors';
3
-
4
- export const Orange = () => <div css={{ color: orange, border: `2px solid ${orange}` }} />;
@@ -1,28 +0,0 @@
1
- import { styled } from '@compiled/react';
2
- import { blueviolet, blue, orange, purple, red, yellow } from './imports/colors';
3
- // ↓↓↓ This should not have their styles extracted ↓↓↓
4
- import { Orange } from './imports/css-prop';
5
-
6
- export const Blue = styled.span`
7
- color: ${blueviolet};
8
-
9
- :focus {
10
- color: ${purple};
11
- }
12
-
13
- :hover {
14
- color: ${blue};
15
- }
16
- `;
17
-
18
- export const Red = styled.span`
19
- color: ${red};
20
-
21
- :focus {
22
- color: ${orange};
23
- }
24
-
25
- :hover {
26
- color: ${yellow};
27
- }
28
- `;
@@ -1,5 +0,0 @@
1
- import '@compiled/react';
2
-
3
- const Component = () => <div css={{ fontSize: 12 }} />;
4
-
5
- export default Component;
@@ -1,88 +0,0 @@
1
- import webpack from 'webpack';
2
- import { createFsFromVolume, Volume } from 'memfs';
3
- import MiniCssExtractPlugin from 'mini-css-extract-plugin';
4
- import { CompiledExtractPlugin } from '../../extract-plugin';
5
-
6
- interface Opts {
7
- extract?: boolean;
8
- disablePlugins?: boolean;
9
- }
10
-
11
- export function bundle(
12
- entry: string,
13
- { extract = true, disablePlugins = false }: Opts = {}
14
- ): Promise<Record<string, string>> {
15
- const compiler = webpack({
16
- entry,
17
- output: {
18
- path: '/',
19
- filename: 'bundle.js',
20
- },
21
- module: {
22
- rules: [
23
- {
24
- test: /\.(js|ts|tsx)$/,
25
- exclude: /node_modules/,
26
- use: [
27
- {
28
- loader: 'babel-loader',
29
- options: {
30
- babelrc: false,
31
- configFile: false,
32
- presets: [
33
- ['@babel/preset-env', { targets: { browsers: 'last 1 version' } }],
34
- '@babel/preset-typescript',
35
- ['@babel/preset-react', { runtime: 'automatic' }],
36
- ],
37
- },
38
- },
39
- {
40
- loader: '@compiled/webpack-loader',
41
- options: {
42
- importReact: false,
43
- extract,
44
- },
45
- },
46
- ],
47
- },
48
- {
49
- test: /\.css$/i,
50
- sideEffects: true,
51
- use: [MiniCssExtractPlugin.loader, 'css-loader'],
52
- },
53
- ],
54
- },
55
- plugins: disablePlugins
56
- ? []
57
- : [new MiniCssExtractPlugin({ filename: 'static/[name].css' }), new CompiledExtractPlugin()],
58
- });
59
-
60
- const fs = createFsFromVolume(new Volume());
61
- // @ts-ignore
62
- compiler.outputFileSystem = fs;
63
- // @ts-ignore
64
- compiler.intermediateFileSystem = fs;
65
-
66
- return new Promise<Record<string, string>>((res, rej) => {
67
- compiler.run((err, stats) => {
68
- if (err) {
69
- rej(err);
70
- return;
71
- }
72
-
73
- if (stats?.hasErrors() && stats.compilation.errors.length) {
74
- rej(stats.compilation.errors);
75
- return;
76
- }
77
-
78
- const assets: Record<string, string> = {};
79
-
80
- Object.keys(stats?.compilation.assets || {}).map((name) => {
81
- const file = fs.readFileSync(`/${name}`, { encoding: 'utf-8' });
82
- assets[name] = file as string;
83
- });
84
-
85
- res(assets);
86
- });
87
- });
88
- }