diff --git a/lib/src/entrypoint.dart b/lib/src/entrypoint.dart
index ceb277903edffe9ffe847de824d034602feea06f..8e8b7921fd15105722405e9d94c5d21f2b332af3 100644
--- a/lib/src/entrypoint.dart
+++ b/lib/src/entrypoint.dart
@@ -76,6 +76,9 @@ class Entrypoint {
   /// The path to the entrypoint's "packages" directory.
   String get packagesDir => root.path('packages');
 
+  /// The path to the entrypoint's ".packages" file.
+  String get packagesFile => root.path('.packages');
+
   /// `true` if the entrypoint package currently has a lock file.
   bool get lockFileExists => _lockFile != null || entryExists(lockFilePath);
 
diff --git a/lib/src/executable.dart b/lib/src/executable.dart
index 62c33a1c6c1499296c65354e5990e7c0bbe735a7..ec37cef2b198c7f17ab6930224017f53b8ebb5f2 100644
--- a/lib/src/executable.dart
+++ b/lib/src/executable.dart
@@ -120,7 +120,7 @@ Future<int> runExecutable(Entrypoint entrypoint, String package,
     // helpful for the subprocess to be able to spawn Dart with
     // Platform.executableArguments and have that work regardless of the working
     // directory.
-    vmArgs.add('--package-root=${p.toUri(p.absolute(entrypoint.packagesDir))}');
+    vmArgs.add('--packages=${p.toUri(p.absolute(entrypoint.packagesFile))}');
   }
 
   vmArgs.add(executableUrl.toString());