我在我们的私有服务器中使用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

发布于 2016-08-26 14:31:54
一种选择是使用gulp-exec通过attrib -r删除只读标志,然后在注入数据后使用attrib +r重新设置它(如果需要)。
下面是一个示例:
gulp.task('remove-readonly-attributes', function() {
require("child_process").exec("attrib -r <dir-name>\*.* /s");
});https://stackoverflow.com/questions/38759808
复制相似问题