Generador de package.json
Rellena el formulario y obtén un package.json limpio y válido mientras escribes. El nombre, la versión, los rangos de dependencias y el repositorio se comprueban según las reglas de npm, y puedes empezar con un ajuste predefinido o importar un archivo existente.
Última actualización:
package.json
Guarda el archivo en la raíz de tu proyecto y ejecuta npm install (o pnpm install / yarn) para crear el archivo de bloqueo.
Cómo usar Generador de package.json
- Elige un ajuste predefinido (opcional), como Biblioteca Node, API con Express o App con Vite + React, para rellenar valores sensatos.
- Rellena lo básico: nombre del paquete, versión, descripción, autor, licencia y tipo de módulo (CommonJS o módulos ES).
- Añade scripts con los botones rápidos o escribe tus propios pares de nombre y comando.
- Escribe las dependencias, una por línea, como
name@range, por ejemploexpress@^4.21.2. - Revisa el panel de validación, luego copia el JSON o descarga package.json y ejecuta
npm install.
Campos de package.json de un vistazo
| Campo | Qué hace | Ejemplo |
|---|---|---|
name | Nombre del paquete en npm y en import/require. En minúsculas, seguro para URL, máximo 214 caracteres. | "@acme/utils" |
version | Versión semántica MAJOR.MINOR.PATCH, con etiquetas opcionales de prelanzamiento y de compilación. | "2.1.0-beta.1" |
private | Si es true, npm publish se niega a publicar el paquete. | true |
type | "module" convierte los archivos .js en módulos ES; "commonjs" (el valor por defecto) mantiene require. | "module" |
main | Archivo de entrada que carga require('pkg') cuando no hay campo exports. | "./dist/index.js" |
exports | Mapa moderno de puntos de entrada. También oculta todos los archivos que no se exportan. | "./index.js" |
types | Archivo de declaraciones de TypeScript para la entrada principal. | "./dist/index.d.ts" |
bin | Comandos que se instalan en el PATH. El archivo necesita #!/usr/bin/env node como primera línea. | {"mycli": "./bin/cli.js"} |
files | Lista de archivos que se incluyen al publicar. package.json, README y LICENSE se incluyen siempre. | ["dist"] |
scripts | Comandos para npm run <name>. start y test también funcionan como npm start y npm test. | {"dev": "vite"} |
engines | Versiones de Node.js compatibles. npm avisa (o falla con engine-strict) con las demás. | {"node": ">=18"} |
packageManager | Versión exacta del gestor de paquetes, usada por Corepack. | "[email protected]" |
Guía rápida de rangos de versión
| Rango | Coincide con |
|---|---|
4.21.2 | Exactamente 4.21.2 |
^4.21.2 | >=4.21.2 y <5.0.0 (actualizaciones minor y patch) |
^0.3.1 | >=0.3.1 y <0.4.0 (en 0.x el acento circunflejo solo permite actualizaciones patch) |
~4.21.2 | >=4.21.2 y <4.22.0 (solo actualizaciones patch) |
4.x o 4 | Cualquier versión 4.y.z |
>=18 <23 | Ambas condiciones (AND) |
^16 || ^18 | Cualquiera de los rangos (OR) |
1.2.0 - 1.4.5 | Rango inclusivo con guion |
* o latest | Cualquier versión / la versión etiquetada latest (no reproducible, evítalo en apps) |
workspace:*, file:../lib, github:user/repo | Workspace de monorepo, carpeta local o dependencia de Git |
Consejos para un package.json limpio
- Las aplicaciones y los sitios web deberían usar
"private": truey versionar el archivo de bloqueo para que cada instalación obtenga versiones idénticas. - Las bibliotecas deberían mantener pocas
dependenciesde ejecución, poner las herramientas endevDependenciesy usarpeerDependenciespara los frameworks que ya tiene la app anfitriona, como React. - Usa
files(o un.npmignore) para que no se publiquen pruebas, fuentes ni configuraciones. Comprueba qué se incluye connpm pack --dry-run. - Los scripts del ciclo de vida se ejecutan automáticamente:
preparese ejecuta después denpm instally antes de publicar,prepublishOnlysolo antes denpm publish, ypre<name>/post<name>envuelven cualquier script. - Sube versiones con
npm version patch|minor|major, que además crea una etiqueta de Git.
Preguntas frecuentes
¿Qué campos necesita un package.json?
Solo name y version son obligatorios si publicas el paquete en npm. En una aplicación privada no hay nada estrictamente obligatorio, pero name, version, private: true, scripts y dependencies son lo habitual. Description, license, repository y author ayudan a otros a entender el proyecto.
¿Cuáles son las reglas para el nombre de un paquete npm?
El nombre debe tener 214 caracteres o menos incluido el ámbito, estar en minúsculas, ser seguro para URL (letras, dígitos, -, ., _ y ~), no empezar con punto ni guion bajo y no contener espacios. Los nombres con ámbito tienen la forma @scope/name. No se permiten nombres de módulos del núcleo de Node como http o fs.
¿Qué hace "type": "module"?
Indica a Node.js que trate los archivos .js del paquete como módulos ES, así que usas import y export en lugar de require y module.exports. Sin él, o con "type": "commonjs", los archivos .js son CommonJS. Siempre puedes forzar un formato con la extensión .mjs o .cjs.
¿Qué diferencia hay entre ^ y ~ en las versiones?
Un rango con acento circunflejo como ^4.21.2 permite cualquier versión posterior con el mismo número major (4.x.x, al menos 4.21.2). Un rango con tilde como ~4.21.2 solo permite actualizaciones patch (4.21.x). Una versión exacta como 4.21.2 fija una sola versión. En las versiones 0.x el acento circunflejo es más estricto y solo permite actualizaciones patch dentro de la misma versión minor.
¿dependencies, devDependencies o peerDependencies?
Las dependencies se necesitan en tiempo de ejecución y se instalan para cualquiera que instale tu paquete. Las devDependencies solo se necesitan al desarrollar o compilar (ejecutores de pruebas, linters, empaquetadores). Las peerDependencies declaran un paquete que debe aportar el proyecto anfitrión, como react en una biblioteca de componentes React.
¿Por qué usar "private": true?
Evita que npm publish publique el paquete por accidente. Úsalo en aplicaciones, sitios web y raíces de monorepos que no deben estar en el registro de npm.
¿Se suben mis datos?
No. El package.json se crea y se valida por completo en tu navegador. El último estado del formulario solo se guarda en el almacenamiento local de este navegador.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.