Module node.js et ncp – échec de la copie d’un fichier

J’utilise Node.js v6.3.1 et ncp v2.0.0

Je ne peux obtenir que ncp pour copier le contenu d’un répertoire, mais pas un seul fichier dans ce répertoire.

Voici le code qui copie récursivement le contenu d’un répertoire qui fonctionne:

var ncp = require("ncp").ncp; ncp("source/directory/", "destination/directory/", callback); 

… et voici le même code mais avec un fichier comme source:

 var ncp = require("ncp").ncp; ncp("source/directory/file.txt", "destination/directory/", callback); 

Tout ce que je peux penser, c’est que ncp a été spécialement conçu pour copier des répertoires de manière récursive, pas un seul fichier peut-être?

J’avais envisagé d’utiliser quelque chose comme les fonctions de stream de lecture / écriture de fileSystem décrites ici, mais pour des raisons de cohérence, j’espérais restr avec ncp.

Mettre à jour:

J’ai trouvé un autre paquet appelé node-fs-extra qui fait ce que je veux sans avoir besoin d’append des gestionnaires d’événements aux opérations, comme cela aurait été le cas avec la solution lecture / écriture fileSystem.

Voici le code qui fonctionne:

 var fsExtra = require("fs-extra"); fsExtra.copy("source/directory/file.txt", "destination/directory/file.txt", callback); 

Évidemment, cela rest incohérent, mais au moins un peu moins verbeux.

Ok j’ai compris ce que je faisais mal.

J’essayais de copier un fichier dans un répertoire, alors que j’avais besoin de copier et nommer le fichier dans un répertoire.

Voici donc mon code original qui ne fonctionne pas:

 var ncp = require("ncp"); ncp("source/directory/file.txt", "destination/directory/", callback); 

… et voici que le code fixe fonctionne, notez l’inclusion d’un nom de fichier dans le répertoire de destination:

 var ncp = require("ncp"); ncp("source/directory/file.txt", "destination/directory/file.txt", callback); 

Donc, il semble que ncp ne prend pas simplement le fichier tel quel, mais vous devez spécifier le nom du fichier à l’autre bout pour réussir la copie. J’imaginais que je supposais qu’il ne ferait que copier le fichier portant le même nom dans le répertoire de destination.

J’ai trouvé un autre paquet appelé node-fs-extra qui fait ce que je veux sans avoir besoin d’append des gestionnaires d’événements aux opérations, comme cela aurait été le cas avec la solution lecture / écriture fileSystem.

Voici le code qui fonctionne:

 var fsExtra = require("fs-extra"); fsExtra.copy("source/directory/file.txt", "destination/directory/file.txt", callback); 

Évidemment, cela rest incohérent, mais au moins un peu moins verbeux.