Cheatsheet npm / yarn
Gestores de pacotes para JavaScript e Node.js
npm / yarn
23
tarjetas encontradas
Categorías:
Versiones:
npm
Iniciar proyecto
npm init # interactivo
npm init -y # aceptar defaults
npm init @scope/app # template
Crear package.json.
Instalar paquetes
npm install # todo
npm install lodash # dependencia
npm i -D jest # devDependency
npm i -g typescript # global
npm i lodash@4.17.21 # versión fija
Añadir dependencias.
Eliminar y actualizar
npm uninstall lodash
npm update # actualizar todo
npm outdated # ver desactualizados
npm audit # vulnerabilidades
npm audit fix # corregir auto
Mantener dependencias.
Info y list
npm list # árbol de deps
npm list --depth=0 # solo directas
npm info lodash # info del paquete
npm view lodash versions
Explorar dependencias.
Yarn
Comandos básicos
yarn init # crear proyecto
yarn # instalar todo
yarn add lodash # dependencia
yarn add -D jest # devDependency
yarn remove lodash # eliminar
Yarn clásico (v1).
Yarn Berry (v2+)
corepack enable
yarn set version stable
yarn install # PnP por defecto
yarn dlx create-react-app my-app
yarn workspaces foreach run build
Yarn moderno.
Info y upgrade
yarn list # dependencias
yarn outdated # desactualizados
yarn upgrade # actualizar
yarn info lodash # detalles
yarn why lodash # quién depende
Gestionar paquetes.
Cache y limpieza
yarn cache dir # ver cache
yarn cache clean # limpiar cache
yarn install --force # reinstalar
node_modules/.yarn-state.yml
Cache de yarn.
Scripts
Definir scripts
// package.json
"scripts": {
"dev": "vite",
"build": "vite build",
"test": "jest --coverage",
"lint": "eslint src/"
}
Scripts en package.json.
Ejecutar scripts
npm run dev
npm run build
npm test # atajo (sin run)
npm start # atajo
yarn dev # yarn (sin run)
Correr scripts.
Hooks pre/post
"scripts": {
"prebuild": "npm run clean",
"build": "webpack",
"postbuild": "npm run copy-assets"
}
// pre/post se ejecutan automáticamenteHooks de ciclo de vida.
Pasar argumentos
npm run test -- --watch
npm run build -- --mode production
yarn test --watch # yarn no necesita --
// En el script: usa process.argv
Argumentos para scripts.
Dependências
Versiones (semver)
"lodash": "4.17.21" # exacta
"lodash": "^4.17.0" # compat (minor)
"lodash": "~4.17.0" # patch only
"lodash": "*" # cualquiera
"lodash": ">=4.0 <5.0"
Semantic versioning.
package-lock vs yarn.lock
package-lock.json (npm)
yarn.lock (yarn)
# ¡SIEMPRE commitear!
# Garantiza builds reproducibles
# npm ci → instala exacto del lock
Archivos de lock.
npm ci vs npm install
npm ci # limpio, del lock (CI)
npm install # puede actualizar lock
# npm ci:
# • Elimina node_modules
# • Instala exacto del lock
# • Más rápido en CI
Diferencias importantes.
Dependencias opcionales
"optionalDependencies": {
"fsevents": "^2.3.0"
}
"peerDependencies": {
"react": ">=17.0.0"
}Tipos especiales de deps.
Publicação
Publicar paquete
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 en el npm registry.
Preparar paquete
// package.json
"name": "@scope/package",
"version": "1.0.0",
"main": "dist/index.js",
"files": ["dist/"],
"prepublishOnly": "npm run build"
Configurar para publicación.
Registry privado
npm publish --registry http://local:4873
// .npmrc
registry=https://registry.npmjs.org/
@scope:registry=http://private: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 "Hola"
# Ejecuta sin instalar globalmente
Ejecutar paquetes temporales.
Workspaces (monorepo)
// package.json raíz
"workspaces": ["packages/*"]
npm run build --workspace=pkg-a
yarn workspaces foreach run build
yarn workspace pkg-a add lodash
Monorepo con workspaces.
Seguridad
npm audit # verificar vulns
npm audit fix # corregir auto
npm audit fix --force # breaking
yarn audit # yarn
npm config set audit-level high
Auditoría de seguridad.
.npmrc y config
npm config list
npm config set save-exact true
npm config set prefix ~/.npm-global
// .npmrc del proyecto:
save-exact=true
engine-strict=true
Configuración de npm.