【问题标题】:gulp-preprocess not working as expected on a javascript filegulp-preprocess 在 javascript 文件上没有按预期工作
【发布时间】:2019-08-05 04:33:05
【问题描述】:

我正在 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】:

    我假设你现在已经解决了这个问题,但如果你没有解决这个问题,或者其他人有同样的问题,我会告诉你我能看到什么。

    使用您的示例:

    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定义在当前任务的范围内,应该消失就不会显示了。

    【讨论】:

      猜你喜欢
      • 2016-10-08
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-19
      • 2020-11-25
      • 2016-11-18
      相关资源
      最近更新 更多