我正在尝试制作一个构建过程,而且似乎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()没有读取文件的元数据,并使用运行该命令的用户。
有没有人遇到这个并解决了它?
答案 0 :(得分:0)
这是vinyl-fs
中的错误。当它将文件写入磁盘时,它会尊重file.stat.mode
(其中file
是vinyl
File
个对象),但它完全忽略了file.stat.uid
和file.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.gid
和vinyl-fs
。我的目标是保留源文件所拥有的所有权。 (是的,因为默认情况下uid
甚至没有此。)您可以在那里放置任何gid
和notifyItemChanged
。