2016-06-29 17 views
1

私はビルドプロセスを整えようとしていますが、gulp-chownは正しい結果を得られないようです。gulp chownは所有者を変更していません

これは私が実行するものである:

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

一気スクリプトは明らかに、rootとして実行されます。ファイルのメタデータを読み込み、実行するユーザーを使用していない私は、問題は(gulp.destであるかもしれないことGitHubの上hereを読んだ

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 

):

結果がこれですコマンド。

誰もこれを見越して解決しましたか?

+0

あなたはsudoでgulpを実行するの?ルートとして実行しますか? – YOU

+0

sudoを使うと、サーバー全体の大規模ビルドシステムの一部です – Finkel

+0

gulp.destの後にchownを使用することがあります(2つのパイプを交換してください) – YOU

答えて

0

これはvinyl-fsのバグです。ディスクにファイルを書き込むとき、ファイルはfile.stat.modefilevinylFileオブジェクト)を守りますが、file.stat.uidfile.stat.gidの値は完全に無視されます。

vinyl-fsのコードベースにfixedがありますが、AFAIKの修正はまだリリースされていません。

バグの誰かが、gulp-chownというクローンの言及にリンクしていると報告していますが、それは必要ではないと思います。

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)); 
      }))); 

あなたは、私がちょうどfile.stat.uidfile.stat.gidを使用しています参照:gulp.destはその仕事をした後、私は、ファイルの所有権を変更します。私の目標はに保存するソースファイルの所有権です。 (ええ、vinyl-fsはデフォルトでにしていないからです)。uidgidを置くことができます。

+0

私は別のマシンに毎回ビルドしてインストールするシステムを持っているので、ユーザーとグループのIDを事前に知ることはできません... 私が今使っているのは、gulpが実行された後に実行されるbashスクリプトです。ユーザーとグループを正しいユーザーに変更します。 – Finkel

+0

bashスクリプトで実行される 'chown'操作がgulpを持つJavaScriptで行われないようにする可能性があるのはわかりません。 – Louis

関連する問題