@nx/rspack 0.0.0-pr-3-e51e28c → 0.0.0-pr-30418-4e2b721

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/generators.json CHANGED
@@ -28,6 +28,7 @@
28
28
  "description": "React application generator."
29
29
  },
30
30
  "convert-webpack": {
31
+ "alias": "convert-to-rspack",
31
32
  "factory": "./src/generators/convert-webpack/convert-webpack",
32
33
  "schema": "./src/generators/convert-webpack/schema.json",
33
34
  "description": "Convert a webpack application to use rspack."
package/migrations.json CHANGED
@@ -96,8 +96,12 @@
96
96
  }
97
97
  },
98
98
  "20.5.0": {
99
- "version": "20.5.0-beta.3",
99
+ "version": "20.5.0-beta.4",
100
100
  "packages": {
101
+ "sass-loader": {
102
+ "version": "^16.0.4",
103
+ "alwaysAddToPackageJson": false
104
+ },
101
105
  "@rspack/core": {
102
106
  "version": "^1.2.2",
103
107
  "alwaysAddToPackageJson": false
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nx/rspack",
3
3
  "description": "The Nx Plugin for Rspack contains executors and generators that support building applications using Rspack.",
4
- "version": "0.0.0-pr-3-e51e28c",
4
+ "version": "0.0.0-pr-30418-4e2b721",
5
5
  "type": "commonjs",
6
6
  "repository": {
7
7
  "type": "git",
@@ -24,10 +24,10 @@
24
24
  "generators": "./generators.json",
25
25
  "executors": "./executors.json",
26
26
  "dependencies": {
27
- "@nx/js": "0.0.0-pr-3-e51e28c",
28
- "@nx/devkit": "0.0.0-pr-3-e51e28c",
29
- "@nx/web": "0.0.0-pr-3-e51e28c",
30
- "@nx/module-federation": "0.0.0-pr-3-e51e28c",
27
+ "@nx/js": "0.0.0-pr-30418-4e2b721",
28
+ "@nx/devkit": "0.0.0-pr-30418-4e2b721",
29
+ "@nx/web": "0.0.0-pr-30418-4e2b721",
30
+ "@nx/module-federation": "0.0.0-pr-30418-4e2b721",
31
31
  "@phenomnomnominal/tsquery": "~5.0.1",
32
32
  "@rspack/core": "^1.1.5",
33
33
  "@rspack/dev-server": "^1.0.9",
@@ -37,13 +37,14 @@
37
37
  "css-loader": "^6.4.0",
38
38
  "enquirer": "~2.3.6",
39
39
  "express": "^4.21.2",
40
- "fork-ts-checker-webpack-plugin": "7.2.13",
40
+ "ts-checker-rspack-plugin": "^1.1.1",
41
41
  "http-proxy-middleware": "^3.0.3",
42
42
  "less-loader": "11.1.0",
43
43
  "license-webpack-plugin": "^4.0.2",
44
44
  "loader-utils": "^2.0.3",
45
- "sass": "^1.42.1",
46
- "sass-loader": "^12.2.0",
45
+ "sass": "^1.85.0",
46
+ "sass-embedded": "^1.83.4",
47
+ "sass-loader": "^16.0.4",
47
48
  "source-map-loader": "^5.0.0",
48
49
  "style-loader": "^3.3.0",
49
50
  "picocolors": "^1.1.0",
@@ -55,8 +56,8 @@
55
56
  "webpack-node-externals": "^3.0.0"
56
57
  },
57
58
  "peerDependencies": {
58
- "@module-federation/enhanced": "^0.8.8",
59
- "@module-federation/node": "^2.6.21"
59
+ "@module-federation/enhanced": "^0.9.0",
60
+ "@module-federation/node": "^2.6.26"
60
61
  },
61
62
  "nx-migrations": {
62
63
  "migrations": "./migrations.json"
@@ -22,6 +22,7 @@ function normalizeOptions(options, root, projectRoot, sourceRoot) {
22
22
  styles: options.optimization,
23
23
  }
24
24
  : options.optimization,
25
+ sassImplementation: options.sassImplementation ?? 'sass',
25
26
  };
26
27
  if (options.assets) {
27
28
  normalizedOptions.assets = (0, normalize_options_1.normalizeAssets)(options.assets, root, sourceRoot, projectRoot, false // executor assets are relative to workspace root for consistency
@@ -35,7 +35,12 @@ export interface RspackExecutorSchema {
35
35
  sourceMap?: boolean | DevTool;
36
36
  standardRspackConfigFunction?: boolean;
37
37
  statsJson?: boolean;
38
- stylePreprocessorOptions?: any;
38
+ stylePreprocessorOptions?: {
39
+ includePaths?: string[];
40
+ sassOptions?: Record<string, any>;
41
+ lessOptions?: Record<string, any>;
42
+ };
43
+ sassImplementation?: 'sass' | 'sass-embedded';
39
44
  styles?: Array<ExtraEntryPointClass | string>;
40
45
  target?: 'web' | 'node';
41
46
  transformers?: TransformerEntry[];
@@ -245,10 +245,24 @@
245
245
  "items": {
246
246
  "type": "string"
247
247
  }
248
+ },
249
+ "sassOptions": {
250
+ "description": "Options to pass to sass-loader.",
251
+ "type": "object"
252
+ },
253
+ "lessOptions": {
254
+ "description": "Options to pass to less-loader.",
255
+ "type": "object"
248
256
  }
249
257
  },
250
258
  "additionalProperties": false
251
259
  },
260
+ "sassImplementation": {
261
+ "type": "string",
262
+ "description": "The implementation of the SASS compiler to use. Can be either `sass` or `sass-embedded`. Defaults to `sass-embedded`.",
263
+ "enum": ["sass", "sass-embedded"],
264
+ "default": "sass"
265
+ },
252
266
  "styles": {
253
267
  "type": "array",
254
268
  "description": "External Styles which will be included with the application",
@@ -1,24 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = normalizeOptions;
4
- const devkit_1 = require("@nx/devkit");
5
4
  const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
5
+ const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
6
6
  async function normalizeOptions(host, options) {
7
- await (0, project_name_and_root_utils_1.ensureProjectName)(host, options, 'application');
8
- const { projectName: appProjectName, projectRoot: appProjectRoot } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
7
+ await (0, project_name_and_root_utils_1.ensureRootProjectName)(options, 'application');
8
+ const { projectName, projectRoot: appProjectRoot, importPath, } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
9
9
  ...options,
10
10
  projectType: 'application',
11
11
  });
12
12
  // --monorepo takes precedence over --rootProject
13
13
  // This won't be needed once we add --bundler=rspack to the @nx/react:app preset
14
14
  const rootProject = !options.monorepo && options.rootProject;
15
- const e2eProjectName = options.rootProject
16
- ? 'e2e'
17
- : `${(0, devkit_1.names)(appProjectName).fileName}-e2e`;
15
+ const isTsSolutionSetup = (0, ts_solution_setup_1.isUsingTsSolutionSetup)(host);
16
+ const appProjectName = !isTsSolutionSetup || options.name ? projectName : importPath;
17
+ const e2eProjectName = options.rootProject ? 'e2e' : `${projectName}-e2e`;
18
18
  const normalized = {
19
19
  ...options,
20
20
  rootProject,
21
- name: (0, devkit_1.names)(options.name).fileName,
21
+ name: appProjectName,
22
22
  projectName: appProjectName,
23
23
  appProjectRoot,
24
24
  e2eProjectName,
@@ -70,6 +70,10 @@ async function rspackInitGenerator(tree, schema) {
70
70
  if (schema.style === 'less') {
71
71
  devDependencies['less-loader'] = versions_1.lessLoaderVersion;
72
72
  }
73
+ if (schema.style === 'scss') {
74
+ devDependencies['sass-loader'] = versions_1.sassLoaderVersion;
75
+ devDependencies['sass-embedded'] = versions_1.sassEmbeddedVersion;
76
+ }
73
77
  if (schema.framework !== 'none' || schema.devServer) {
74
78
  devDependencies['@rspack/dev-server'] = versions_1.rspackDevServerVersion;
75
79
  }
@@ -0,0 +1,30 @@
1
+ #### Migrate withModuleFederation Import to New Package
2
+
3
+ Update the withModuleFederation import to use @nx/module-federation/rspack.
4
+
5
+ #### Sample Code Changes
6
+
7
+ Update import paths for `withModuleFederation` and `withModuleFederationForSSR`.
8
+
9
+ {% tabs %}
10
+ {% tab label="Before" %}
11
+
12
+ ```ts {% fileName="apps/shell/rspack.config.ts" %}
13
+ import {
14
+ withModuleFederation,
15
+ withModuleFederationForSSR,
16
+ } from '@nx/rspack/module-federation';
17
+ ```
18
+
19
+ {% /tab %}
20
+ {% tab label="After" %}
21
+
22
+ ```ts {% fileName="apps/shell/rspack.config.ts" %}
23
+ import {
24
+ withModuleFederation,
25
+ withModuleFederationForSSR,
26
+ } from '@nx/module-federation/rspack';
27
+ ```
28
+
29
+ {% /tab %}
30
+ {% /tabs %}
@@ -0,0 +1,28 @@
1
+ #### Ensure the @nx/module-federation Package is Installed
2
+
3
+ If workspace includes Module Federation projects, ensure the new `@nx/module-federation` package is installed.
4
+
5
+ #### Sample Code Changes
6
+
7
+ {% tabs %}
8
+ {% tab label="Before" %}
9
+
10
+ ```json {% fileName="package.json" %}
11
+ {
12
+ "dependencies": {}
13
+ }
14
+ ```
15
+
16
+ {% /tab %}
17
+ {% tab label="After" %}
18
+
19
+ ```json {% fileName="package.json" %}
20
+ {
21
+ "dependencies": {
22
+ "@nx/module-federation": "20.3.0"
23
+ }
24
+ }
25
+ ```
26
+
27
+ {% /tab %}
28
+ {% /tabs %}
@@ -14,7 +14,14 @@ const resolve_user_defined_rspack_config_1 = require("../utils/resolve-user-defi
14
14
  const util_1 = require("@nx/js/src/plugins/typescript/util");
15
15
  const pmc = (0, devkit_1.getPackageManagerCommand)();
16
16
  function readTargetsCache(cachePath) {
17
- return (0, fs_1.existsSync)(cachePath) ? (0, devkit_1.readJsonFile)(cachePath) : {};
17
+ try {
18
+ return process.env.NX_CACHE_PROJECT_GRAPH !== 'false'
19
+ ? (0, devkit_1.readJsonFile)(cachePath)
20
+ : {};
21
+ }
22
+ catch {
23
+ return {};
24
+ }
18
25
  }
19
26
  function writeTargetsToCache(cachePath, results) {
20
27
  (0, devkit_1.writeJsonFile)(cachePath, results);
@@ -85,9 +92,24 @@ async function createRspackTargets(configFilePath, projectRoot, options, context
85
92
  }
86
93
  }
87
94
  const targets = {};
95
+ const env = {};
96
+ const isTsConfig = ['.ts', '.cts', '.mts'].includes((0, path_1.extname)(configFilePath));
97
+ if (isTsConfig) {
98
+ // https://rspack.dev/config/#using-ts-node
99
+ const existingValue = process.env['TS_NODE_COMPILER_OPTIONS'];
100
+ env['TS_NODE_COMPILER_OPTIONS'] = JSON.stringify({
101
+ ...(existingValue ? JSON.parse(existingValue) : {}),
102
+ module: 'CommonJS',
103
+ moduleResolution: 'Node10',
104
+ });
105
+ }
88
106
  targets[options.buildTargetName] = {
89
107
  command: `rspack build`,
90
- options: { cwd: projectRoot, args: ['--node-env=production'] },
108
+ options: {
109
+ cwd: projectRoot,
110
+ args: ['--node-env=production'],
111
+ env,
112
+ },
91
113
  cache: true,
92
114
  dependsOn: [`^${options.buildTargetName}`],
93
115
  inputs: 'production' in namedInputs
@@ -108,23 +130,22 @@ async function createRspackTargets(configFilePath, projectRoot, options, context
108
130
  outputs,
109
131
  };
110
132
  targets[options.serveTargetName] = {
111
- continuous: true,
112
133
  command: `rspack serve`,
113
134
  options: {
114
135
  cwd: projectRoot,
115
136
  args: ['--node-env=development'],
137
+ env,
116
138
  },
117
139
  };
118
140
  targets[options.previewTargetName] = {
119
- continuous: true,
120
141
  command: `rspack serve`,
121
142
  options: {
122
143
  cwd: projectRoot,
123
144
  args: ['--node-env=production'],
145
+ env,
124
146
  },
125
147
  };
126
148
  targets[options.serveStaticTargetName] = {
127
- continuous: true,
128
149
  executor: '@nx/web:file-server',
129
150
  options: {
130
151
  buildTarget: options.buildTargetName,
@@ -179,13 +179,13 @@ function applyNxDependentConfig(options, config, { useNormalizedEntry } = {}) {
179
179
  }
180
180
  // New TS Solution already has a typecheck target
181
181
  if (!options?.skipTypeChecking && !isUsingTsSolution) {
182
- const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
183
- plugins.push(new ForkTsCheckerWebpackPlugin({
182
+ const { TsCheckerRspackPlugin } = require('ts-checker-rspack-plugin');
183
+ plugins.push(new TsCheckerRspackPlugin({
184
184
  typescript: {
185
185
  configFile: path.isAbsolute(tsConfig)
186
186
  ? tsConfig
187
187
  : path.join(options.root, tsConfig),
188
- memoryLimit: options.memoryLimit || 2018,
188
+ memoryLimit: options.memoryLimit || 8192, // default memory limit is 8192
189
189
  },
190
190
  }));
191
191
  }
@@ -54,6 +54,8 @@ function applyWebConfig(options, config = {}, { useNormalizedEntry, } = {}) {
54
54
  const globalStylePaths = [];
55
55
  // Determine hashing format.
56
56
  const hashFormat = (0, hash_format_1.getOutputHashFormat)(options.outputHashing);
57
+ const sassOptions = options.stylePreprocessorOptions?.sassOptions;
58
+ const lessOptions = options.stylePreprocessorOptions?.lessOptions;
57
59
  const includePaths = [];
58
60
  if (options?.stylePreprocessorOptions?.includePaths?.length > 0) {
59
61
  options.stylePreprocessorOptions.includePaths.forEach((includePath) => includePaths.push((0, path_1.resolve)(options.root, includePath)));
@@ -88,11 +90,15 @@ function applyWebConfig(options, config = {}, { useNormalizedEntry, } = {}) {
88
90
  {
89
91
  loader: require.resolve('sass-loader'),
90
92
  options: {
91
- implementation: require('sass'),
93
+ implementation: options.sassImplementation === 'sass-embedded'
94
+ ? require.resolve('sass-embedded')
95
+ : require.resolve('sass'),
96
+ api: 'modern-compiler',
92
97
  sassOptions: {
93
98
  fiber: false,
94
99
  precision: 8,
95
100
  includePaths,
101
+ ...(sassOptions ?? {}),
96
102
  },
97
103
  },
98
104
  },
@@ -108,6 +114,7 @@ function applyWebConfig(options, config = {}, { useNormalizedEntry, } = {}) {
108
114
  options: {
109
115
  lessOptions: {
110
116
  paths: includePaths,
117
+ ...(lessOptions ?? {}),
111
118
  },
112
119
  },
113
120
  },
@@ -143,13 +150,17 @@ function applyWebConfig(options, config = {}, { useNormalizedEntry, } = {}) {
143
150
  {
144
151
  loader: require.resolve('sass-loader'),
145
152
  options: {
146
- implementation: require('sass'),
153
+ api: 'modern-compiler',
154
+ implementation: options.sassImplementation === 'sass-embedded'
155
+ ? require.resolve('sass-embedded')
156
+ : require.resolve('sass'),
147
157
  sourceMap: !!options.sourceMap,
148
158
  sassOptions: {
149
159
  fiber: false,
150
160
  // bootstrap-sass requires a minimum precision of 8
151
161
  precision: 8,
152
162
  includePaths,
163
+ ...(sassOptions ?? {}),
153
164
  },
154
165
  },
155
166
  },
@@ -167,6 +178,7 @@ function applyWebConfig(options, config = {}, { useNormalizedEntry, } = {}) {
167
178
  lessOptions: {
168
179
  javascriptEnabled: true,
169
180
  ...lessPathOptions,
181
+ ...(lessOptions ?? {}),
170
182
  },
171
183
  },
172
184
  },
@@ -203,13 +215,17 @@ function applyWebConfig(options, config = {}, { useNormalizedEntry, } = {}) {
203
215
  {
204
216
  loader: require.resolve('sass-loader'),
205
217
  options: {
206
- implementation: require('sass'),
218
+ api: 'modern-compiler',
219
+ implementation: options.sassImplementation === 'sass-embedded'
220
+ ? require.resolve('sass-embedded')
221
+ : require.resolve('sass'),
207
222
  sourceMap: !!options.sourceMap,
208
223
  sassOptions: {
209
224
  fiber: false,
210
225
  // bootstrap-sass requires a minimum precision of 8
211
226
  precision: 8,
212
227
  includePaths,
228
+ ...(sassOptions ?? {}),
213
229
  },
214
230
  },
215
231
  },
@@ -227,6 +243,7 @@ function applyWebConfig(options, config = {}, { useNormalizedEntry, } = {}) {
227
243
  lessOptions: {
228
244
  javascriptEnabled: true,
229
245
  ...lessPathOptions,
246
+ ...(lessOptions ?? {}),
230
247
  },
231
248
  },
232
249
  },
@@ -148,6 +148,10 @@ export interface NxAppRspackPluginOptions {
148
148
  * Add an additional chunk for the rspack runtime. Defaults to `true` when `target === 'web'`.
149
149
  */
150
150
  runtimeChunk?: boolean;
151
+ /**
152
+ * The implementation of the SASS compiler to use. Can be either `sass` or `sass-embedded`. Defaults to `sass-embedded`.
153
+ */
154
+ sassImplementation?: 'sass' | 'sass-embedded';
151
155
  /**
152
156
  * External scripts that will be included before the main application entry.
153
157
  */
@@ -183,7 +187,11 @@ export interface NxAppRspackPluginOptions {
183
187
  /**
184
188
  * Options for the style preprocessor. e.g. `{ "includePaths": [] }` for SASS.
185
189
  */
186
- stylePreprocessorOptions?: any;
190
+ stylePreprocessorOptions?: {
191
+ includePaths?: string[];
192
+ sassOptions?: Record<string, any>;
193
+ lessOptions?: Record<string, any>;
194
+ };
187
195
  /**
188
196
  * External stylesheets that will be included with the application.
189
197
  */
@@ -77,6 +77,7 @@ function normalizeOptions(options) {
77
77
  projectRoot: projectNode.data.root,
78
78
  root: devkit_1.workspaceRoot,
79
79
  runtimeChunk: combinedPluginAndMaybeExecutorOptions.runtimeChunk ?? true,
80
+ sassImplementation: combinedPluginAndMaybeExecutorOptions.sassImplementation ?? 'sass',
80
81
  scripts: combinedPluginAndMaybeExecutorOptions.scripts ?? [],
81
82
  sourceMap: combinedPluginAndMaybeExecutorOptions.sourceMap ?? !isProd,
82
83
  sourceRoot,
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RspackNxBuildCoordinationPlugin = void 0;
4
4
  const child_process_1 = require("child_process");
5
5
  const client_1 = require("nx/src/daemon/client/client");
6
- const enabled_1 = require("nx/src/daemon/client/enabled");
7
6
  const watch_1 = require("nx/src/command-line/watch/watch");
8
7
  const output_1 = require("nx/src/utils/output");
9
8
  class RspackNxBuildCoordinationPlugin {
@@ -14,7 +13,7 @@ class RspackNxBuildCoordinationPlugin {
14
13
  if (!skipInitialBuild) {
15
14
  this.buildChangedProjects();
16
15
  }
17
- if ((0, enabled_1.isDaemonEnabled)()) {
16
+ if ((0, client_1.isDaemonEnabled)()) {
18
17
  this.startWatchingBuildableLibs();
19
18
  }
20
19
  else {
@@ -4,13 +4,14 @@ export declare const rspackDevServerVersion = "1.0.9";
4
4
  export declare const rspackPluginMinifyVersion = "^0.7.5";
5
5
  export declare const rspackPluginReactRefreshVersion = "^1.0.0";
6
6
  export declare const lessLoaderVersion = "~11.1.3";
7
+ export declare const sassLoaderVersion = "^16.0.4";
8
+ export declare const sassEmbeddedVersion = "^1.83.4";
7
9
  export declare const reactRefreshVersion = "~0.14.0";
8
10
  export declare const nestjsCommonVersion = "~9.0.0";
9
11
  export declare const nestjsCoreVersion = "~9.0.0";
10
12
  export declare const nestjsPlatformExpressVersion = "~9.0.0";
11
13
  export declare const nestjsMicroservicesVersion = "~9.0.0";
12
14
  export declare const lessVersion = "4.1.3";
13
- export declare const sassVersion = "^1.42.1";
14
15
  export declare const stylusVersion = "^0.55.0";
15
16
  export declare const eslintPluginImportVersion = "2.27.5";
16
17
  export declare const eslintPluginJsxA11yVersion = "6.7.1";
@@ -1,19 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.eslintPluginReactHooksVersion = exports.eslintPluginReactVersion = exports.eslintPluginJsxA11yVersion = exports.eslintPluginImportVersion = exports.stylusVersion = exports.sassVersion = exports.lessVersion = exports.nestjsMicroservicesVersion = exports.nestjsPlatformExpressVersion = exports.nestjsCoreVersion = exports.nestjsCommonVersion = exports.reactRefreshVersion = exports.lessLoaderVersion = exports.rspackPluginReactRefreshVersion = exports.rspackPluginMinifyVersion = exports.rspackDevServerVersion = exports.rspackCoreVersion = exports.nxVersion = void 0;
3
+ exports.eslintPluginReactHooksVersion = exports.eslintPluginReactVersion = exports.eslintPluginJsxA11yVersion = exports.eslintPluginImportVersion = exports.stylusVersion = exports.lessVersion = exports.nestjsMicroservicesVersion = exports.nestjsPlatformExpressVersion = exports.nestjsCoreVersion = exports.nestjsCommonVersion = exports.reactRefreshVersion = exports.sassEmbeddedVersion = exports.sassLoaderVersion = exports.lessLoaderVersion = exports.rspackPluginReactRefreshVersion = exports.rspackPluginMinifyVersion = exports.rspackDevServerVersion = exports.rspackCoreVersion = exports.nxVersion = void 0;
4
4
  exports.nxVersion = require('../../package.json').version;
5
5
  exports.rspackCoreVersion = '1.2.2';
6
6
  exports.rspackDevServerVersion = '1.0.9';
7
7
  exports.rspackPluginMinifyVersion = '^0.7.5';
8
8
  exports.rspackPluginReactRefreshVersion = '^1.0.0';
9
9
  exports.lessLoaderVersion = '~11.1.3';
10
+ exports.sassLoaderVersion = '^16.0.4';
11
+ exports.sassEmbeddedVersion = '^1.83.4';
10
12
  exports.reactRefreshVersion = '~0.14.0';
11
13
  exports.nestjsCommonVersion = '~9.0.0';
12
14
  exports.nestjsCoreVersion = '~9.0.0';
13
15
  exports.nestjsPlatformExpressVersion = '~9.0.0';
14
16
  exports.nestjsMicroservicesVersion = '~9.0.0';
15
17
  exports.lessVersion = '4.1.3';
16
- exports.sassVersion = '^1.42.1';
17
18
  exports.stylusVersion = '^0.55.0';
18
19
  exports.eslintPluginImportVersion = '2.27.5';
19
20
  exports.eslintPluginJsxA11yVersion = '6.7.1';
@@ -8,10 +8,13 @@ export interface WithWebOptions {
8
8
  generateIndexHtml?: boolean;
9
9
  index?: string;
10
10
  postcssConfig?: string;
11
+ sassImplementation?: 'sass' | 'sass-embedded';
11
12
  scripts?: Array<ExtraEntryPointClass | string>;
12
13
  styles?: Array<ExtraEntryPointClass | string>;
13
14
  stylePreprocessorOptions?: {
14
15
  includePaths?: string[];
16
+ sassOptions?: Record<string, any>;
17
+ lessOptions?: Record<string, any>;
15
18
  };
16
19
  cssModules?: boolean;
17
20
  ssr?: boolean;