我之前已经意识到这个问题,但我还没有找到专门解决这个问题的答案。
我在使用Core 1(MVC 6),Angular2的项目上使用Visual Studio 2015 Update 3,该项目在TFS中。我正在使用Gulp-watch复制html / css / js文件,因为我处理它们并且这个大多数当时正常工作。我的.tfignore文件中有大部分wwwroot,包括我的" app"所有这些文件都被gulp和gulp-watch复制/清理的文件夹。我知道tfignore设置正在运行,因为TFS没有尝试提交这些文件。但是当Gulp对该文件夹进行清理时,我得到了一个"在您的工作区中找不到,或者您没有权限访问它。"。这个TFS检查会在我构建时减慢进程,并且足以让它修复它,但有时Gulp-Watch进程失败,因为它没有权限复制特定的html文件。 gulp-watch复制错误是EPERM: operation not permitted, open 'dashboard.component.html' at Error (native) Process terminated with code 1.
如果我清理然后重新运行Gulp副本,则没有权限问题。我认为即使这些文件是有效的,TFS也可能在这个问题上发挥作用。
PS。我已经读过你可以使用gulp-plumber来避免错误的停止,但是我试图找出导致wwwroot中TFS错误的原因,并希望结果能够先解决频繁的文件复制错误
有问题的Gulp代码:
var appDestPath = './wwwroot/app/';
gulp.task('clearAppDestinationFolderHtml',
function () {
return gulp.src(appDestPath + '**/*.html')
.pipe(clean());
});
gulp.task('clearAppDestinationFolderCss',
function () {
return gulp.src(appDestPath + '**/*.css')
.pipe(clean());
});
gulp.task('moveHtml', function () {
gulp.start('clearAppDestinationFolderHtml');
gulp.src(['app/**/*.html']).pipe(gulp.dest('./wwwroot/app/'));
});
gulp.task('moveCss', function () {
gulp.start('clearAppDestinationFolderCss');
gulp.src(['app/**/*.css']).pipe(gulp.dest('./wwwroot/app/'));
});
gulp.task('watch', function () {
gulp.watch('app/**/*.html', ['moveHtml']);
gulp.watch('app/**/*.css', ['moveCss']);
});
仅在尝试解决此问题时添加了目标文件夹的清理。我意识到清洁与副本同时运行并且可能导致它自己的问题。我刚刚尝试使用此代码,仅复制更改的特定文件,最终出现与(operation not permitted, open 'wwwroot\app\User\Components\app.component.ts')
之前相同的错误:
gulp.task('watch2', function () {
return gulp.watch('./app/**/*', function(obj){
if( obj.type === 'changed') {
gulp.src( obj.path, { "base": "./app/"})
.pipe(gulp.dest(appDestPath));
}
})
});
此处还有我的.tfignore文件:
wwwroot/app
wwwroot/scripts
wwwroot/libs
wwwroot/_references.js
app/*.js
app/*.js.map
typings
答案 0 :(得分:1)
如果您只是将文件移动到/app
目录,它们可能仍然是只读的。 TFS源代码控制下的文件是只读的。如果是这种情况,gulp-chmod插件可以删除该只读标志。
此外,gulp-clean已被弃用,转而使用del。
至于依赖关系,gulp 3并不难。您可以使用名为run-sequence的插件(这是一个临时修复,直到gulp 4发布)或者你可以设置依赖任务
var gulp = require('gulp'),
$ = require('gulp-load-plugins')(),
del = require('del'),
appDestPath = './app/';
gulp.task('clean:html', () => {
return del([
appDestPath + '**/*.html'
]);
});
gulp.task('clean:css', () => {
return del([
appDestPath + '**/*.css'
]);
});
gulp.task('moveHtml', ['clean:html'], function () {
gulp.src(['src/**/*.html'])
.pipe($.chmod(666))
.pipe(gulp.dest('./app/'));
});
gulp.task('moveCss', ['clean:css'], function () {
gulp.src(['src/**/*.css'])
.pipe($.chmod(666))
.pipe(gulp.dest('./app/'));
});
gulp.task('watch', () => {
gulp.watch('src/**/*.html', ['moveHtml']);
gulp.watch('src/**/*.css', ['moveCss']);
});