DevTools

Cheatsheet npm / yarn

Gestores de pacotes para JavaScript e Node.js

Voltar às linguagens
npm / yarn
23 cards encontrados
Categorias:
Versões:

npm


4 cards
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


4 cards
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


4 cards
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 automaticamente

Hooks 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


4 cards
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


3 cards
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


4 cards
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.