将我的gulpfile包装在一个立即调用的函数表达式中

时间:2015-05-15 23:59:11

标签: javascript gulp iife

看着我的gulpfile,我才意识到我必须在全局范围内声明所有变量。

我的gulpfile看起来非常典型(与this one不同),在文件顶部声明了一堆var

var gulp = require('gulp');
var browserify = require('gulp-browserify');
var concat = require('gulp-concat');
var less = require('gulp-less');
var refresh = require('gulp-livereload');
var minifyCSS = require('gulp-minify-css');

但是这告诉我,文件顶部的所有这些var只是被打到全局对象上。

我愚蠢吗? 我应该将我的gulpfile包装在IIFE中吗?

如果是这样,为什么我没有在网上任何地方看到IIFE内的gulpfile示例?

2 个答案:

答案 0 :(得分:3)

gulpfile在节点中运行,而不是在浏览器中运行。在浏览器中,这些变量将被定义为全局变量。在节点中,这是不同的。从docs

开始
  

顶级范围不是全球范围; Node模块中的var something将是该模块的本地

所以在gulpfile中定义没有IIFE的变量是可以的

答案 1 :(得分:2)

请记住,gulp在node节点中运行,globals的行为与浏览器不同。

  

在浏览器中,顶级范围是全局范围。这意味着在浏览器中,如果您在全局范围内,var会定义一个全局变量。在Node中,这是不同的。顶级范围不是全球范围; Node模块内的var something将是该模块的本地内容。

所以这些变量不是全局变量。节点与浏览器的工作方式略有不同,因此您应该阅读docs以了解差异