Meteor - Package.js

In questo capitolo impareremo come creare il nostro pacchetto meteor.

Creazione di un pacchetto

Aggiungiamo una nuova cartella sul desktop, dove verrà creato il pacchetto. Useremo la finestra del prompt dei comandi.

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

Ora possiamo creare il pacchetto nella cartella che abbiamo creato sopra. Eseguire il seguente comando dal prompt dei comandi.Username è il nome utente di Meteor Developer e package-name è il nome del pacchetto.

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

Aggiunta di un pacchetto

Per poter aggiungere un pacchetto locale alla nostra app, dobbiamo impostare l'estensione ENVIRONMENT VARIABLEche dirà a Meteor di caricare il pacchetto dalla cartella locale. Fare clic con il pulsante destro del mouse sull'icona del computer e scegliereproperties/Advanced system settings/Environment Variables/NEW.

Variable Name dovrebbe essere PACKAGE_DIRS. Variable Valuedovrebbe essere il percorso della cartella che abbiamo creato. Nel nostro caso,C:\Users\username\Desktop\meteorApp\packages.

Non dimenticare di riavviare il file command prompt dopo aver aggiunto una nuova variabile d'ambiente.

Ora possiamo aggiungere il pacchetto alla nostra app eseguendo il codice seguente:

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

File del pacchetto

I seguenti quattro file si troveranno nel pacchetto che abbiamo creato.

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

Pacchetto di test (nome-pacchetto-test.js)

Meteor offre tinytestpacchetto per il test. Installiamolo prima utilizzando il seguente comando nella finestra del prompt dei comandi.

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

Se apriamo package-name-test.js, vedremo l'esempio di test predefinito. Useremo questo esempio per testare l'app. Nota: è sempre meglio scrivere i nostri test durante lo sviluppo di pacchetti meteor.

Per testare il pacchetto, eseguiamo questo codice nel prompt dei comandi.

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

Otterremo il seguente risultato.

File package.js

Questo è il file in cui possiamo scrivere il codice. Creiamo alcune semplici funzionalità per il nostro pacchetto. Il nostro pacchetto registrerà del testo nella console.

packages / package.js

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

file nome-pacchetto.js

Questo è il file in cui possiamo impostare alcune configurazioni del pacchetto. Ci torneremo più tardi, ma per ora dobbiamo esportaremyPackageFunctionquindi possiamo usarlo nella nostra app. Dobbiamo aggiungerlo all'internoPackage.onUsefunzione. Il file avrà un aspetto simile a questo.

pacchetti / nome-pacchetto.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');
});

Utilizzo di un pacchetto

Ora possiamo finalmente chiamare il file myPackageFunction() dal nostro meteorApp.js file.

packages / package.js

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

La console registrerà il testo dal nostro pacchetto.

Per capire meglio come il file package.js file può essere configurato, useremo l'esempio dalla documentazione ufficiale di Meteor.

Questo è un file di esempio ...

/* 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"
});