Skip to content

Commit

Permalink
fix(@angular-devkit/build-angular): allow Workers in Stackblitz
Browse files Browse the repository at this point in the history
This is no longer needed as Stackblitz implemented the missing Node.Js worker APIs.

(cherry picked from commit 2ab7742)
  • Loading branch information
alan-agius4 committed Mar 29, 2022
1 parent 6ef9e2a commit 58ed974
Showing 1 changed file with 8 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -107,16 +107,14 @@ export function getStylesConfig(wco: WebpackConfigOptions): Configuration {
);
}

const sassImplementation = getSassImplementation();
if (sassImplementation instanceof SassWorkerImplementation) {
extraPlugins.push({
apply(compiler) {
compiler.hooks.shutdown.tap('sass-worker', () => {
sassImplementation?.close();
});
},
});
}
const sassImplementation = new SassWorkerImplementation();
extraPlugins.push({
apply(compiler) {
compiler.hooks.shutdown.tap('sass-worker', () => {
sassImplementation.close();
});
},
});

const assetNameTemplate = assetNameTemplateFactory(hashFormat);

Expand Down Expand Up @@ -403,14 +401,3 @@ export function getStylesConfig(wco: WebpackConfigOptions): Configuration {
plugins: extraPlugins,
};
}

function getSassImplementation(): SassWorkerImplementation | typeof import('sass') {
const { webcontainer } = process.versions as unknown as Record<string, unknown>;

// When `webcontainer` is a truthy it means that we are running in a StackBlitz webcontainer.
// `SassWorkerImplementation` uses `receiveMessageOnPort` Node.js `worker_thread` API to ensure sync behavior which is ~2x faster.
// However, it is non trivial to support this in a webcontainer and while slower we choose to use `dart-sass`
// which in Webpack uses the slower async path.
// We should periodically check with StackBlitz folks (Mark Whitfeld / Dominic Elm) to determine if this workaround is still needed.
return webcontainer ? require('sass') : new SassWorkerImplementation();
}

0 comments on commit 58ed974

Please sign in to comment.