Cheatsheet npm / yarn
Gestores de pacotes para JavaScript e Node.js
npm / yarn
23
cards encontrados
Categorias:
Versões:
npm
Iniciar projeto
npm init # interativo
npm init -y # aceitar defaults
npm init @scope/app # template
Criar package.json.
Instalar pacotes
npm install # tudo
npm install lodash # dependência
npm i -D jest # devDependency
npm i -g typescript # global
npm i lodash@4.17.21 # versão fixa
Adicionar dependências.
Remover e atualizar
npm uninstall lodash
npm update # atualizar tudo
npm outdated # ver desatualizados
npm audit # vulnerabilidades
npm audit fix # corrigir auto
Manter dependências.
Info e list
npm list # árvore de deps
npm list --depth=0 # só diretas
npm info lodash # info do pacote
npm view lodash versions
Explorar dependências.
Yarn
Comandos básicos
yarn init # criar projeto
yarn # instalar tudo
yarn add lodash # dependência
yarn add -D jest # devDependency
yarn remove lodash # remover
Yarn clássico (v1).
Yarn Berry (v2+)
corepack enable
yarn set version stable
yarn install # PnP por defeito
yarn dlx create-react-app my-app
yarn workspaces foreach run build
Yarn moderno.
Info e upgrade
yarn list # dependências
yarn outdated # desatualizados
yarn upgrade # atualizar
yarn info lodash # detalhes
yarn why lodash # quem depende
Gerir pacotes.
Cache e limpeza
yarn cache dir # ver cache
yarn cache clean # limpar cache
yarn install --force # reinstalar
node_modules/.yarn-state.yml
Cache do yarn.
Scripts
Definir scripts
// package.json
"scripts": {
"dev": "vite",
"build": "vite build",
"test": "jest --coverage",
"lint": "eslint src/"
}
Scripts no package.json.
Executar scripts
npm run dev
npm run build
npm test # atalho (sem run)
npm start # atalho
yarn dev # yarn (sem run)
Correr scripts.
Pre/Post hooks
"scripts": {
"prebuild": "npm run clean",
"build": "webpack",
"postbuild": "npm run copy-assets"
}
// pre/post executam automaticamenteHooks de ciclo de vida.
Passar argumentos
npm run test -- --watch
npm run build -- --mode production
yarn test --watch # yarn não precisa --
// No script: usa process.argv
Argumentos para scripts.
Dependências
Versões (semver)
"lodash": "4.17.21" # exata
"lodash": "^4.17.0" # compat (minor)
"lodash": "~4.17.0" # patch only
"lodash": "*" # qualquer
"lodash": ">=4.0 <5.0"
Semantic versioning.
package-lock vs yarn.lock
package-lock.json (npm)
yarn.lock (yarn)
# SEMPRE commitar!
# Garante builds reproduzíveis
# npm ci → instala exato do lock
Ficheiros de lock.
npm ci vs npm install
npm ci # limpo, do lock (CI)
npm install # pode atualizar lock
# npm ci:
# • Remove node_modules
# • Instala exato do lock
# • Mais rápido em CI
Diferenças importantes.
Dependências opcionais
"optionalDependencies": {
"fsevents": "^2.3.0"
}
"peerDependencies": {
"react": ">=17.0.0"
}Tipos especiais de deps.
Publicação
Publicar pacote
npm login
npm publish
npm publish --access public
npm version patch # 1.0.0 → 1.0.1
npm version minor # 1.0.1 → 1.1.0
npm version major # 1.1.0 → 2.0.0
Publicar no npm registry.
Preparar pacote
// package.json
"name": "@scope/pacote",
"version": "1.0.0",
"main": "dist/index.js",
"files": ["dist/"],
"prepublishOnly": "npm run build"
Configurar para publicação.
Registry privado
npm publish --registry http://local:4873
// .npmrc
registry=https://registry.npmjs.org/
@scope:registry=http://privado:4873
//token=${NPM_TOKEN}
Usar registry privado.
Avançado
npx
npx create-react-app my-app
npx prettier --write .
npx http-server dist/
npx cowsay "Olá"
# Executa sem instalar globalmente
Executar pacotes temporários.
Workspaces (monorepo)
// package.json raiz
"workspaces": ["packages/*"]
npm run build --workspace=pkg-a
yarn workspaces foreach run build
yarn workspace pkg-a add lodash
Monorepo com workspaces.
Segurança
npm audit # verificar vulns
npm audit fix # corrigir auto
npm audit fix --force # breaking
yarn audit # yarn
npm config set audit-level high
Auditoria de segurança.
.npmrc e config
npm config list
npm config set save-exact true
npm config set prefix ~/.npm-global
// .npmrc do projeto:
save-exact=true
engine-strict=true
Configuração do npm.