2016-06-29 10 views
1

Ich versuche, einen Build-Prozess, Art und Weise zu machen, und es scheint wie Schluck-chown gibt mir nicht die richtigen Ergebnisse. Dieseschluck chown ändert nicht Besitzer

ist, was ich laufen:

gulp.task('clientDeploy', function() { 
    return gulp.src('client/dist/**/*') 
     .pipe(chown('rf', 'rfids')) 
     .pipe(gulp.dest('/var/www/html/dashboard')); 
}); 

Das schluck Skript als root läuft, offensichtlich.

Das Ergebnis ist dieses:

drwxr-xr-x 2 root root 4.0K Jun 29 12:57 css/ 
drwxr-xr-x 2 root root 4.0K Jun 29 12:57 fonts/ 
drwxr-xr-x 2 root root 4.0K Jun 29 12:57 icons/ 
drwxr-xr-x 3 root root 4.0K Jun 29 12:57 images/ 
drwxr-xr-x 2 root root 4.0K Jun 29 12:57 js/ 
-rw-rw-r-- 1 root root 8.3K Jun 29 13:15 events-panel.html 
-rw-r--r-- 1 root root 20K Jun 29 13:15 index.html 
-rw-rw-r-- 1 root root 8.2K Jun 29 13:15 main-panel.html 

ich here auf GitHub gelesen habe, dass das Problem mit gulp.dest sein könnte(), die nicht den Metadaten der Datei liest und verwendet die Benutzer, läuft die Befehl.

Hat jemand schon mal darüber gestolpert und es gelöst?

+0

führen Sie Schluck mit Sudo oder als root? – YOU

+0

Mit Sudo, es ist ein Teil eines größeren Build-System für den gesamten Server – Finkel

+0

kann chun nach gulp.dest (tauschen, dass zwei Rohre) – YOU

Antwort

0

Es ist ein Fehler in vinyl-fs. Wenn eine Datei auf die Festplatte geschrieben wird, gilt sie als (wobei file ein vinylFile-Objekt ist), ignoriert jedoch vollständig die Werte file.stat.uid und file.stat.gid.

Es sieht aus wie es gewesen ist fixed in der Code-Basis von vinyl-fs aber AFAIK gibt es noch keine Freigabe, die das Update enthält.

Jemand in dem Fehlerbericht, den Sie mit Erwähnungen geklonten gulp-chown verbunden haben, aber ich denke nicht, dass das notwendig ist. Ich wechsle einfach die Datei Eigentum nach gulp.dest seine Arbeit getan hat:

import gulp from "gulp"; 
import es from "event-stream"; 
import fs from "fs"; 

gulp.task("build", 
     () => gulp.src("src/**/*") 
      .pipe(gulp.dest("build")) 
      .pipe(es.map((file, callback) => { 
       fs.chown(file.path, file.stat.uid, file.stat.gid, 
         (err) => callback(err, file)); 
      }))); 

Sie sehen, ich bin nur mit file.stat.uid und file.stat.gid. Mein Ziel ist erhalten das Eigentum, das die Quelldatei hat. (Ja, weil vinyl-fs nicht einmal diese standardmäßig tun.) Sie können einfach uid und gid Sie dort setzen möchten.

+0

zu machen Ich habe ein System, das ich jedes Mal auf einer anderen Maschine baue und installiere, daher kann ich die Benutzer- und Gruppen-IDs im Voraus nicht wissen ... Was ich jetzt benutze, ist nur ein Bash-Skript, das nach dem Schluck ausgeführt wird, und ändert den Benutzer und die Gruppe zu den richtigen. – Finkel

+0

Ich kann nicht sehen, was möglicherweise verhindern könnte, dass die 'chown'-Operation, die von Ihrem bash-Skript ausgeführt wird, in JavaScript mit Schluck ausgeführt wird. – Louis

Verwandte Themen