2016-08-04 37 views
4

我使用perforce代码签入我们的私人服务器,所以在生产版本之后(即,当index.html是只读的时候),我的大量任务失败,出现以下错误。如何在注入js和css的同时为index.html提供写入权限?

[INFO] [11:30:19] Error: EPERM: operation not permitted, open 'C:\MyProjectDir\index.html' 

一旦我签出文件或取消选中只读属性(使用窗口框),吞咽任务成功完成。有没有办法通过吞咽任务来改变它的权限以避免这种手动干预?

PS:我用CHMOD(777)

咕嘟咕嘟文件(其中注入发生部)

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

在管理员模式下

enter image description here

+1

,你怎么可以运行'chmod(777)''上Windows'? – xAqweRx

+0

@xAqweRx:它是一个nodejs模块,在文档中它没有提到它不能在Windows上使用,而是它说“可以在任何地方使用”https://www.npmjs.com/package/chmod – abi1964

+0

对不起,误解关于'chmod'。只是一个想法 - 你有没有尝试用'administrative' wrights开始你的'cmd'? – xAqweRx

回答

4

一个选项来运行CMD将使用gulp-exec删除只读标志attrib -r,然后用重新设置它注入数据后(如果necesarry)。

下面是一个例子:

gulp.task('remove-readonly-attributes', function() { 
    require("child_process").exec("attrib -r <dir-name>\*.* /s"); 
}); 
+0

能否请你提供一个示例命令 – abi1964

+0

在这里你可以找到一个示例如何使用@Larkeith所说的使用gulp-exec:http://stackoverflow.com/questions/29483772/remove-windows-file-readonly-attribute-在-一饮而尽文件。 –

相关问题