Contexto
Nos últimos dias, eu estava brincando com o framework do meteoro e estava tentando instalar o editor aloha . Eu percebi que já havia um pacote atmosfera chamado aloha-meteoro que me permitiu instalá-lo com meteorito: mrt add aloha-meteor
.
O problema é que por algum motivo nenhum arquivo de tradução foi incluído neste pacote, e eu queria usá-lo em pt-BR. Então eu bifurquei o pacote e comecei a fazer algumas modificações, mas logo fiquei paralisado porque precisei usar a API do pacote do meteoro (que atualmente é privada) e não consegui encontrar sua documentação em lugar nenhum. Então, decidi documentar os métodos de API do pacote de meteoros para referência futura.
API de pacote
A maior parte desta documentação foi reunida olhando para packages.js de meteoro e outros pacotes.
Em primeiro lugar, você precisa de um arquivo chamado ‘package.js’ dentro do seu pacote. Os métodos possíveis que você pode usar são: (por exemplo)
Package.describe({
summary: "Package Description. Will appear with meteor list",
internal: false, // optional, will not show with meteor list if false
environments: ['client', 'server'] // optional. Supposedly specifies environments to load package, but i did not find any package that specifies this key.
});
Package.on_use(function (api, where){
// calls another package's on_use method
api.use('package name', 'client')
api.use('package name', ['client', 'server'])
api.use('package name', where || 'client')
// add file(s) with specified environment(s)
api.add_files('file_name.js', 'client');
api.add_files('file_name.js', ['client', 'server']);
api.add_files(['file_name.css', 'file_name.html'], 'client');
});
Package.on_test(function (api, where){
// same api methods as Package.on_use's callback function parameter
});
// used to describe a new extension file type
Package.register_extension("coffee", function (bundle, source_path, serve_path, where) {
// look at https://github.com/meteor/meteor/blob/master/packages/coffeescript/package.js for example
});
Um dos problemas que enfrento ao tentar criar meu pacote aloha-editor é que, por padrão, ele carrega alguns de seus arquivos javascript de forma assíncrona e, portanto, espera que esses arquivos js existam como arquivos estáticos. No entanto, api.add_files
não adiciona arquivos js como estáticos, em vez disso, executa o conteúdo do arquivo. api.add_files
apenas adiciona arquivos como estáticos (o que seria o mesmo que colocá-los na pasta pública do seu aplicativo) se não houver um manipulador definido para o tipo de extensão do arquivo.