模仿 build_runner 在 nodeJs 服务器上服务

Mimicking build_runner serve on a nodeJs server

随着几天前 Dartium 的到期,我觉得有必要从 dart 1.24.3 迁移到 Dart2,尽管它仍在开发中。

虽然我在这样做时遇到了一些问题,其中之一与我的应用程序的架构有关。

我 运行 一个 nodeJs 服务器,它也充当带有客户端 dart 的网络服务器。 我在使用新的 dart SDK 时遇到的问题是,为了在 Chrome 中读取 .dart 文件,必须使用 webdev servebuild_runner serve.[=16= 来提供它们。 ]

显然,这 2 个命令充当文件服务器,这不是我想要的,因为我使用的是 nodeJS 服务器。

通过使用 build_runner watch 我想我正在将 .dart 文件构建和监视到以下目录中的 .dart.js 中:

.dart_tool/build/generated//lib

我也可以通过我的 nodeJS 服务器为它们提供服务。剩下的是包目录,我似乎找不到 pub serves 从哪里获取以下包文件:

/packages/$sdk/dev_compiler/amd/require.js /packages/$sdk/dev_compiler/amd/dart_sdk.js

有谁知道 build_runner serve 做了什么来包含它们?

谢谢,

这些文件来自 dart sdk 本身的 lib 目录。

注意还有一个选项,就是使用build_runner中的-o选项。这将创建一个包含源文件和生成文件的合并目录,您可以直接使用该目录而不依赖任何内部文件布局。

在开发期间使用不同的服务器有 2 个选项。

  1. 运行 build_runner serve 在不同的端口上,并将请求从您的其他服务器代理到它。这样做的好处是可以在构建过程中延迟请求,这样您就不会得到不一致的资产集。
  2. 运行 build_runner watch --output web:build 并使用创建的 build/ 目录来提供文件。这将包括一个包含这些文件的 build/packages 目录。