Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

webdev doesn't allow setting optimization level #2526

Open
Wdestroier opened this issue Nov 24, 2024 · 0 comments
Open

webdev doesn't allow setting optimization level #2526

Wdestroier opened this issue Nov 24, 2024 · 0 comments

Comments

@Wdestroier
Copy link

Hi!

The documentation in https://dart.dev/web/deployment says:

Compile using webdev

Use the webdev build command to create a deployable version of your app. This command converts your code to JavaScript and saves the result as build/web/main.dart.js. You can use any option available to dart compile js with webdev build.

If we check the dart compile js help section, we can see it supports optmization levels:

dart compile js --help
Compile Dart to JavaScript.

Usage: dart compile js [arguments]
-h, --help Print this usage information.
-h -v Show detailed information about all options.
-o, --output Write the output to .
-O<0,1,2,3,4> Set the compiler optimization level (defaults to -O1).
-O0 No optimizations (only meant for debugging the compiler).
-O1 Default (includes whole program analyses and inlining).
-O2 Safe production-oriented optimizations (like minification).
-O3 Potentially unsafe optimizations (see -h -v for details).
-O4 More agressive unsafe optimizations (see -h -v for details).

However, if we check the webdev build help section, we can see it doesn't show anything related to these flags:

webdev build --help
Run builders to build a package.

Usage: webdev build [arguments]
-h, --help Print this usage information.
-o, --output A directory to write the result of a build to. Or a mapping from a top-level
directory in the package to the directory to write a filtered build output
to. For example "web:deploy".
A value of "NONE" indicates that no "--output" value should be passed to
build_runner.
(defaults to "web:build")
-r, --[no-]release Build with release mode defaults for builders.
(defaults to on)
--[no-]build-web-compilers If a dependency on build_web_compilers is required to run.
(defaults to on)
-e, --[no-]enable-expression-evaluation Enable expression evaluation features in the debugger.
(defaults to on)
-v, --verbose Enables verbose logging.

Run "webdev help" to see global options.

If we try to pass the optimization level anyway, it doesn't work:

webdev build -O2
Could not find an option with short name "-O".

Usage: webdev build [arguments]
...

Another alternative I tried is webdev build -- -O2, but it doesn't work too:

webdev build -- -O2
[INFO] Run "build_runner help" to see global options.Unhandled exception:
Bad state: Unable to start build daemon.
#0 _handleDaemonStartup. (package:build_daemon/client.dart:79:21)
#1 _runUserCode (dart:async/stream_pipe.dart:11:23)
#2 Stream.firstWhere. (dart:async/stream.dart:1708:9)
#3 _RootZone.runGuarded (dart:async/zone.dart:1582:10)
#4 _BufferingStreamSubscription._sendDone.sendDone (dart:async/stream_impl.dart:418:13)
#5 _BufferingStreamSubscription._sendDone (dart:async/stream_impl.dart:428:7)
#6 _BufferingStreamSubscription._close (dart:async/stream_impl.dart:317:7)
#7 _SyncBroadcastStreamController._sendDone. (dart:async/broadcast_stream_controller.dart:399:22)
#8 _BroadcastStreamController._forEachListener (dart:async/broadcast_stream_controller.dart:322:15)
#9 _SyncBroadcastStreamController._sendDone (dart:async/broadcast_stream_controller.dart:398:7)
#10 _BroadcastStreamController.close (dart:async/broadcast_stream_controller.dart:268:5)
#11 _AsBroadcastStreamController.close (dart:async/broadcast_stream_controller.dart:505:24)
#12 _RootZone.runGuarded (dart:async/zone.dart:1582:10)
#13 _BufferingStreamSubscription._sendDone.sendDone (dart:async/stream_impl.dart:418:13)
#14 _BufferingStreamSubscription._sendDone (dart:async/stream_impl.dart:428:7)
#15 _BufferingStreamSubscription._close (dart:async/stream_impl.dart:317:7)
#16 _SinkTransformerStreamSubscription._close (dart:async/stream_transformers.dart:87:11)
#17 _EventSinkWrapper.close (dart:async/stream_transformers.dart:21:11)
#18 _StringAdapterSink.close (dart:convert/string_conversion.dart:241:11)
#19 _LineSplitterSink.close (dart:convert/line_splitter.dart:141:11)
#20 _SinkTransformerStreamSubscription._handleDone (dart:async/stream_transformers.dart:132:24)
#21 _RootZone.runGuarded (dart:async/zone.dart:1582:10)
#22 _BufferingStreamSubscription._sendDone.sendDone (dart:async/stream_impl.dart:418:13)
#23 _BufferingStreamSubscription._sendDone (dart:async/stream_impl.dart:428:7)
#24 _BufferingStreamSubscription._close (dart:async/stream_impl.dart:317:7)
#25 _SinkTransformerStreamSubscription._close (dart:async/stream_transformers.dart:87:11)
#26 _EventSinkWrapper.close (dart:async/stream_transformers.dart:21:11)
#27 _StringAdapterSink.close (dart:convert/string_conversion.dart:241:11)
#28 _Utf8ConversionSink.close (dart:convert/string_conversion.dart:295:20)
#29 _ConverterStreamEventSink.close (dart:convert/chunked_conversion.dart:78:18)
#30 _SinkTransformerStreamSubscription._handleDone (dart:async/stream_transformers.dart:132:24)
#31 _RootZone.runGuarded (dart:async/zone.dart:1582:10)
#32 _BufferingStreamSubscription._sendDone.sendDone (dart:async/stream_impl.dart:418:13)
#33 _BufferingStreamSubscription._sendDone (dart:async/stream_impl.dart:428:7)
#34 _BufferingStreamSubscription._close (dart:async/stream_impl.dart:317:7)
#35 _SyncStreamControllerDispatch._sendDone (dart:async/stream_controller.dart:792:19)
#36 _StreamController._closeUnchecked (dart:async/stream_controller.dart:647:7)
#37 _StreamController.close (dart:async/stream_controller.dart:640:5)
#38 _Socket._onData (dart:io-patch/socket_patch.dart:2462:21)
#39 _RootZone.runUnaryGuarded (dart:async/zone.dart:1594:10)
#40 _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:365:11)
#41 _BufferingStreamSubscription._add (dart:async/stream_impl.dart:297:7)
#42 _SyncStreamControllerDispatch._sendData (dart:async/stream_controller.dart:784:19)
#43 _StreamController._add (dart:async/stream_controller.dart:658:7)
#44 _StreamController.add (dart:async/stream_controller.dart:606:5)
#45 new _RawSocket. (dart:io-patch/socket_patch.dart:1949:35)
#46 _NativeSocket.issueReadEvent.issue (dart:io-patch/socket_patch.dart:1378:18)
#47 _microtaskLoop (dart:async/schedule_microtask.dart:40:21)
#48 _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
#49 _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
#50 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:185:5)

Should webdev's documentation enforce "You can use any option available to dart compile js with webdev build." if the relevant flags don't work? I guess so, it should work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant