#javascript #css #node.js #sass #gulp
#язык JavaScript #CSS #node.js #нахальство #глоток
Вопрос:
После изменения глотка с 3 на 4 я получаю сообщение об ошибке при попытке запуска gulp build
:
Error: File not found with singular glob: /assets/css/argon.css (if this was purposeful, use `allowEmpty` option)
Код работал раньше с gulp 3 (как мне сказали), и я внес несколько изменений, чтобы иметь возможность работать и с gulp 4. Ошибка появляется после того, как все задачи были выполнены правильно.
Файл находится там, где он его ищет:
И вот мой gulpfile.js:
var autoprefixer = require('gulp-autoprefixer'); var browserSync = require('browser-sync').create(); var csscomb = require('gulp-csscomb'); var cleanCss = require('gulp-clean-css'); var cssnano = require('gulp-cssnano'); var composer = require('gulp-uglify/composer'); var concat = require('gulp-concat'); var del = require('del'); var imagemin = require('gulp-imagemin'); var htmlPrettify = require('gulp-html-prettify'); var gulp = require('gulp'); var gulpIf = require('gulp-if'); var gulpRun = require('gulp-run'); var gulpUtil = require('gulp-util'); var npmDist = require('gulp-npm-dist'); var postcss = require('gulp-postcss'); var runSequence = require('gulp4-run-sequence'); // var sass = require('gulp-sass'); var uglifyEs = require('uglify-es'); var uglify = composer(uglifyEs, console); var rename = require('gulp-rename'); var useref = require('gulp-useref-plus'); var wait = require('gulp-wait'); var sass = require('gulp-sass')(require('sass')); // Define paths var paths = { dist: { base: 'dist', img: 'dist/assets/img', libs: 'dist/assets/vendor' }, base: { base: './', node: 'node_modules' }, src: { base: './', css: 'assets/css', html: '**/*.html', img: 'assets/img/**/*. (png|jpg|gif|svg)', js: 'assets/js/**/*.js', scss: 'assets/scss/**/*.scss' } } // Compile SCSS gulp.task('scss', async function() { return gulp.src(paths.src.scss) .pipe(wait(500)) .pipe(sass().on('error', sass.logError)) .pipe(postcss([require('postcss-flexbugs-fixes')])) .pipe(autoprefixer({ browsers: ['gt; 1%'] })) .pipe(csscomb()) .pipe(gulp.dest(paths.src.css)) .pipe(browserSync.reload({ stream: true })); }); // Minify CSS gulp.task('minify:css', async function() { return gulp.src([ paths.src.css '/argon.css' ]) .pipe(cleanCss()) .pipe(rename({ suffix: '.min' })) .pipe(gulp.dest(paths.dist.base '/css')) }); // Concat JS files gulp.task('concat:js', async function(done) { files = [ paths.src.base '/assets/js/components/license.js', paths.src.base '/assets/js/components/layout.js', paths.src.base '/assets/js/components/init/*js', paths.src.base '/assets/js/components/custom/*js', paths.src.base '/assets/js/components/maps/*js', paths.src.base '/assets/js/components/charts/*js', paths.src.base '/assets/js/components/vendor/*js' ]; return gulp .src(files) .pipe(concat("argon.js")) .pipe(gulp.dest(paths.dist.base '/js')); done(); }); // Minify JS gulp.task('minify:js', async function(cb) { return gulp.src([ paths.dist.base '/js/argon.js' ]) .pipe(uglify()) .pipe(rename({ suffix: '.min' })) .pipe(gulp.dest(paths.dist.base '/js')) }); // Live reload gulp.task('browserSync', async function() { browserSync.init({ server: { baseDir: [paths.src.base, paths.base.base] }, }) }); // Watch for changes gulp.task('watch', gulp.series('browserSync', 'scss', async function() { gulp.watch(paths.src.scss, ['scss']); gulp.watch(paths.src.js, browserSync.reload); gulp.watch(paths.src.html, browserSync.reload); })); // Clean gulp.task('clean:dist', async function() { return del.sync(paths.dist.base); }); // Copy CSS gulp.task('copy:css', async function() { return gulp.src([ paths.src.base '/assets/css/argon.css' ]) .pipe(gulp.dest(paths.dist.base '/css')) }); // Copy JS gulp.task('copy:js', async function() { return gulp.src([ paths.src.base '/assets/js/argon.js' ]) .pipe(gulp.dest(paths.dist.base '/js')) }); // Build gulp.task('build', async function(callback) { runSequence('clean:dist', 'scss', 'copy:css', 'copy:js', 'concat:js', 'minify:js', 'minify:css', callback); }); // Default gulp.task('default', async function(callback) { runSequence(['scss', 'browserSync', 'watch'], callback ) });
Любая помощь будет признательна 🙂
Ответ №1:
В copy:css
тебе есть эта строчка:
paths.src.base '/assets/css/argon.css'
где, по-видимому, находится ваша ошибка. Проблема в том, что ваш paths.src.base
определяется как
base: './'
к которому вы добавляете /assets/css/argon.css
, чтобы в итоге получить
.//assets/css/argon.css
обратите внимание на две ведущие косые черты.
Избавьтесь от главной обратной косой черты в /assets/...
и проверьте остальную часть своего кода на наличие той же проблемы.
Также, поскольку вы используете gulp4, избавьтесь от runSequence
— посмотрите документацию gulp.series
.