En este módulo, aprenderás cómo crear tus propios paquetes en Dart. Los paquetes son una forma de organizar y compartir código reutilizable. Dart tiene un sistema de paquetes robusto que te permite crear, publicar y gestionar paquetes fácilmente.

Objetivos del Módulo

  • Comprender la estructura de un paquete en Dart.
  • Aprender a crear un paquete desde cero.
  • Conocer cómo publicar un paquete en pub.dev.
  • Aprender a gestionar dependencias y versiones.

  1. Estructura de un Paquete en Dart

Un paquete en Dart tiene una estructura específica que facilita la organización del código y la documentación. A continuación, se muestra la estructura básica de un paquete:

my_package/
  ├── lib/
  │   └── my_package.dart
  ├── test/
  │   └── my_package_test.dart
  ├── example/
  │   └── my_package_example.dart
  ├── pubspec.yaml
  ├── README.md
  ├── CHANGELOG.md
  └── LICENSE

Descripción de los Archivos y Directorios

  • lib/: Contiene el código fuente del paquete. El archivo principal suele llamarse my_package.dart.
  • test/: Contiene las pruebas unitarias para el paquete.
  • example/: Contiene ejemplos de cómo usar el paquete.
  • pubspec.yaml: Archivo de configuración del paquete, donde se definen las dependencias, la versión, el nombre del paquete, etc.
  • README.md: Archivo de documentación que describe el paquete y cómo usarlo.
  • CHANGELOG.md: Archivo que documenta los cambios realizados en cada versión del paquete.
  • LICENSE: Archivo que especifica la licencia del paquete.

  1. Creación de un Paquete desde Cero

Paso 1: Crear la Estructura del Paquete

Para crear un nuevo paquete, puedes usar el comando dart create:

dart create -t package-simple my_package

Este comando creará una estructura básica de paquete en el directorio my_package.

Paso 2: Configurar el Archivo pubspec.yaml

El archivo pubspec.yaml es crucial para la configuración del paquete. Aquí hay un ejemplo básico:

name: my_package
description: A new Dart package.
version: 0.0.1
author: Your Name <[email protected]>
homepage: https://example.com

environment:
  sdk: '>=2.12.0 <3.0.0'

dependencies:
  # Añade las dependencias aquí

dev_dependencies:
  test: ^1.16.0

Paso 3: Escribir el Código del Paquete

En el archivo lib/my_package.dart, puedes empezar a escribir el código de tu paquete. Aquí hay un ejemplo simple:

library my_package;

/// A simple function that adds two numbers.
int add(int a, int b) {
  return a + b;
}

Paso 4: Escribir Pruebas Unitarias

En el archivo test/my_package_test.dart, puedes escribir pruebas unitarias para tu paquete:

import 'package:test/test.dart';
import 'package:my_package/my_package.dart';

void main() {
  test('adds two numbers', () {
    expect(add(2, 3), 5);
  });
}

Paso 5: Documentar el Paquete

Asegúrate de documentar tu paquete adecuadamente en el archivo README.md. Aquí hay un ejemplo básico:

# My Package

A new Dart package.

## Usage

import 'package:my_package/my_package.dart';

void main() { print(add(2, 3)); // 5 }

  1. Publicar un Paquete en pub.dev

Paso 1: Crear una Cuenta en pub.dev

Antes de publicar un paquete, necesitas una cuenta en pub.dev. Puedes registrarte en pub.dev.

Paso 2: Validar el Paquete

Antes de publicar, asegúrate de que tu paquete cumple con las normas de pub.dev. Puedes usar el comando dart pub publish --dry-run para validar tu paquete:

dart pub publish --dry-run

Paso 3: Publicar el Paquete

Si todo está en orden, puedes publicar tu paquete con el siguiente comando:

dart pub publish

  1. Gestión de Dependencias y Versiones

Dependencias

Puedes añadir dependencias en el archivo pubspec.yaml bajo la sección dependencies:

dependencies:
  http: ^0.13.3

Versiones

Es importante seguir las convenciones de versionado semántico (semver) para tu paquete. La versión se especifica en el archivo pubspec.yaml:

version: 1.0.0

Ejercicio Práctico

Ejercicio 1: Crear un Paquete Simple

  1. Crea un nuevo paquete llamado math_utils.
  2. Añade una función en lib/math_utils.dart que calcule el factorial de un número.
  3. Escribe pruebas unitarias para la función en test/math_utils_test.dart.
  4. Documenta el paquete en README.md.

Solución

lib/math_utils.dart:

library math_utils;

/// Calculates the factorial of a number.
int factorial(int n) {
  if (n <= 1) return 1;
  return n * factorial(n - 1);
}

test/math_utils_test.dart:

import 'package:test/test.dart';
import 'package:math_utils/math_utils.dart';

void main() {
  test('calculates factorial of 5', () {
    expect(factorial(5), 120);
  });

  test('calculates factorial of 0', () {
    expect(factorial(0), 1);
  });
}

README.md:

# Math Utils

A Dart package for mathematical utilities.

## Usage

import 'package:math_utils/math_utils.dart';

void main() { print(factorial(5)); // 120 }

Conclusión

En este módulo, has aprendido cómo crear, configurar y publicar un paquete en Dart. También has aprendido a gestionar dependencias y versiones. Crear paquetes es una habilidad esencial para compartir y reutilizar código en proyectos de Dart. ¡Ahora estás listo para crear y publicar tus propios paquetes!

© Copyright 2024. Todos los derechos reservados