Tools
Tools: Le package.json
2026-01-30
0 views
admin
Le manifeste ## L'origine ## Les attributs ## Focus sur les dépendances ## Conclusion Le package.json est le fichier manifeste d'un projet JavaScript. Il raconte ce que ton projet est, ce dont il dépend et comment il se construit ou se lance. Au debut de Node.js, chaque module devait declarer son nom, sa version et ses dépendances pour etre installé correctement. Le package.json s'est imposé avec npm comme format standard pour decrire un package. C'etait un moyen simple et lisible de partager un module et de permettre a npm de résoudre les dépendances. Il n'y a pas que npm qui utilise le package.json : yarn, pnpm et d'autres gestionnaires de paquets s'appuient aussi dessus avec une façon différente de gérer les dépendances et surtout, le moyen de les résoudre. Dans les grandes lignes, on trouve plusieurs categories de champs dans le package.json : Dans la partie scripts, j'ai récemment découvert les commandes prebuild et postbuild qui vont automatiquement se lancer respectivement avant et après la commande build Pour aller plus loin, la documentation officielle du package.json. Encore une fois c'est un mémo qui peut paraitre trivial mais qui me parait utile, surtout quand je souhaite creuser un sujet et laisser une trace pour plus tard. Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse CODE_BLOCK:
{ "name": "mon-projet", // identite du package "version": "1.0.0", // version publiee "description": "Mon app de demo", "license": "MIT", // license du package "author": "necraidan", "scripts": { "dev": "vite", // commande de dev "build": "vite build", // build de production "test": "vitest" // tests }, "dependencies": { "react": "^18.3.0" // deps runtime }, "devDependencies": { "vite": "^5.4.0", // outils de dev "vitest": "^2.1.0" }, "peerDependencies": { "react": ">=18" // compatibilité attendue }, "optionalDependencies": { "fsevents": "^2.3.3" // optionnel (ex: macOS) }, "engines": { "node": ">=20" // version node ciblee }, "eslintConfig": { "extends": ["eslint:recommended"] // champs custom }
} Enter fullscreen mode Exit fullscreen mode CODE_BLOCK:
{ "name": "mon-projet", // identite du package "version": "1.0.0", // version publiee "description": "Mon app de demo", "license": "MIT", // license du package "author": "necraidan", "scripts": { "dev": "vite", // commande de dev "build": "vite build", // build de production "test": "vitest" // tests }, "dependencies": { "react": "^18.3.0" // deps runtime }, "devDependencies": { "vite": "^5.4.0", // outils de dev "vitest": "^2.1.0" }, "peerDependencies": { "react": ">=18" // compatibilité attendue }, "optionalDependencies": { "fsevents": "^2.3.3" // optionnel (ex: macOS) }, "engines": { "node": ">=20" // version node ciblee }, "eslintConfig": { "extends": ["eslint:recommended"] // champs custom }
} CODE_BLOCK:
{ "name": "mon-projet", // identite du package "version": "1.0.0", // version publiee "description": "Mon app de demo", "license": "MIT", // license du package "author": "necraidan", "scripts": { "dev": "vite", // commande de dev "build": "vite build", // build de production "test": "vitest" // tests }, "dependencies": { "react": "^18.3.0" // deps runtime }, "devDependencies": { "vite": "^5.4.0", // outils de dev "vitest": "^2.1.0" }, "peerDependencies": { "react": ">=18" // compatibilité attendue }, "optionalDependencies": { "fsevents": "^2.3.3" // optionnel (ex: macOS) }, "engines": { "node": ">=20" // version node ciblee }, "eslintConfig": { "extends": ["eslint:recommended"] // champs custom }
} - Identité : name, version, description, license, author.
- Dépendances : dependencies, devDependencies, peerDependencies, optionalDependencies.
- Scripts : commandes standardisees (npm run dev, build, test, etc.) ou non.
- Compatibilitée : engines, os, cpu pour cadrer l'environnement.
- Publication : ce qui est inclus dans le package, la version, les fichiers d'entrée.
- Customisation: des champs specifiques aux outils (babel, eslint, jest, etc.) ou tout simplement que vous souhaitez utiliser. - dependencies : indispensables au fonctionnement de l’app en production.
- devDependencies : utiles en développement (tests, lint, build), pas nécessaires en prod.
- peerDependencies : indiquent la compatibilité attendue avec un autre package sans l’embarquer soi‑même (ex. une lib React qui attend React installé).
- optionalDependencies : optionnelles ; si l’installation échoue, npm continue quand même. À toi de gérer l’absence au runtime.
- bundleDependencies : dépendances embarquées lors de la publication du package.
how-totutorialguidedev.toainodejavascript