jaguar_hotreload
Hot reloader for Dart
Docs
Reloading application on file modification
HotReloader
lets the application hot reload itself on modifications to desired files.
main() async {
final reloader = new HotReloader();
reloader.addPath('.');
await reloader.go();
// TODO your code here!
}
VM service
HotReloader
requires that VM service is enabled during program run for reloading to work. To enable VM services supply
either --enable-vm-service
or --observe
command line flag when the application is run.
Failing to do so will result in notHotReloadable
exception.
More information can be found at Dart VM
Debouncing
When there are too many changes, it is not efficient to reload the application for every change. Debouncing allows
HotReloader
to reload only once every specified interval. debounceInterval
defaults to once every second.
main() async {
final reloader = new HotReloader(debounceInterval: const Duration(seconds: 10));
reloader.addPath('.');
await reloader.go();
// TODO your code here!
}
Adding paths to listen
Using String path
addPath
method shall be used to register file/directory path as String
.
main() async {
final reloader = new HotReloader();
reloader.addPath('lib/');
await reloader.go();
// Your code goes here
}
Using Glob
addGlob
shall be used to register multiple files/directories using a Glob
.
main() async {
final reloader = new HotReloader();
reloader.addGlob(new Glob('jaguar_*/lib'));
await reloader.go();
// Your code goes here
}
Using FileSystemEntity
addFile
shall be used to register a FileSystemEntity
.
main() async {
final reloader = new HotReloader();
reloader.addFile(new File('pubspec.yaml'));
await reloader.go();
// Your code goes here
}
Using Uri
addUri
shall be used to register a path using an instance of Uri
.
main() async {
final reloader = new HotReloader();
reloader.addUri(new Uri(scheme: 'file', path: '/usr/lib/dart'));
await reloader.go();
// Your code goes here
}
Using package Uri
addPackagePath
shall be used to register a path using package uri.
main() async {
final reloader = new HotReloader();
await reloader.addPackagePath(new Uri(scheme: 'package', path: 'jaguar/'));
await reloader.go();
// Your code goes here
}
Using package dependencies
addPackageDependencies
shall be used to register all packages the current package depends on.
main() async {
final reloader = new HotReloader();
await reloader.addPackageDependencies();
await reloader.go();
// Your code goes here
}
Manually reloading the application
reload
method is publicly available to request for application reload when desired.
Event
File modification event
onChange
stream is fired every time there is a change in the registered file paths.
Reload event
onReload
stream is fired after the application is reloaded irrespective of whether the file change or the user triggered
the reload.
Libraries
- jaguar_hotreload
- Provides HotReloader to reload Dart applications