最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

使用yargs和gulp

运维笔记admin14浏览0评论

使用yargs和gulp

使用yargs和gulp

假设我想将所有js文件包含在以特定顺序连接的源文件夹中(使用gulp-concat)。但是,如果有生产标志,我只想包含某些文件。

例如,在制作中我需要这些文件:

  • modals.js
  • utilities.js
  • 的analytics.js
  • signup.js
  • cookies.js

但是,对于本地和分期,我不想要这两个:

  • 的analytics.js
  • cookies.js

是否有可能使用yargs并且可能gulp-if指定这个?我知道我可以有两个来源列表,例如:

if (argv.production) {
    return gulp.src([
        'modals.js',
        'utilities.js',
        'analytics.js',
        'signup.js',
        'cookies.js'
    ])
} else if (argv.staging) {
    return gulp.src([
        'modals.js',
        'utilities.js',
        'signup.js',
    ])
}

然而,这意味着我不遵守DRY原则,只是觉得愚蠢而容易出错。如果任务有生产标志,我可以以某种方式将这些组合在一起作为单一来源,仅包括分析和cookie等内容吗?

在理想的世界中,我可以在gulp.src数组中注入gulp if语句,如果传递了正确的标志,则只包含仅生成文件。

一些大声的想法: - 我应该在这里创建两个文件吗?一个基础,包括跨环境所需的一切,然后是生产特定的,然后结合这些?似乎不必要地复杂,但可以解决问题。

回答如下:

如果你的目标是更干一些,你可以试一试,因为你的临时文件集是生产文件的一个子集:

var base_list = ['modals.js', 'utilities.js', 'signup.js'];
if (argv.staging) {
    return gulp.src(base_list);
} else if (argv.production) {
    var prod_list = base_list.concat(['analytics.js', 'cookies.js']);
    return gulp.src(prod_list);
}

或者更简化(只要生产需要其他文件,所有其他环境都获得子集):

var file_list = ['modals.js', 'utilities.js', 'signup.js'];
if (argv.production) {
    file_list = file_list.concat(['analytics.js', 'cookies.js']);
}
return gulp.src(file_list);

可能还有一些其他gulp特定的最佳实践或工具可以在这里发挥作用,但是一些简单的JavaScript可能会起到作用。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论