В чем разница между lib / src и / bin в dart? - PullRequest
0 голосов
/ 17 декабря 2018

Я знаю, что lib / - это место, куда мы помещаем все наши библиотечные файлы, а / bin - место, куда мы помещаем точку входа для нашего приложения командной строки.Я знаю, что оба они являются публичными lib / и bin, но я не могу понять соглашение об использовании lib / src, которое согласно официальным документам должно содержать: код реализации

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

См. Условные обозначения макетов пакетов в пабе - Файлы реализации

Библиотеки внутри lib общедоступны: другие пакеты могут свободно импортировать их.Но большая часть кода пакета - это внутренние библиотеки реализации, которые должны импортироваться и использоваться только самим пакетом.Они находятся внутри подкаталога lib, который называется src.Там вы можете создавать подкаталоги, если это поможет вам упорядочить вещи.

Вы можете импортировать библиотеки, которые живут в lib/src, из другого кода Dart в том же пакете (как и другие библиотеки в lib, скриптыв bin и тестах), но вы никогда не должны импортировать из каталога lib/src другого пакета.Эти файлы не являются частью общедоступного API пакета, и они могут измениться таким образом, что это может нарушить ваш код.

Когда вы используете библиотеки из вашего собственного пакета, даже код в src, вы можете (иследует) по-прежнему использовать package: для их импорта.

0 голосов
/ 17 декабря 2018

lib/ - это каталог, содержащий разделяемый код.Он может быть передан

  • другим каталогам верхнего уровня, таким как bin/, web/, example/, test/, tool/, ... в том же пакете
  • к другим пакетам, которые имеют этот пакет в качестве зависимости.

lib/src по соглашению содержит частную реализацию открытого API, предоставляемого lib/ или lib/xxx, где xxx -not src.

bin зарезервирован для приложений командной строки и содержит сценарии точки входа Dart для их выполнения (файлы, содержащие main() {...}).

In pubspec.yamlВы можете определить исполняемые файлы https://www.dartlang.org/tools/pub/pubspec#executables, которые позволяют запускать сценарии из bin/, просто выполнив foo, чтобы выполнить dart somePath/bin/foo.dart (используя pub global activate my_package_with_foo).

...