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