如何在不使用发布部署的情况下部署dart应用程序(使用Web ui)

如何在不使用发布部署的情况下部署dart应用程序(使用Web ui),dart,dart-webui,Dart,Dart Webui,手动部署Dart Web ui应用程序的最佳策略是什么 发布部署对我不起作用,我提出了错误报告。因此,我在想,手动部署的最佳方式是什么 我是这样开始的: 1) 我从projectroot编译webui组件(dwc.dart) 2) 将目录更改为web/out,然后运行dart2js 3) 将所有.js文件复制到服务器上的scripts/js公用文件夹中 4) 将appname.html复制到服务器,将css和脚本路径更改为选项3 5) 确保dart.js也与项目3位于同一目录中 这就是我所能做到

手动部署Dart Web ui应用程序的最佳策略是什么

发布部署对我不起作用,我提出了错误报告。因此,我在想,手动部署的最佳方式是什么

我是这样开始的:

1) 我从projectroot编译webui组件(dwc.dart)

2) 将目录更改为web/out,然后运行dart2js

3) 将所有.js文件复制到服务器上的scripts/js公用文件夹中

4) 将appname.html复制到服务器,将css和脚本路径更改为选项3

5) 确保dart.js也与项目3位于同一目录中

这就是我所能做到的。那么我还需要做什么呢

有几个问题:

1) 我是否手动更改生成的.js文件中的文件路径,以指向服务器上的公用文件夹,以查找它们引用的文件,并确保这些文件也位于服务器上

2) 我是否也需要将所有包复制到服务器

3) 服务器上有首选的文件结构吗

任何关于这方面的建议都非常感谢


谢谢。

我为它写了一个Grunt脚本(因为我没有时间查看如何正确地为Grunt编写代码,我没有分享代码,因为它太乱了),但我基本上是这样做的:

  • 使用dwc将文件列表编译为给定的
    out
    dir
  • 将其编译为javascript
  • 清理所有不可部署的文件
  • 更改HTML中的某些路径以匹配服务器路径(由于某些原因,编译过程会更改这些路径)
  • 删除除我真正需要的包(JS interopt和browser)之外的所有包

因为我只使用JS版本,所以我删除了所有dart包。由于HTML文件中的路径由您决定,因此您可以使用适合您/您的服务器的结构。

我可以为您提供一个Grunt脚本,以了解任务的顺序。实际上,我使用的顺序是:

  • 创建构建目录。我通常使用/build/web。我通常将这些文件(index.html、main.dart、/css等)创建到/web目录中。我将其余组件创建到/lib目录中
  • 将包含main()函数的.dart文件(“main.dart”在我的例子中用于更简单的项目)编译为Javascript,并将其放入/build/web目录
  • 将其他需要的文件和文件夹复制到/build/web目录。此外,在此过程中,您将复制项目所需的包。您将在下面提供的示例中看到
  • 从项目中删除所有空文件夹
  • 构建过程结束后,您可以创建一个Grunt任务在浏览器中打开/index.html文件(我不提供此示例)
  • dart测试项目的结构:

    testApp
      - gruntfile.js
      - package.js
      /lib
      /packages
          /angular
      /web
        - index.html
        - main.dart
        /css
        /img
    
    因此,涵盖1-4步骤的Grunt示例脚本如下所示(复制到gruntfile.js):

    这就是Grunt脚本示例

    在项目的根目录中创建/gruntfile.js文件,并将脚本复制/粘贴到其中

    在项目的根目录中创建/package.json文件,并复制/粘贴以下脚本:

    {
      "name": "testApp",
      "version": "0.0.1",
      "description": "SomeDescriptionForTheTestApp",
      "main": "",
      "scripts": {
          "test": "echo \"Error: no test specified\" && exit 1"
       },
      "author": "YourName",
      "peerDependencies": {
          "grunt-cli": "^0.1.13"
      },
      "devDependencies": {
          "grunt": "^0.4.5",
          "grunt-cleanempty": "^1.0.3",
          "grunt-contrib-copy": "^0.7.0",
          "grunt-dart2js": "0.0.5",
          "grunt-mkdir": "^0.1.2",
          "matchdep": "^0.3.0"
      }
    }
    
    在Windows中打开命令提示符,在Linux中打开终端,导航到项目的根目录并使用以下命令:

    npm install
    
    等待,直到所有需要的Grunt模块将下载到您的本地项目。完成后,在命令提示符或终端中发出以下命令:

    node -e "require('grunt').cli()"
    
    您可以使用它来启动Grunt默认任务,而无需在系统上全局安装Grunt

    现在,要了解项目的确切构建结构(包括项目需要的包),请使用Pub build进行构建。然后,您将能够指示Grunt创建相同的dir结构

    如果需要,可以添加其他任务(如缩小)


    希望这能帮助你们理解这个过程,让你们首先开始一个测试应用程序。添加您的评论,使其更加完善和简化。

    此外,不要忘记缩小;),你说得对@GökhanBarışAker,我没有提到它,因为在我使用这个时,缩小破坏了JS代码的一部分。不知道现在是否已修复。谢谢您的帮助。我是否需要在部署中包含实际的.dart文件?此外,生成的.JS文件在文件系统中似乎有一个指向.dart文件的路径。这些路径也需要手动编辑吗?请共享您的Grunt脚本(即使它很乱)。
    node -e "require('grunt').cli()"