gpt4 book ai didi

javascript - 使用 yargs 和 gulp-if 分离/组合 gulp 任务源

转载 作者:太空宇宙 更新时间:2023-11-04 01:56:13 25 4
gpt4 key购买 nike

假设我想将所有 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 数组中注入(inject) gulp if 语句,如果传递了正确的标志,则该数组仅包含仅用于生产的文件。

一些大声的思考:- 我应该在这里创建两个文件吗?一个是包含跨环境所需的所有内容的基础,然后是特定于生产的基础,然后将它们组合起来?看起来不必要的复杂,但可以解决问题。

最佳答案

如果您的目标是更加 DRY,您可以尝试一下,因为您的暂存文件集是生产文件的子集:

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 可能可以解决问题。

关于javascript - 使用 yargs 和 gulp-if 分离/组合 gulp 任务源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47873539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com