【问题标题】:gulp-preprocess and environment variables on Windows 10Windows 10 上的 gulp-preprocess 和环境变量
【发布时间】:2016-01-07 16:16:28
【问题描述】:

我正在 OSX 和 Windows 10 上构建一个 js 应用程序,两者都运行 Node.js v4.2.x。

作为构建过程的一部分,我会运行

BUILD_TYPE={my-build-type} gulp build

使用gulp-preprocess 构建我的应用的特定配置。

我的 gulp 文件的相关部分看起来像

var env = process.env;

...
.pipe(plug.preprocess({context: { BUILD_TYPE: env.BUILD_TYPE}}))
...

我的 HTML 的相关部分看起来像

<!-- @if BUILD_TYPE='live' -->
    <script src="config/live.js"></script>
<!-- @endif -->

<!-- @if BUILD_TYPE='dev' -->
    <script src="config/dev.js"></script>
<!-- @endif -->

<!-- @ifndef BUILD_TYPE -->
    <script src="config/dev.js"></script>
<!-- @endif -->

<p>build type - <!-- @echo BUILD_TYPE --></p>

在 OSX 上这很好用,运行 BUILD_TYPE=dev gulp build 会导致:

<script src="config/dev.js"></script>

<p>build type - dev</p>

但是,在 Windows 10 上,使用 Node.js 命令提示符,

set BUILD_TYPE=dev && gulp build 

结果:

<p>build type - dev</p>

没有出现脚本标签!它清楚地识别了环境变量,因为它是由@echo BUILD_TYPE 打印的。但是,没有任何脚本元素存在。

任何关于为什么会发生这种情况的线索将不胜感激!

奇怪的是,如果我将 gulpfile 更改为:

...
.pipe(plug.preprocess({context: { BUILD_TYPE: 'dev'}}))
...

我得到了预期的输出:

<script src="config/dev.js"></script>

<p>build type - dev</p>

此外,如果我在调用 preprocess 之前记录变量:

OSX

console.log(env.BUILD_TYPE);
//dev
console.log(typeof env.BUILD_TYPE);
//string
console.log(env.BUILD_TYPE === 'dev');
//true

Windows 10

console.log(env.BUILD_TYPE);
//dev
console.log(typeof env.BUILD_TYPE);
//string
console.log(env.BUILD_TYPE === 'dev');
//false!

【问题讨论】:

    标签: windows gulp gulp-preprocess


    【解决方案1】:

    您是否确保在定义环境变量后不使用空格。

    类似:

    set BUILD_TYPE=dev&amp;&amp;gulp build

    【讨论】:

      猜你喜欢
      • 2016-04-02
      • 2011-06-18
      • 2021-10-15
      • 2021-02-13
      • 2011-01-16
      • 2011-11-25
      • 2017-04-09
      • 1970-01-01
      • 2020-08-23
      相关资源
      最近更新 更多