Gulpfile未正确编译Scss & JS

qq24tv8q  于 2022-12-08  发布在  Gulp
关注(0)|答案(1)|浏览(158)

我正在尝试创建一个gulpfile.js来编译scss到css和JS组件到一个主JS文件。但是它不能正常工作。

运行命令gulp时遇到的问题:

1.它不会将JS组件编译为主JS文件。
1.它编译SCSS,但当我保存任何文件时,git-bash终端会无限执行文件,下面是截图:

这是我的gulpfile.js:

"use strict";

const source = 'assets/';

// Load Modules
const { src, dest, watch, series } = require('gulp');
const sass = require('gulp-sass')(require('sass'));
const postcss = require('gulp-postcss');
const cssnano = require('cssnano');
const terser = require('gulp-terser');
const browsersync = require('browser-sync').create();

// Scss Task
function scssTask() {
    return src(`${source}/scss/zaincss.scss`)
    .pipe(sass())
    .pipe(postcss([cssnano()]))
    .pipe(dest(`${source}/css`));
}

// Javascript Task
function jsTask() {
    return src(`${source}/js/scripts/*.js`)
    .pipe(terser())
    .pipe(dest(`${source}/js/scripts/`));
}

// BrowserSync Tasks
function browserSyncServe(done) {
    browsersync.init({
        server: {
            baseDir: '.'
        },
        injectChanges: true
    });
    done()
}

function browserSyncReload(done) {
    browsersync.reload();
    done();
}

// Watch Task
function watchTask() {
    watch('*.html', browserSyncReload);
    watch(['assets/scss/**/*.scss', 'assets/js/**/*.js'], series(scssTask, jsTask, browserSyncReload));
}

// Default Gulp Task
exports.default = series(
    scssTask, jsTask, browserSyncServe, watchTask
);

我在谷歌上搜索了很多,但是我被卡住了。请帮助我。

e0bqpujr

e0bqpujr1#

问题的一部分是您正在查看的目录与存储js文件的目录相同:

// Javascript Task
function jsTask() {
    return src(`${source}/js/scripts/*.js`)
    .pipe(terser())
    .pipe(dest(`${source}/js/scripts/`));
}

因此,您将文件发送到${source}/js/scripts/,但在watch任务中监视该位置:'assets/js/**/*.js'。因此,该位置的任何更改都将重新启动该过程。
将您的js文件存储在其他地方,而不是您正在监视更改的同一个目录。

相关问题