gulp预处理无法在javascript文件上正常工作

问题描述 投票:0回答:1

我正在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"
  }

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

然后,SOMEVAR在当前任务的范围内定义,并且应该消失将不会显示。

© www.soinside.com 2019 - 2024. All rights reserved.