YARN vs NPM: Escolhendo o Seu Gerenciador de Pacotes
Embora hoje em dia não faça muita diferença qual desses gerenciadores de pacotes você decida usar, uma vez que ambos entregam basicamente a mesma velocidade na instalação de pacotes e o mesmo nível de confiança, ainda existem pessoas que assim como eu gostam de usar um ou outro.
Aqui irei demonstrar uma forma de inicializar seu projeto utilizando o YARN. O motivo para isso é que esse recurso não é bem documentado pelo CDK (pelo menos eu não encontrei uma doc) por mais que seja um recurso já existente.
Utilizando NPM
Se você é do time NPM, ao iniciar sua aplicação com cdk init app --language=typescript
já estará por padrão utilizando o NPM, por ser o gerenciado de pacores nativo do Node.js.
Utilizando YARN
Para utilização do YARN como gerenciador de pacotes você pode estar usando o seguinte comando.
cdk init app --language=typescript --package-manager=yarn --generateOnly
Junto com a implementação do YARN no projeto do CDK, também foi implementado o generateOnly
, que é basicamente uma flag que permite a inicialização do projeto sem instalar os pacotes, uma coisa que você pode fazer por conta própria e que evita aquele longo tempo de espera na inicialização do repositório.
Vale lembrar que você precisa ter o CDK instalado na sua maquina e que a versão do seu binário será utilizada para gerar o projeto.
Uma vez que o projeto for gerado você todas as versões de dependências são gerenciadas pelo YARN.
Infelizmente o README do projeto não é atualizado para utilização com o YARN, então você deve fazer isso por conta própria, assim como os scrips do package.json
.
Aqui esta um exemplo de script que você pode utilizar.
{
"scripts": {
"build": "tsc",
"compile": "tsc --pretty",
"deploy": "cdk deploy",
"diff": "cdk diff",
"synth": "cdk synth",
"lint": "eslint src/*.ts & eslint src/**/*.ts",
"lint:fix": "eslint --fix src",
"prettier": "prettier --check src/**/*.ts",
"prettier:fix": "prettier --write src/**/*.ts",
"test": "jest",
"test:fix": "jest --updateSnapshot"
}
}
Além disso vale a pena adicionar um aviso para que o npm não seja utilizado caso esteja trabalhando em time.
{
"engines": {
"npm": "use-yarn",
}
}
Dessa forma você você pode estar usando YARN para trabalhar com seu projeto CDK.