wandersonwhcr / node-config Goto Github PK
View Code? Open in Web Editor NEWA Simple Configuration Loader for Node.js
License: MIT License
A Simple Configuration Loader for Node.js
License: MIT License
Criar um método que possibilite o carregamento das configurações de forma síncrona, sem Promises. Para tanto, precisa-se isolar o processamento de nomes de arquivos e mesclagem, para que este seja utilizado nos formatos síncrono e assíncrono.
Após, adicionar documentação sobre sua utilização no arquivo README.md
.
Na linha abaixo não está com o tipo de retorno conforme os padrões de documentação do JavaScript.
Line 116 in 049d172
Sabe-se que, se dois padrões podem capturar o mesmo arquivo, a leitura deste é feita mais de uma vez. Para tanto, deve-se otimizar a leitura de arquivos, carregando cada elemento somente uma vez. Esta ideia surgiu nos comentários da issue #25.
Durante o desenvolvimento da issue #6, não se incluiu uma documentação no arquivo README.md
. Precisa-se adicionar uma entrada naquele local, apresentando um exemplo de utilização.
Após a finalização da issue #8, deve-se verificar se as dependências do projeto estão definidas para abranger o máximo de projetos.
Por exemplo, o código-fonte atual funciona corretamente em engines
mais antigas, como o Node.js 4? Ou, ainda, existe realmente a necessidade de utilizar versões ^1.2.0
do pacote merge
?
O código responsável pela ordenação de arquivos conforme prioridade está utilizando o atributo priority
que não foi configurado, sendo manipulado como um NaN
. Ainda não descobri como posso fazer um teste para simular este problema.
Ainda, parece que arquivos estão sendo capturados múltiplas vezes. Não sei como simular isto, ainda.
No mesmo método fetchFilenames
, utiliza-se duas funções com o mesmo comportamento no contexto: substr
e substring
. Transformar para o mais verboso, substring
.
Sincronizar as keywords do package.json
com àquelas definidas neste repositório.
Com a alteração aplicada na issue #20, nota-se que estamos com métodos anteriormente "privados" (prefixo _
) acessíveis de forma pública. Deve-se alterar a visibilidade destes métodos.
Esta issue deve ser integrada em versão menor.
A dependência de um objeto do tipo fs
é indireta, ou seja, o pacote funciona corretamente caso não seja informado no construtor o referente parâmetro.
Portanto, deve-se remover esta dependência direta, incrementando uma versão menor, como, por exemplo, de v1.0.2
para v1.1.0
. Isto é necessário porque estamos alterando a assinatura de um método.
Atualizar todos os testes que usufruem desta carga no construtor, utilizando o método setFs
para configurar o objeto em questão.
Deve-se limitar a versão do Node.js para a versão estável atual.
Adicionar badges de versão no NPM e de situação no Travis CI no arquivo README.md
.
Necessita-se aplicar um padrão de formatação de código-fonte, como, por exemplo, o Standard.
Quando chamado o método Config::setFs
com parâmetro undefined
, configura-se o fs
do próprio Node.js. Isto faz com que sempre exista um valor configurado no atributo Config::_fs
.
Deve-se, assim, apresentar o fs
padrão no método Config::getFs
somente se o atributo Config::_fs
seja igual a undefined
.
Deve-se permitir a leitura de diretórios fora do diretório atual, como o exemplo abaixo:
const Config = require("@wandersonwhcr/config").Config;
var config = new Config([
"../superdirectory/*.json",
"/some/path/from/root/*.json",
"~/.config/*.json"
]);
Precisamos desenvolver uma classe que seja responsável pelo carregamento de configurações do sistema.
Esta classe deve efetuar uma execução assíncrona, recebendo como parâmetros no construtor os padrões que devem ser utilizados na captura de arquivos. Os arquivos devem ser carregados em ordem alfabética. O seu conteúdo deve respeitar a sintaxe JSON e estes devem ser mesclados.
Os arquivos de teste podem ser omitidos através de um arquivo .npmignore
.
https://docs.npmjs.com/misc/developers#keeping-files-out-of-your-package
Adicionar o arquivo LICENSE
no diretório raiz do código-fonte.
Utiliza-se MIT neste projeto.
Criar o index.js
do módulo, apresentando a classe de configurações.
Implementar o package.json
para publicação no NPM.
A prioridade de carregamento e mesclagem dos arquivos de configuração deve respeitar, primeiramente, a ordem dos elementos no array de pattern
e, posteriormente, a ordem alfabética.
Creio que hoje utiliza-se somente a ordem alfabética dos arquivos.
Padrões que iniciam com ./*
não estão sendo corretamente utilizados. Deve-se possibilitar que arquivos consigam ser capturados com este prefixo, bem como no formato sem ele.
Explicar o porquê deste software ter sido criado no arquivo README.md
, sabendo-se que existem muitos outros pacotes que também manipulam configurações.
A badge do Travis CI criada no ShieldsIO não está definida para utilizar o branch master
.
Precisamos instalar o mocha
como dependência de desenvolvimento para iniciar os testes unitários. Criar um teste unitário simples para mostrar a funcionalidade.
Configurar o Travis CI para o projeto, efetuando testes unitários em outras engines
do próprio Node.js.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.