有没有办法让 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 段?的主要内容,如果未能解决你的问题,请参考以下文章