Creare librería en Dart instalable con Pub
A medida que aumentas tu nivel como desarrollador y vas creando funcionalidades en uno y otro proyecto, te das cuenta que bien podrías crear una librería centralizada e instalarla en todos tus demás proyectos. Esta librería podría ser privada o pública, pero la idea central es que sea un proyecto de código independiente, mantenible y centralizado. Es por esto que hoy veremos cómo crear una librería Dart que puedas fácilmente instalar en todos tus proyectos.
Scaffolding
Lo primero que debes hacer es crear el scaffolding de tu aplicación. Para esto, puedes utilizar el siguiente comando.
dart create --template=package-simple mypackage
Este comando creará algunos archivos dentro de los cuales se puede resaltar los siguientes:
# lib/
# |-- mypackage.dart
# lib/src/
# |-- mypackage_base.dart
El archivo mypackage.dart contendrá los exportes de las clases de tus paquetes. Este archivo será el que se cargue cuando importemos la librería, hay que tener en cuenta que todo lo que esté bajo el directorio src es privado y no se puede acceder por fuera de la librería a menos que lo declaremos explícitamente.
library mypackage;
export 'src/mypackage_base.dart';
El otro archivo es un ejemplo de lo que podría ser una clase.
class Awesome {
bool get isAwesome => true;
}
Carga de la librería mediante pub
Para cargar la librería de manera local, deberás crear un directorio llamado packages y agregarlo de la siguiente manera al pubspec.yaml en la sección de dependencias.
dev_dependencies:
...
mypackage:
packages/mypackage
Posterior a esto deberás ejecutar el siguiente comando.
dart pub get
Sube tu proyecto a GitHub
Sube tus cambios de manera organizada a GitHub. Recuerda que GitHub es un VCS hosting service, no es un servicio de almacenamiento en donde simplemente subes tu código. Crea cada funcionalidad y súbela en un commit. Puedes utilizar GitFlow también, esto te presentará como un desarrollador profesional.
Versiona tu librería
Cuando ya tengas lista tu primera versión debes indicarlo primero en el archivo pubspec.yml con la key version
.
version: 0.1.0
Puedes crear un release o crear o Lightweight Tag. Te recomiendo visitar la página oficial de GIT para elegir el método de versionado correcto para tu repositorio.
Carga de tu librería en pub.dev
pub.dev es un repositorio para paquetes de pub. Cuando ejecutas dart pub get
para instalar las dependencias de un proyecto pub busca todos estos paquetes en pub.dev y descarga las versiones indicadas en el archivo pubspec.yml.
Puedes crear tu cuenta de pub.dev con una cuenta de Google y publicar tus paquetes desde allí. También puedes crear un publiser para publicar paquetes en nombre de tu dominio. Todo esto lo puedes ver más a fondo directamente en Publishing Packages.
Es muy recomendable que antes de publicar tu paquete corras un "dry-run" para verificar que no tienes ningún warning y verificar la estructura del paquete q estás subiendo.
dart pub publish --dry-run
Una vez estés seguro de tus cambios puedes corre el comando para publicar sin dry-run.
dart pub publish
La consula te mostrará una URL a la cual debes acceder para subir el paquete a dev.pub. La primera vez que subas un paquete siempre quedará en tu cuenta personal y no en la de un publisher.
Transferir paquete a un Publisher
Para transferir un paquete a un publisher debes ingresar al paquete en cuestión, y en la pestaña Admin seleccionar el publish al cual quieres transferir el paquete y finalmente dar clic en TRANSFER TO PUBLISHER. Este proceso tomará aproximadamente 15-20 minutos.