gulp-Windows 10 上的预处理和环境变量
gulp-preprocess and environment variables on Windows 10
我正在 OSX 和 Windows 10 上构建一个 js 应用程序,两者都是 运行ning 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
打印的。但是,存在 none 个脚本元素。
任何关于为什么会发生这种情况的线索都将不胜感激!
奇怪的是,如果我将 gulp 文件更改为:
...
.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!
你确定你在定义环境变量后没有使用空格吗?
类似于:
set BUILD_TYPE=dev&&gulp build
我正在 OSX 和 Windows 10 上构建一个 js 应用程序,两者都是 运行ning 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
打印的。但是,存在 none 个脚本元素。
任何关于为什么会发生这种情况的线索都将不胜感激!
奇怪的是,如果我将 gulp 文件更改为:
...
.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!
你确定你在定义环境变量后没有使用空格吗?
类似于:
set BUILD_TYPE=dev&&gulp build