【问题标题】:Gulp copy min file but not js/cssGulp 复制 min 文件,但不复制 js/css
【发布时间】:2023-12-02 06:38:01
【问题描述】:

我正在尝试将我的所有资产复制到我的公共目录中,但我想要除 JavaScript 和 CSS 文件之外的所有资产,因为它们被连接并缩小为 prod.min.jsprod.min.css 所以我想为 @987654324 做两个例外@ 和 min.css 文件。

我已经试过了(暂时只针对JS)

gulp.src([src + '/**/*', src + '/**/*.min.js', '!' + src + '/**/*.js'])
          .pipe(gulp.dest(dest))

但它根本不会生成任何 JavaScript 文件。

如何做到这一点?

【问题讨论】:

  • 也许你可以在这里找到你的问题的答案 - *.com/questions/23384239/…
  • 谢谢!我看到了这个答案,但我想要完全相反的:D但无法管理如何做到:(

标签: node.js gulp glob


【解决方案1】:

为 CSS 和 JS 创建单独的 glob 数组。然后你可以更有选择性地被移动。

【讨论】:

  • 我可以分成 2 个 glob,但我的问题是一样的,我想排除除 .min.js(或 .min.css)以外的所有 js(或 css)文件
  • 不就是只有'/**/*.min.js'
  • 没有因为我想复制所有其他资产,如图像、字体……只是想知道是否有办法在一项任务中完成,而不是 2 或 3 项
【解决方案2】:

我现在也在处理这个问题。

我修补它的方式(这是一个补丁,因为它并不是真正的最佳解决方案)是通过两次传递:

  1. 第一遍 -> 移动所有 (**/*.*) 文件并否定所有 js 扩展名 (!**/*.js)
  2. 第二遍 -> 只移动缩小的文件 (**/*.min.js)

一个简单的任务示例:

gulp.task('move-min-not-src', [], function() {

    var paths = [
        [
            'source-folder/**/*.*',
            '!source-folder/**/*.js'
        ],
        [
            'source-folder/**/*.min.js'
        ]
    ];

    paths.forEach(function(path) {

        gulp.src(path)
            .pipe(
                gulp.dest('destination-folder/')
            );

    });

});

【讨论】: