Skip to content

Commit 0079183

Browse files
authored
Merge pull request #1055 from dfreeman/customize-css-and-style-loader-config
Accept custom `css-loader` and `style-loader` config in `@embroider/webpack`
2 parents b118e51 + afc929e commit 0079183

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

packages/webpack/src/ember-webpack.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ const Webpack: PackagerConstructor<Options> = class Webpack implements Packager
7676
private publicAssetURL: string | undefined;
7777
private extraThreadLoaderOptions: object | false | undefined;
7878
private extraBabelLoaderOptions: BabelLoaderOptions | undefined;
79+
private extraCssLoaderOptions: object | undefined;
80+
private extraStyleLoaderOptions: object | undefined;
7981

8082
constructor(
8183
pathToVanillaApp: string,
@@ -93,6 +95,8 @@ const Webpack: PackagerConstructor<Options> = class Webpack implements Packager
9395
this.publicAssetURL = options?.publicAssetURL;
9496
this.extraThreadLoaderOptions = options?.threadLoaderOptions;
9597
this.extraBabelLoaderOptions = options?.babelLoaderOptions;
98+
this.extraCssLoaderOptions = options?.cssLoaderOptions;
99+
this.extraStyleLoaderOptions = options?.styleLoaderOptions;
96100
warmUp(this.extraThreadLoaderOptions);
97101
}
98102

@@ -484,13 +488,14 @@ const Webpack: PackagerConstructor<Options> = class Webpack implements Packager
484488
return [
485489
variant.optimizeForProduction
486490
? MiniCssExtractPlugin.loader
487-
: { loader: 'style-loader', options: { injectType: 'styleTag' } },
491+
: { loader: 'style-loader', options: { injectType: 'styleTag', ...this.extraStyleLoaderOptions } },
488492
{
489493
loader: 'css-loader',
490494
options: {
491495
url: true,
492496
import: true,
493497
modules: 'global',
498+
...this.extraCssLoaderOptions,
494499
},
495500
},
496501
];

packages/webpack/src/options.ts

+13
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,17 @@ export interface Options {
3030
threadLoaderOptions?: object | false;
3131

3232
babelLoaderOptions?: BabelLoaderOptions;
33+
34+
/**
35+
* Options for [`css-loader`](https://webpack.js.org/loaders/css-loader)
36+
*/
37+
cssLoaderOptions?: object;
38+
39+
/**
40+
* Options for [`style-loader`](https://webpack.js.org/loaders/style-loader/).
41+
*
42+
* Note that [`mini-css-extract-plugin`](https://webpack.js.org/plugins/mini-css-extract-plugin/)
43+
* is used instead of `style-loader` in production builds.
44+
*/
45+
styleLoaderOptions?: object;
3346
}

0 commit comments

Comments
 (0)