gpt4 book ai didi

javascript - 如何修复,ENOENT 错误 : no such file or directory when the "fonts" task mentioned below in the gulpfile. js 启动

转载 作者:行者123 更新时间:2023-12-03 05:39:38 24 4
gpt4 key购买 nike

以下是我拥有的 gulpfile.js。当“fonts”任务启动并运行“gulp build-qa”命令时,出现 ENOENT 错误:没有这样的文件或目录。然而,构建每次都会成功,但并非每次都一致。如何解决这个问题?我确保每项任务都有返回,即使它不起作用。

var gulp = require('gulp'),
del = require('del'),
pump = require('pump'),
flatten = require('gulp-flatten'),
usemin = require('gulp-usemin'),
htmlmin = require('gulp-htmlmin'),
cssmin = require('gulp-clean-css'),
uglifyjs = require('gulp-uglify'),
stripdebug = require('gulp-strip-debug'),
ngannotate = require('gulp-ng-annotate'),
rev = require('gulp-rev'),
concat = require('gulp-concat'),
sourcemaps = require('gulp-sourcemaps'),
connect = require('gulp-connect');

var ENV = process.env.NODE_ENV || 'dev',
APP_DIR = 'app',
BUILD_DIR = 'build',
SRC_DIR = 'source',
ZIP_DIR = 'packed';


gulp.task('clean', function () {
return del(
[BUILD_DIR + '/**', ZIP_DIR + '/**'],
{ dryRun: false })
.then(
// paths => { console.log('Files and folders that would be deleted:\n', paths.join('\n'));}
);
});


gulp.task('build-qa',['clean','fonts','images','partials','usemin-qa'], function(){});



/* Html processing, minifying and copying to build folder */
gulp.task('partials', function () {
return gulp.src(['**/*.html','!index.html'], {cwd: APP_DIR})
.pipe(htmlmin({ collapseWhitespace: true }))
.pipe(gulp.dest(BUILD_DIR));
});

/* Images copying to build folder */
gulp.task('images', function () {
return gulp.src('**/*.{jpg,png,gif,svg}')
.pipe(flatten())
.pipe(gulp.dest(BUILD_DIR+'/images'));
});

/* Find all font type files in 'fonts' folders and move to fonts build folder with flattened structure */
gulp.task('fonts', function () {
return gulp.src('**/fonts/*.{ttf,woff,eot,svg}')
.pipe(flatten())
.pipe(gulp.dest(BUILD_DIR+'/fonts'));
});

gulp.task('usemin-qa', function () {
return gulp.src('app/index.html')
.pipe(usemin({
// pipelines are named in the HTML, like js_lib and js_app below; html is the src file
html: [htmlmin({ collapseWhitespace: true, quotes: true, empty: true, spare: true, loose: true })],
css_lib: [
cssmin(),
'concat',
rev()
],
css: [
cssmin(),
'concat',
rev()
],
js_lib: [
ngannotate({remove: false, add: true}),
uglifyjs(),
rev()
],
js_app: [
sourcemaps.init(),
'concat',
ngannotate({remove: true, add: true}),
uglifyjs(),
rev()
]
}))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(BUILD_DIR))
});

最佳答案

ENOENT gulp 中的错误几乎总是由某种竞争条件引起的。

第一个问题是您的所有任务不仅仅是从源文件夹中获取文件。例如'**/fonts/*.{ttf,woff,eot,svg}'从项目中的任何位置选择字体文件包括您的BUILD_DIR 。您需要排除 BUILD_DIR在您的所有任务中:

gulp.task('fonts', function () {
return gulp.src(['**/fonts/*.{ttf,woff,eot,svg}',
'!'+BUILD_DIR+'/**'])
.pipe(flatten())
.pipe(gulp.dest(BUILD_DIR+'/fonts'));
});

下一个问题是这一行:

gulp.task('build-qa',['clean','fonts','images','partials','usemin-qa'], function(){});

这并不像你想象的那样。所有这些任务都不是按顺序执行的,它们都是同时执行的。这意味着您的 clean任务正在删除 BUILD_DIR 中的文件而您的其他任务正忙于将文件复制到同一目录中。

您有两个选择:

(1)所有其他任务上放置依赖提示。例如您的 fonts任务必须如下所示:

gulp.task('fonts', ['clean'], function () {
return gulp.src(['**/fonts/*.{ttf,woff,eot,svg}',
'!' + BUILD_DIR + '/**'])
.pipe(flatten())
.pipe(gulp.dest(BUILD_DIR+'/fonts'));
});

这可确保所有其他任务仅在 clean 之后运行任务已完成。

(2) 使用 run-sequence 在你的build-qa任务:

var runSequence = require('run-sequence');

gulp.task('build-qa', function(cb) {
runSequence('clean',['fonts','images','partials','usemin-qa'], cb);
});

这将运行 clean首先执行任务,然后并行执行所有其他任务。

关于javascript - 如何修复,ENOENT 错误 : no such file or directory when the "fonts" task mentioned below in the gulpfile. js 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40598948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com