有没有办法让 Gulp 在不同的环境中跳过或包含 JavaScript 段?

Posted

技术标签:

【中文标题】有没有办法让 Gulp 在不同的环境中跳过或包含 JavaScript 段?【英文标题】:Is there a way to make Gulp skip or include JavaScript segments in different environments? 【发布时间】:2022-01-19 08:36:31 【问题描述】:

我正在将一些 javascript 从 Jekyll 移植到 Gulp。

在 Jekyll 中,我有一个 _config.yml 文件,其中包含如下环境变量:

# _config.yml
app_url: https://app.mysite.com
dev_mode: true
dev_app_url: https://devapp.local

...在 JS 源代码中,我可以使用 Liquid 来确定我是否处于 dev_mode 并修改输出的内容,例如:

// main.js
var appUrl = '% if site.dev_mode % site.dev_app_url % else % site.app_url % endif %';

% if site.dev_mode %
  console.log(someVar);
  //etc
% endif %

有没有办法在使用 Gulp 时做类似的事情,这样我在开发时可以在我的 JS 中使用不同的环境变量,并且在我为生产编译时会省略调试代码块?

【问题讨论】:

【参考方案1】:

我认为你应该考虑使用 nodejs 环境变量。如果使用 npm,可以轻松地在您的 package.json 脚本定义中设置。所以你最终可能会得到类似的东西:

package.json:


          "name": "whatever",
          "version": "1.0.0",
          "description": "",
          "main": "index.js",
          "directories": 
                    "lib": "lib"
          ,
          "devDependencies": 
                    "gulp": "^4.0.2",
          ,
          "scripts": 
                    "build": "export NODE_ENV=dev||set NODE_ENV=dev&& gulp build",
          ,
          "repository": 
                    //...
          

在您的 gulp build 任务中(因为这是在 package.json 中定义节点 env 的位置),您现在可以验证 nodejs env:

    if (process.env.NODE_ENV == "dev")
    
        //stuff()
    

【讨论】:

以上是关于有没有办法让 Gulp 在不同的环境中跳过或包含 JavaScript 段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在循环中跳过项目

在 Maven 构建期间跳过子模块

在 Dataflow JavaScript UDF 中跳过记录

如何在java中跳过过滤器链中的过滤器

在导航历史记录中跳过视图

在 Vim 中跳过撤消步骤