Управление пакетами Dart через dart2js

Я изучаю Dart и его менеджер зависимостей pub, и мне трудно увидеть здесь «лес за деревьями».

Скажем, я хочу использовать Polymer.dart в своем проекте. Итак, в корне моего проекта я создаю следующее pubspec.yaml:

name: test_dart
description: A sample web application
dependencies:
    browser: any
    polymer: ">=0.9.0 <0.10.0"

Затем я запускаю pub get, который переходит в репозиторий pub и извлекает указанные мной зависимости browser и polymer. Затем он создает каталог packages в корне моего проекта, что теперь означает, что у меня есть проект, который выглядит так:

MyDartProject/
    pubspec.yaml
    myapp.dart
    packages/
        browser/
            ...
        ...all the packages that ship with Polymer

Теперь я начинаю кодировать свое веб-приложение Dart (myapp.dart), которое будет ссылаться на различные типы/функции Polymer и browser и т. д. в его исходном коде.

Когда я закончу, я хочу создать файл JavaScript с именем myapp.js.

Согласно dart2js документации , мне нужно запустить что-то вроде:

dart2js --out=myapp.js --package-root=??? myapp.dart

Как включить все пакеты браузера и полимера в путь сборки?


person IAmYourFaja    schedule 21.12.2013    source источник


Ответы (2)


Теперь есть опция «сборка паба».

http://pub.dartlang.org/doc/pub-build.html

Используйте pub build, когда будете готовы развернуть свое веб-приложение. Когда вы запускаете pub build, он генерирует ресурсы для текущего пакета и всех его зависимостей, помещая их в новый каталог с именем build.

$ cd ~/dart/helloworld
$ pub build
Building helloworld......
Built 5 files!

Если каталог сборки уже существует, pub build удалит его, а затем создаст снова.

Это должно делать все, что вам нужно здесь. Вы также можете запустить его из IDE, щелкнув правой кнопкой мыши файл pubspec.yaml и выбрав «pub build».

EDIT: вы также должны увидеть ссылки в ответе zoechi.

person Paul Collingwood    schedule 21.12.2013
comment
Спасибо @Paul Collingwood (+1) - быстрое продолжение для вас. Я работаю в редакторе Dart и только что запустил Pub Build в приложении sunflower, которое поставляется с редакторами в качестве образца приложения. Он создал каталог build в корне моего проекта, который содержит несколько элементов: каталог packages, math.png, sunflower.css, sunflower.dart.js и sunflower.html. Что мне поместить на веб-сервер? Нужно ли мне поместить все на сервер, или я могу оставить каталог packages? (Или sunflower.dart.js ссылается на скомпилированный код в packages, поэтому необходимо находиться на сервере)? Спасибо еще раз! - person IAmYourFaja; 21.12.2013
comment
поставить все в сборке на сервер. Это автономно. Содержимое в каталоге пакетов по-прежнему будет упоминаться, так что вам это тоже нужно. - person Paul Collingwood; 21.12.2013

Если вы запускаете dart2js из своего каталога MyDartProject, вам не нужно указывать параметр --package-root.

Альтернативный способ запуска pub build. Если вы используете Polymer, вам нужно добавить раздел transformers.

смотрите также

person Günter Zöchbauer    schedule 21.12.2013
comment
Потрясающий ответ и ссылки @zoechi (+1) - см. мой комментарий под ответом Пола Коллингвуда - у меня к вам тот же вопрос! - person IAmYourFaja; 21.12.2013
comment
Также @zoechi, что такое трансформеры?!? Я не вижу их в списке pubspec спецификации. Спасибо еще раз! - person IAmYourFaja; 21.12.2013
comment
Трансформеры — это программы, которые можно интегрировать в процесс сборки (вы можете написать свою собственную в Dart и добавить ее с помощью pubspec.yaml). Преобразователи Polymer выполняют специфичную для Polymer часть преобразования Dart в JS (сам не уверен, какие именно шаги здесь включены). sass — еще один пример, который запускает SASS для преобразования исходных файлов SASS в файлы CSS. - person Günter Zöchbauer; 21.12.2013
comment
Трансформеры довольно новы и еще не упомянуты в документации. - person Günter Zöchbauer; 21.12.2013