Meteor - Package.js

Neste capítulo, aprenderemos como criar nosso próprio pacote de meteoros.

Criando um Pacote

Vamos adicionar uma nova pasta na área de trabalho, onde o pacote será criado. Usaremos a janela do prompt de comando.

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

Agora, podemos criar o pacote na pasta que criamos acima. Execute o seguinte comando no prompt de comando.Username é o nome de usuário do Desenvolvedor Meteor e package-name é o nome do pacote.

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

Adicionando um Pacote

Para poder adicionar um pacote local ao nosso aplicativo, precisamos definir o ENVIRONMENT VARIABLEisso dirá ao Meteor para carregar o pacote da pasta local. Clique com o botão direito no ícone do computador e escolhaproperties/Advanced system settings/Environment Variables/NEW.

Variable Name deveria estar PACKAGE_DIRS. Variable Valuedeve ser o caminho para a pasta que criamos. No nosso caso,C:\Users\username\Desktop\meteorApp\packages.

Não se esqueça de reiniciar o command prompt após adicionar uma nova variável de ambiente.

Agora podemos adicionar o pacote ao nosso aplicativo executando o seguinte código -

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

Arquivos de pacote

Os quatro arquivos a seguir serão encontrados no pacote que criamos.

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

Pacote de teste (package-name-test.js)

Ofertas Meteor tinytestpacote para teste. Vamos instalá-lo primeiro usando o seguinte comando na janela do prompt de comando.

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

Se abrirmos package-name-test.js, veremos o exemplo de teste padrão. Usaremos este exemplo para testar o aplicativo. Nota: É sempre melhor escrever nossos próprios testes ao desenvolver pacotes de meteoros.

Para testar o pacote, vamos executar este código no prompt de comando.

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

Obteremos o seguinte resultado.

Arquivo package.js

Este é o arquivo onde podemos escrever o código. Vamos criar algumas funcionalidades simples para nosso pacote. Nosso pacote irá registrar algum texto no console.

packages / package.js

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

Arquivo package-name.js

Este é o arquivo onde podemos definir algumas configurações de pacote. Voltaremos a ele mais tarde, mas por enquanto precisamos exportarmyPackageFunctionpara que possamos usá-lo em nosso aplicativo. Precisamos adicionar isso dentroPackage.onUsefunção. O arquivo será parecido com isto.

pacotes / nome-do-pacote.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 um Pacote

Agora podemos finalmente chamar o myPackageFunction() de nosso meteorApp.js Arquivo.

packages / package.js

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

O console irá registrar o texto do nosso pacote.

Para entender melhor como o package.js arquivo pode ser configurado, usaremos o exemplo da documentação oficial do Meteor.

Este é um arquivo de exemplo ...

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