@@ -44,6 +44,8 @@ void main(List<String> args) {
4444 target: pkg.JSRequireTarget .node, identifier: 'nodeModule' ),
4545 pkg.JSRequire ("stream" , target: pkg.JSRequireTarget .node),
4646 pkg.JSRequire ("util" , target: pkg.JSRequireTarget .node),
47+ pkg.JSRequire ("./sass-embedded" ,
48+ target: pkg.JSRequireTarget .cli, identifier: 'sass_embedded' ),
4749 ];
4850 pkg.jsModuleMainLibrary.value = "lib/src/js.dart" ;
4951 pkg.npmPackageJson.fn = () =>
@@ -130,6 +132,8 @@ void main(List<String> args) {
130132
131133 afterTask ("pkg-npm-dev" , _addDefaultExport);
132134 afterTask ("pkg-npm-release" , _addDefaultExport);
135+ afterTask ("pkg-npm-dev" , _addOptionalSassEmbedded);
136+ afterTask ("pkg-npm-release" , _addOptionalSassEmbedded);
133137
134138 grind (args);
135139}
@@ -302,6 +306,26 @@ function defaultExportDeprecation() {
302306 File ("build/npm/sass.node.mjs" ).writeAsStringSync (buffer.toString ());
303307}
304308
309+ /// After building the NPM package, write a wrapper script to lazily
310+ /// require "sass-embedded/embedded".
311+ void _addOptionalSassEmbedded () {
312+ var buffer = """
313+ module.exports = (function () {
314+ try {
315+ return require('sass-embedded/embedded')
316+ } catch (_) {
317+ return {
318+ main: function () {
319+ console.error('`sass --embedded` requires "sass-embedded" package in pure JS mode.');
320+ process.exitCode = 1;
321+ }
322+ }
323+ }
324+ })();
325+ """ ;
326+ File ("build/npm/sass-embedded.js" ).writeAsStringSync (buffer);
327+ }
328+
305329/// A regular expression to locate the language repo revision in the Dart Sass
306330/// Homebrew formula.
307331final _homebrewLanguageRegExp = RegExp (
0 commit comments