diff --git a/webdev/CHANGELOG.md b/webdev/CHANGELOG.md index 491bdb385..442357ea2 100644 --- a/webdev/CHANGELOG.md +++ b/webdev/CHANGELOG.md @@ -1,4 +1,6 @@ -## 3.7.1-wip +## 3.7.1 +- Update `dwds` constraint to `24.3.5`. +- Added a utility method to locate `package_config.json` and set it in the `loadStrategy`. ## 3.7.0 diff --git a/webdev/lib/src/serve/utils.dart b/webdev/lib/src/serve/utils.dart index 962305b59..7c3361987 100644 --- a/webdev/lib/src/serve/utils.dart +++ b/webdev/lib/src/serve/utils.dart @@ -82,3 +82,26 @@ Future _removeDeleted(String from, String to) async { } } } + +/// Returns the absolute file path of the `package_config.json` file in the `.dart_tool` +/// directory, searching recursively from the current directory hierarchy. +String? findPackageConfigFilePath() { + var candidateDir = Directory(p.current).absolute; + + while (true) { + final candidatePackageConfigFile = + File(p.join(candidateDir.path, '.dart_tool', 'package_config.json')); + + if (candidatePackageConfigFile.existsSync()) { + return candidatePackageConfigFile.path; + } + + final parentDir = candidateDir.parent; + if (parentDir.path == candidateDir.path) { + // We've reached the root directory + return null; + } + + candidateDir = parentDir; + } +} diff --git a/webdev/lib/src/serve/webdev_server.dart b/webdev/lib/src/serve/webdev_server.dart index bdf632091..edcfb848a 100644 --- a/webdev/lib/src/serve/webdev_server.dart +++ b/webdev/lib/src/serve/webdev_server.dart @@ -21,6 +21,7 @@ import '../command/configuration.dart'; import '../util.dart'; import 'chrome.dart'; import 'handlers/favicon_handler.dart'; +import 'utils.dart' show findPackageConfigFilePath; Logger _logger = Logger('WebDevServer'); @@ -141,6 +142,7 @@ class WebDevServer { options.configuration.reload, assetReader, buildSettings, + packageConfigPath: findPackageConfigFilePath(), ).strategy; if (options.configuration.enableExpressionEvaluation) { diff --git a/webdev/lib/src/version.dart b/webdev/lib/src/version.dart index cf9b803aa..d77ca7ed9 100644 --- a/webdev/lib/src/version.dart +++ b/webdev/lib/src/version.dart @@ -1,2 +1,2 @@ // Generated code. Do not modify. -const packageVersion = '3.7.1-wip'; +const packageVersion = '3.7.1'; diff --git a/webdev/pubspec.yaml b/webdev/pubspec.yaml index 921aabc33..1180595f6 100644 --- a/webdev/pubspec.yaml +++ b/webdev/pubspec.yaml @@ -1,6 +1,6 @@ name: webdev # Every time this changes you need to run `dart run build_runner build`. -version: 3.7.1-wip +version: 3.7.1 # We should not depend on a dev SDK before publishing. # publish_to: none description: >- @@ -19,7 +19,7 @@ dependencies: crypto: ^3.0.2 dds: ^4.1.0 # Pin DWDS to avoid dependency conflicts with vm_service: - dwds: 24.2.0 + dwds: 24.3.5 http: ^1.0.0 http_multi_server: ^3.2.0 io: ^1.0.3