Meteoro - Package.js

En este capítulo, aprenderemos cómo crear nuestro propio paquete de meteoritos.

Crear un paquete

Agreguemos una nueva carpeta en el escritorio, donde se creará el paquete. Usaremos la ventana del símbolo del sistema.

C:\Users\username\Desktop\meteorApp> mkdir packages

Ahora, podemos crear el paquete en la carpeta que hemos creado anteriormente. Ejecute el siguiente comando desde el símbolo del sistema.Username es el nombre de usuario de Meteor Developer y package-name es el nombre del paquete.

C:\Users\username\Desktop\meteorApp\packages>meteor create --package username:package-name

Agregar un paquete

Para poder agregar un paquete local a nuestra aplicación, necesitamos configurar el ENVIRONMENT VARIABLEeso le dirá a Meteor que cargue el paquete desde la carpeta local. Haga clic con el botón derecho en el icono de la computadora y elijaproperties/Advanced system settings/Environment Variables/NEW.

Variable Name debiera ser PACKAGE_DIRS. Variable Valuedebería ser la ruta a la carpeta que creamos. En nuestro caso,C:\Users\username\Desktop\meteorApp\packages.

No olvide reiniciar el command prompt después de agregar una nueva variable de entorno.

Ahora podemos agregar el paquete a nuestra aplicación ejecutando el siguiente código:

C:\Users\username\Desktop\meteorApp>meteor add username:package-name

Archivos de paquete

Los siguientes cuatro archivos se encontrarán en el paquete que creamos.

  • package-name-test.js
  • package-name.js
  • package.js
  • README.md

Paquete de prueba (nombre-paquete-prueba.js)

Ofertas de meteoritos tinytestpaquete para probar. Instalemos primero usando el siguiente comando en la ventana del símbolo del sistema.

C:\Users\username\Desktop\meteorApp>meteor add tinytest

Si abrimos package-name-test.js, veremos el ejemplo de prueba predeterminado. Usaremos este ejemplo para probar la aplicación. Nota: Siempre es mejor escribir nuestras propias pruebas al desarrollar paquetes de meteoritos.

Para probar el paquete, ejecutemos este código en el símbolo del sistema.

C:\Users\username\Desktop>meteor test-packages packages/package-name

Obtendremos el siguiente resultado.

Archivo package.js

Este es el archivo donde podemos escribir el código. Creemos una funcionalidad simple para nuestro paquete. Nuestro paquete registrará texto en la consola.

paquetes / paquete.js

myPackageFunction = function() {
   console.log('This is simple package...');
}

Archivo package-name.js

Este es el archivo donde podemos establecer alguna configuración de paquete. Volveremos a ello más tarde, pero por ahora necesitamos exportarmyPackageFunctionpara que podamos usarlo en nuestra aplicación. Necesitamos agregar esto dentroPackage.onUsefunción. El archivo se verá así.

paquetes / nombre-paquete.js

Package.describe({
   name: 'username:package-name',
   version: '0.0.1',
   
   // Brief, one-line summary of the package.
   summary: '',
   
   // URL to the Git repository containing the source code for this package.
   git: '',
   
   // By default, Meteor will default to using README.md for documentation.
   
   // To avoid submitting documentation, set this field to null.
   documentation: 'README.md'
});

Package.onUse(function(api) {
   api.versionsFrom('1.2.1');
   api.use('ecmascript');
   api.addFiles('mypackage.js');
   api.export('myPackageFunction'); // We are exporting the function we created above...
});

Package.onTest(function(api) {
   api.use('ecmascript');
   api.use('tinytest');
   api.use('username:package-name');
   api.addFiles('package-name-tests.js');
});

Usando un paquete

Ahora finalmente podemos llamar al myPackageFunction() de nuestro meteorApp.js archivo.

paquetes / paquete.js

if(Meteor.isClient) {
   myPackageFunction();
}

La consola registrará el texto de nuestro paquete.

Para comprender mejor cómo package.js se puede configurar el archivo, usaremos el ejemplo de la documentación oficial de Meteor.

Este es un archivo de ejemplo ...

/* Information about this package */
Package.describe({
   
   // Short two-sentence summary.
   summary: "What this does",

   // Version number.
   version: "1.0.0",

   // Optional.  Default is package directory name.
   name: "username:package-name",

   // Optional github URL to your source repository.
   git: "https://github.com/something/something.git",
});

/* This defines your actual package */
Package.onUse(function (api) {

   // If no version is specified for an 'api.use' dependency, use the
   // one defined in Meteor 0.9.0.
   api.versionsFrom('0.9.0');

   // Use Underscore package, but only on the server.
   // Version not specified, so it will be as of Meteor 0.9.0.
   api.use('underscore', 'server');

   // Use iron:router package, version 1.0.0 or newer.
   api.use('iron:[email protected]');

   // Give users of this package access to the Templating package.
   api.imply('templating')

   // Export the object 'Email' to packages or apps that use this package.
   api.export('Email', 'server');

   // Specify the source code for the package.
   api.addFiles('email.js', 'server');
});

/* This defines the tests for the package */
Package.onTest(function (api) {

   // Sets up a dependency on this package
   api.use('username:package-name');

   // Allows you to use the 'tinytest' framework
   api.use('[email protected]');

   // Specify the source code for the package tests
   api.addFiles('email_tests.js', 'server');
});

/* This lets you use npm packages in your package*/
Npm.depends({
   simplesmtp: "0.3.10",
   "stream-buffers": "0.2.5"
});