我正在gulp中运行一个非常简单的预处理任务,它无法按预期方式工作。
这是任务:
import preprocess from 'gulp-preprocess'
function testpp() {
return gulp.src('./test')
.pipe(preprocess())
.pipe(gulp.dest('./tmp'))
}
输入文件
something
// @ifdef SOMEVAR
should be gone
// @endif
不变。我希望“应该消失”的部分会被移除。
gulp-preprocess documentation具有此示例:
// @ifdef DEBUG
someDebuggingCall();
// @endif
任何想法我做错了什么?
$ npm -v
6.10.1
$ gulp -v
CLI version: 2.2.0
Local version: 4.0.2
$ node -v
v10.16.0
来自package.json
"devDependencies": {
"@babel/core": "^7.5.5",
"@babel/preset-env": "^7.5.5",
"babel-core": "^6.26.3",
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
"eslint": "^6.1.0",
"gulp": "^4.0.2",
"gulp-babel": "^8.0.0-beta.2",
"gulp-cli": "^2.2.0",
"gulp-preprocess": "^3.0.2",
"through2": "^3.0.1",
"transfob": "^1.0.0"
}
我想您已经解决了这个问题,但是如果您没有机会解决,或者其他人遇到了同样的问题,我会告诉您我所看到的。
使用您的示例:
function testpp() {
return gulp.src('./test')
.pipe(preprocess())
.pipe(gulp.dest('./tmp'))
}
和
// @ifdef SOMEVAR
should be gone
// @endif
SOMEVAR
仅在preprocess
正在使用的上下文中定义时定义。默认情况下,我认为它继承了process
对象上下文,其中包括您的本地计算机环境。但是,如果要将其他数据传递给preprocess
,则需要将其传递给context
对象。例如:
return gulp.src('./test')
.pipe(preprocess({
SOMEVAR:42
})
.pipe(gulp.dest('./tmp'))
));
然后,SOMEVAR
在当前任务的范围内定义,并且应该消失将不会显示。