0

我正在 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文档有这个例子:

// @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"
  }

4

1 回答 1

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'))
 ));

thenSOMEVAR是定义在当前任务范围内的,应该没了就不显示了。

于 2019-10-11T14:30:45.320 回答