gulp chown不会改变所有者

时间:2016-06-29 10:19:11

标签: gulp

我正在尝试制作一个构建过程,而且似乎gulp-chown不会给我正确的结果。

这就是我的目的:

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

显然,gulp脚本以root身份运行。

结果如下:

{{1}}

我在GitHub上读过here,问题可能是gulp.dest()没有读取文件的元数据,并使用运行该命令的用户。

有没有人遇到这个并解决了它?

1 个答案:

答案 0 :(得分:0)

这是vinyl-fs中的错误。当它将文件写入磁盘时,它会尊重file.stat.mode(其中filevinyl File个对象),但它完全忽略了file.stat.uidfile.stat.gid的值vinyl-fs

gulp-chown的代码库中看起来好像是fixed,但是AFAIK还没有包含修复程序的版本。

错误报告中有人提到克隆gulp.dest,但我不认为这是必要的。我只是在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.uid

您看到我刚刚使用file.stat.gidvinyl-fs。我的目标是保留源文件所拥有的所有权。 (是的,因为默认情况下uid甚至没有。)您可以在那里放置任何gidnotifyItemChanged