【问题标题】:Gulp 4 array as sourceGulp 4 数组作为源
【发布时间】:2026-01-04 11:40:02
【问题描述】:

我正在尝试在现有项目中升级到 Gulp 4。我创建了一个名为 vendor 的任务,目的是连接和缩小全局 javascript 包。不幸的是,我在使用以下代码进行编译时收到错误消息:

function vendor() {
    const source = [
        './node_modules/@popperjs/core/dist/umd/popper.js',
        './node_modules/bootstrap/dist/js/bootstrap.js',
        './node_modules/slick-carousel/slick/slick.js'
    ];

    return src(source)
        .pipe(changed(source))
        .pipe(concat('vendor.js'))
        .pipe(uglify())
        .pipe(rename({
            extname: '.min.js'
        }))
        .pipe(dest('./dist/js/'))
}

exports.build = series(parallel(vendor, js));

我收到的错误是TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type object

【问题讨论】:

  • 看来我的具体问题与gulp-changed 有关,因为从我的供应商任务中删除它会导致build 任务成功完成。

标签: gulp gulp-4


【解决方案1】:

这对我来说是功能性的(具有我在项目中的路径)。你可以试试这个任务,看看它是否有效?

const {src, dest, task} = require("gulp");
const stripDebug = require('gulp-strip-debug');
const logger = require('node-color-log');
const uglify = require('gulp-uglify');

const source = [
  './node_modules/@popperjs/core/dist/umd/popper.js',
  './node_modules/bootstrap/dist/js/bootstrap.js',
  './node_modules/slick-carousel/slick/slick.js'
];

const jsDest = "./dist/js/";

function compressJs(callback) {
  logger.color('yellow').log(`Removing console.log() and uglifying js from ${source} to: ${jsDest}`);

    src(source)
    .pipe(stripDebug())
    .pipe(uglify())
    .pipe(dest(`${jsDest}`))
    .on('end', function () {
        callback();
    });
}

const Js = task('compress:js', compressJs);
exports.Js = Js;

【讨论】: