@@ -44,6 +44,8 @@ void main(List<String> args) {
44
44
target: pkg.JSRequireTarget .node, identifier: 'nodeModule' ),
45
45
pkg.JSRequire ("stream" , target: pkg.JSRequireTarget .node),
46
46
pkg.JSRequire ("util" , target: pkg.JSRequireTarget .node),
47
+ pkg.JSRequire ("./sass-embedded" ,
48
+ target: pkg.JSRequireTarget .cli, identifier: 'sass_embedded' ),
47
49
];
48
50
pkg.jsModuleMainLibrary.value = "lib/src/js.dart" ;
49
51
pkg.npmPackageJson.fn = () =>
@@ -130,6 +132,8 @@ void main(List<String> args) {
130
132
131
133
afterTask ("pkg-npm-dev" , _addDefaultExport);
132
134
afterTask ("pkg-npm-release" , _addDefaultExport);
135
+ afterTask ("pkg-npm-dev" , _addOptionalSassEmbedded);
136
+ afterTask ("pkg-npm-release" , _addOptionalSassEmbedded);
133
137
134
138
grind (args);
135
139
}
@@ -302,6 +306,26 @@ function defaultExportDeprecation() {
302
306
File ("build/npm/sass.node.mjs" ).writeAsStringSync (buffer.toString ());
303
307
}
304
308
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
+
305
329
/// A regular expression to locate the language repo revision in the Dart Sass
306
330
/// Homebrew formula.
307
331
final _homebrewLanguageRegExp = RegExp (
0 commit comments