// Lo que hace is-string internamente
const toString = Object.prototype.toString;
module.exports = function isString(value) { if (typeof value === 'string') return true; if (typeof value !== 'object' || value === null) return false; return toString.call(value) === '[object String]';
};
// Lo que hace is-string internamente
const toString = Object.prototype.toString;
module.exports = function isString(value) { if (typeof value === 'string') return true; if (typeof value !== 'object' || value === null) return false; return toString.call(value) === '[object String]';
};
// Lo que hace is-string internamente
const toString = Object.prototype.toString;
module.exports = function isString(value) { if (typeof value === 'string') return true; if (typeof value !== 'object' || value === null) return false; return toString.call(value) === '[object String]';
};
// En código 2026 normal
const esTexto = (valor) => typeof valor === 'string';
// En código 2026 normal
const esTexto = (valor) => typeof valor === 'string';
// En código 2026 normal
const esTexto = (valor) => typeof valor === 'string';
const shebangRegex = /^#!(.*)/;
export default shebangRegex;
const shebangRegex = /^#!(.*)/;
export default shebangRegex;
const shebangRegex = /^#!(.*)/;
export default shebangRegex;
graph LR; A[Tu app] --> B[framework]; B --> C[build-tools]; C --> D[is-string]; C --> E[arrify]; C --> F[slash]; C --> G[shebang-regex]; D --> H[toString-utils]; E --> I[array-helpers];
graph LR; A[Tu app] --> B[framework]; B --> C[build-tools]; C --> D[is-string]; C --> E[arrify]; C --> F[slash]; C --> G[shebang-regex]; D --> H[toString-utils]; E --> I[array-helpers];
graph LR; A[Tu app] --> B[framework]; B --> C[build-tools]; C --> D[is-string]; C --> E[arrify]; C --> F[slash]; C --> G[shebang-regex]; D --> H[toString-utils]; E --> I[array-helpers];
# Windows (PowerShell), macOS o Linux
npm install -g depcheck
cd tu-proyecto
depcheck
# Windows (PowerShell), macOS o Linux
npm install -g depcheck
cd tu-proyecto
depcheck
# Windows (PowerShell), macOS o Linux
npm install -g depcheck
cd tu-proyecto
depcheck
# Todas las plataformas
npm install -g npm-check
npm-check -u
# Todas las plataformas
npm install -g npm-check
npm-check -u
# Todas las plataformas
npm install -g npm-check
npm-check -u - Librerías de bajo nivel que forman parte del runtime mismo (el propio Node).
- Contextos multi-tenant donde corrés código no confiable en el mismo proceso.
- Sandboxing real con vm.Context o realms separados. - is-string → typeof x === 'string'
- hasown → Object.hasOwn(obj, key) (Node 16.9+)
- array-includes → arr.includes(value)
- object.assign → Object.assign u operador spread {...a, ...b}
- lodash.get → optional chaining obj?.a?.b?.c
- lodash.debounce → mantenerlo si ya lo usás; si no, 10 líneas propias alcanzan
- moment → Intl.DateTimeFormat, date-fns o dayjs - Bundles más chicos y carga más rápida para el usuario final.
- Instalaciones de npm más rápidas en CI/CD.
- Menor superficie de ataque en la supply chain.
- Mejor comprensión de las dependencias reales del proyecto.
- Mejor puntaje en Core Web Vitals y SEO. - Riesgo de romper cosas si eliminás paquetes que alguna dependencia transitoria realmente usa.
- Tiempo de auditoría que no se traduce en features nuevas.
- Algunas herramientas legacy fallan si removés polyfills que les daban compatibilidad. - The Three Pillars of JavaScript Bloat (James Garbutt) — artículo original en inglés que inspiró este análisis.
- MDN Web Docs: JavaScript — referencia oficial de métodos y APIs nativas modernas.
- Node.js — documentación oficial del runtime y sus features nativas por versión.
- npm Registry — registro oficial para verificar peso, dependencias y mantenimiento de paquetes.