如何使用 dart 包部署 dart web 应用程序?

Posted

技术标签:

【中文标题】如何使用 dart 包部署 dart web 应用程序?【英文标题】:how to deploy dart web app with dart packages? 【发布时间】:2013-02-20 22:50:43 【问题描述】:

考虑以下 dart web 应用程序:

import "dart:html";
// assume this is a custom library hosted somewhere on github, i.e. 
// there is a pubspec.yaml entry
//
// dependencies:
//    my_hello:
//      git: http://github.com/foo/my_hello.git
//
import "package:my_hello/my_hello.dart" as hello;

main() 
  query("#message").innerHtml = hello.message;

如何将其部署在 Web 服务器上的某个位置(例如作为 github 页面),以便在 Dartium 中用作基于 dart 的 Web 应用程序?

    我必须在网络服务器上创建一个目录packages吗?

    我必须将包my_hello.dart 复制到网络服务器吗?

    packages/my_hello/...

    或者 Dartium 是否能够解决给定 pubspec.yaml 的依赖关系?

【问题讨论】:

***.com/questions/24672090 展示了如何配置和使用 dart2dart。 【参考方案1】:

用途:

$ pub build [--no-minify]

当您准备好部署您的网络应用程序时,请使用 pub build。当您运行 pub build 时,它会为当前包及其所有依赖项生成资产,并将它们放入名为 build 的新目录中。

来自Seth Ladd's post on Google+(不再可用)。

【讨论】:

【参考方案2】:

目前,您需要部署 packages 文件夹以及您的代码。 Dartium 不使用pubspec.yaml

目前正在开发中,有一个dart2dart 工具,它与dart2js 做类似的事情——摇树、缩小,并将所有代码放入一个可部署的源文件中。有关说明,请参阅此 dartbug issue 和 Google 群组上的此 recent discussion。

这很可能构成pub deploy 场景的一部分,用于打包您的应用以部署在网络服务器上。

另见:what could be a deployment strategy with pubspec on dart 和:Creating a javascript deployment set from Dart2js output

更新:Dartbug 6006 目前正在开发中,并表示它的工作方式如下:

它将“web”中的所有内容复制到部署目录中,在所有入口点上运行 dart2dart 和 dart2js,并清理 Dart 源文件。这将生成一个无需任何额外步骤即可提供服务的目录。

【讨论】:

【参考方案3】:

我个人一直在使用 rsync,因为它简单快速

cd web
rsync -RLr . ../../deploy/

【讨论】:

【参考方案4】:

这是一个实用脚本,它将 Web 应用所依赖的包复制到部署目录 - 请参阅 Gist

【讨论】:

以上是关于如何使用 dart 包部署 dart web 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

部署颤振到 github 页面给出“带有大写的存储库名称”不是有效的 Dart 包名称

App Engine + Polymer.dart 带有 hashbang 的单页 Web 应用路由

如何在 Dart / Flutter 中使用另一个文件的函数?

Dart 如何编写一个简单的 web-socket echo 应用程序

如何使用我的 dart 包私有而不在 pub dart lang 上显示?

Flutter/Dart 中的 TDD。如何减少启动时间