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

3qpi33ja  于 2022-12-08  发布在  Gulp
关注(0)|答案(1)|浏览(136)

我正在把一些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中有不同的环境变量,并且在为生产编译时可以省略调试代码块?

xpcnnkqh

xpcnnkqh1#

我认为你应该考虑使用nodejs环境变量。如果使用npm,可以在你的package.json脚本定义中很容易地设置。所以你可以得到类似的结果:
软件包. 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": {
                    //...
          }
}

在gulpbuild任务中(因为在package.json中定义了节点env),现在可以验证节点env:

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

相关问题