我在私有服务器中使用perforce进行代码检查,因此在生成构建之后(例如,当只读取index.html时),我的gulp任务失败并出现以下错误。
[INFO] [11:30:19] Error: EPERM: operation not permitted, open 'C:\MyProjectDir\index.html'
一旦我签出文件或取消选中只读属性(使用Windows框),gulp任务就会成功完成。有没有办法通过gulp任务来改变它的权限,以避免这种人工干预?
PS:我使用过chmod(777)
Gulp文件(注入发生的末端部分)
var gulp = require('gulp'),
gutil = require('gulp-util'),
uglify = require('gulp-uglify'),
minify = require('gulp-minify-css'),
concatVendor = require('gulp-concat-vendor'),
concatCss = require('gulp-concat-css'),
rev = require('gulp-rev'),
clone = require('gulp-clone'),
inject = require('gulp-inject'),
del = require('del'),
runSequence = require('run-sequence'),
chmod = require('gulp-chmod'),
series = require('stream-series'),
ngAnnotate = require('gulp-ng-annotate'),
rename = require("gulp-rename");
...
gulp.task('index', ['gulp-js-files', 'gulp-css-files'], function() {
var target = gulp.src(mainIndexFile);
return target.pipe(chmod(777)).pipe(inject(series(vendorCss, customCss, vendorJs), { ignorePath: ['MyProjectDir'], addRootSlash: false }))
.pipe(gulp.dest(mainDestination));
});
...
以管理员模式运行cmd
答案 0 :(得分:4)
一种选择是使用gulp-exec
删除attrib -r
的只读标记,然后在注入数据后重新设置attrib +r
(如果必要)。
以下是一个例子:
gulp.task('remove-readonly-attributes', function() {
require("child_process").exec("attrib -r <dir-name>\*.* /s");
});