@@ -12,6 +12,7 @@ import 'package:collection/collection.dart';
1212import 'package:crypto/crypto.dart' ;
1313import 'package:grinder/grinder.dart' ;
1414import 'package:http/http.dart' as http;
15+ import 'package:meta/meta.dart' ;
1516import 'package:node_preamble/preamble.dart' as preamble;
1617import 'package:pub_semver/pub_semver.dart' ;
1718import 'package:source_span/source_span.dart' ;
@@ -85,34 +86,56 @@ package() async {
8586 client.close ();
8687}
8788
88- @Task ('Compile to JS.' )
89- js () {
89+ @Task ('Compile to JS in dev mode.' )
90+ js () => _js (release: false );
91+
92+ @Task ('Compile to JS in release mode.' )
93+ js_release () => _js (release: true );
94+
95+ /// Compiles Sass to JS.
96+ ///
97+ /// If [release] is `true` , this compiles minified with
98+ /// --trust-type-annotations. Otherwise, it compiles unminified with pessimistic
99+ /// type checks.
100+ void _js ({@required bool release}) {
90101 _ensureBuild ();
91102 var destination = new File ('build/sass.dart.js' );
92103
93104 var args = [
94- '--trust-type-annotations' ,
95105 '-Dnode=true' ,
96106 '-Dversion=$_version ' ,
97107 '-Ddart-version=$_dartVersion ' ,
98108 ];
99- if (Platform .environment[ "SASS_MINIFY_JS" ] != "false" ) args.add ("--minify" );
109+ if (release ) args.. add ("--minify" ).. add ( "--trust-type-annotations " );
100110
101111 Dart2js .compile (new File ('bin/sass.dart' ),
102112 outFile: destination, extraArgs: args);
103113 var text = destination.readAsStringSync ();
104114 destination.writeAsStringSync (preamble.getPreamble () + text);
105115}
106116
107- @Task ('Build a pure-JS npm package.' )
117+ @Task ('Build a pure-JS dev-mode npm package.' )
108118@Depends (js)
109- npm_package () {
119+ npm_package () => _npm (release: false );
120+
121+ @Task ('Build a pure-JS release-mode npm package.' )
122+ @Depends (js_release)
123+ npm_release_package () => _npm (release: true );
124+
125+ /// Builds a pure-JS npm package.
126+ ///
127+ /// If [release] is `true` , this compiles minified with
128+ /// --trust-type-annotations. Otherwise, it compiles unminified with pessimistic
129+ /// type checks.
130+ void _npm ({@required bool release}) {
110131 var json = JSON .decode (new File ('package/package.json' ).readAsStringSync ())
111132 as Map <String , dynamic >;
112133 json['version' ] = _version;
113134
114135 _writeNpmPackage ('build/npm' , json);
115- _writeNpmPackage ('build/npm-old' , json..addAll ({"name" : "dart-sass" }));
136+ if (release) {
137+ _writeNpmPackage ('build/npm-old' , json..addAll ({"name" : "dart-sass" }));
138+ }
116139}
117140
118141@Task ('Installs dependencies from npm.' )
0 commit comments