Projet

Général

Profil

guide_utilisation.md

Guide utilisation NPM - source - William Petit, 10/07/2017 11:24

Télécharger (5,49 ko)

 
1
# RFC: Registre NPM EOLE - Guide d'utilisation
2

    
3
## Rappel: les commandes de base du client NPM
4

    
5
Toutes ces commandes sont à exécuter à la racine du projet
6

    
7
### Créer le manifeste NPM: `npm init`
8

    
9
**Exemple**
10
```shell
11
my-project$ npm init
12

    
13
This utility will walk you through creating a package.json file.
14
It only covers the most common items, and tries to guess sensible defaults.
15

    
16
See `npm help json` for definitive documentation on these fields
17
and exactly what they do.
18

    
19
Use `npm install <pkg> --save` afterwards to install a package and
20
save it as a dependency in the package.json file.
21

    
22
Press ^C at any time to quit.
23
name: (my-project) my-project
24
version: (1.0.0) 0.0.0
25
description: Mon projet de développement
26
entry point: (index.js)
27
test command:
28
git repository: ssh://git@dev-eole.ac-dijon.fr/...
29
keywords: tag1, tag2
30
author: Équipe EOLE <eole@ac-dijon.fr>
31
license: (ISC) CECILL-2.0
32
About to write to /path/to/my-project/package.json:
33

    
34
{
35
  "name": "my-project",
36
  "version": "0.0.0",
37
  "description": "Mon projet de développement",
38
  "main": "index.js",
39
  "directories": {
40
    "test": "test"
41
  },
42
  "dependencies": {},
43
  "devDependencies": {},
44
  "scripts": {
45
    "test": "echo \"Error: no test specified\" && exit 1"
46
  },
47
  "repository": {
48
    "type": "git",
49
    "url": "ssh://git@dev-eole.ac-dijon.fr/..."
50
  },
51
  "keywords": [
52
    "tag1",
53
    "tag2"
54
  ],
55
  "author": "Équipe EOLE <eole@ac-dijon.fr>",
56
  "license": "CECILL-2.0"
57
}
58

    
59

    
60
Is this ok? (yes) yes
61
```
62

    
63
### Chercher un paquet sur le registre: `npm search <nom_paquet>`
64

    
65
**Exemple**
66
```shell
67
my-project$ npm search jquery
68
npm WARN notice update to the newest npm client for improved search results: npmjs.com/get-npm
69
NAME                          DESCRIPTION                                                  AUTHOR               DATE       VERSION     KEYWORDS
70
@mizchi/jquery-ui             A curated set of user interface interactions, effects,…      =mizchi              2016-06-09 1.11.4              
71
blueimp-file-upload           File Upload widget with multiple file selection, drag&drop…  =blueimp             2017-03-28 9.18.0              
72
cheerio                       Tiny, fast, and elegant implementation of core jQuery…       =mattmueller…        2017-07-02 1.0.0-rc.2          
73
conventional-changelog-jquery conventional-changelog jquery preset                         =bcoe =stevemao…     2016-04-17 1.1.1               
74
cropper                       A simple jQuery image cropping plugin.                       =fengyuanchen        2017-07-07 3.0.0-rc.3          
75
eslint-config-jquery          jQuery eslint config                                         =markelog            2017-03-11 1.0.1               
76
extend                        Port of jQuery.extend for node.js and the browser            =justmoon =ljharb    2017-04-28 3.0.1               
77
gmap3                         jQuery plugin to generate Google Maps                        =jbdemonte           2016-12-03 7.2.0               
78
intl-tel-input                A jQuery plugin for entering international telephone numbers =jackocnr            2017-07-01 11.1.0              
79
jqtree                        Tree widget for jQuery                                       =marcobraak          2017-06-05 1.4.1               
80
jquery                        JavaScript library for DOM operations                        =dmethvin =mgol…     2017-03-20 3.2.1               
81
jQuery                        jQuery: The Write Less, Do More, JavaScript Library…         =coolaj86 =treasonx… 2012-07-01 1.7.4
82
```
83

    
84
## Configuration des projets de développement
85

    
86
Afin que les projets EOLE utilisent le registre NPM local, les développeurs doivent ajouter à la racine du répertoire racine des projets un fichier `.npmrc` contenant:
87

    
88
```ini
89
registry=http://<hote_registre_eole>:<port>/
90
```
91

    
92
Ce fichier devrait être ajouté dans l'historisation Git.
93

    
94
## Partage des composants via le registre
95

    
96
1. S'identifier sur le registre NPM local
97

    
98
  ```shell
99
  my-project$ npm login
100
  Username: <login>
101
  Password: <password>
102
  Email: (this IS public) <email>
103
  Logged in as wpetit on http://<hote_registre_eole>:<port>/.
104
  ```
105
2. Publier votre nouvelle version de votre module
106
  ```shell
107
  my-project$ npm publish
108
  + my-project@<version>
109
  ```
110

    
111
> **Gestion des versions**
112
> NPM utilise le modèle [semantic versioning](http://semver.org/) pour la publication des modules. Il est impossible d'écraser une version déjà existantes. Seule la montée de version est autorisées.
113

    
114

    
115
## Politique de gestion des dépendances dans les projets
116

    
117
Par défaut, lors d'une installation d'un nouveau module le client NPM tend à suivre SemVer de manière aveugle. Il part du principe qu'un changement de version mineure d'une dépendance ne devrait pas mettre en péril la stabilité du projet. Dans les faits, cette présomption n'est pas toujours vérifiée.
118

    
119
Afin d'éviter tout problème lors de la création/publication des paquets, l'équipe doit "fixer" l'état des dépendances.
120

    
121
Pour ce faire, le client NPM met à disposition la commande `npm shrinkwrap` qui permet de générer un manifeste contenant les numéros de version exacts des dépendances installées (et donc vérifiées par le développeur). Si le client détecte la présence de ce manifeste lors d'une installation (via `npm install`), il fera le nécessaire pour récupérer les versions exactes des dépendances telles que décrites par le manifest
122

    
123
**Exemple**
124
```shell
125
my-project$ npm shrinkwrap
126
wrote npm-shrinkwrap.json
127
```
128
Le fichier `npm-shrinkwrap.json` devrait être ajouté à l'historique Git du projet.