【问题标题】:Gulp - strip out test code then webpack modulesGulp - 去掉测试代码,然后去掉 webpack 模块
【发布时间】:2017-11-10 08:06:16
【问题描述】:

我是 gulp 的新手,正在尝试了解如何设置 gulp 配方以使用“gulp-strip-code”和“webpack-stream”剥离测试测试代码。

出于测试目的,我没有对文件进行任何缩小。

gulp.task('strip-test-code', function(){
  return gulp.src(['src/*.js','src/gui/*.js'],{base:'src'})
    .pipe(stripCode({
      start_comment: "start-test-block",
      end_comment: "end-test-block"
    }));
});

gulp.task('pack-strip',['strip-test-code'],function(){
  return gulp.src(['src/*.js','src/gui/*.js'],{base:'src'})
    .pipe(webpack(require('./webpack.config.devel.js')))
    .pipe(gulp.dest('dist/'));
});

当我运行 gulp pack-strip 时,我仍然在包中看到我的测试块标签。

它似乎正在运行 strip-test-code。

[10:26:57] Using gulpfile ~/project/gulpfile.js
[10:26:57] Starting 'strip-test-code'...
[10:26:57] Finished 'strip-test-code' after 71 ms
[10:26:57] Starting 'pack-strip'...
[10:26:58] Version: webpack 1.15.0
              Asset    Size  Chunks             Chunk Names
project.bundle.js  141 kB       0  [emitted]  project
[10:26:58] Finished 'pack-strip' after 396 ms

但是在执行后我 grep 测试块

grep -r start-test-block *
dist/project.bundle.js:   /*start-test-block*/

--- 编辑---

我的 webpack 配置文件看起来像

 1 const path=require('path');
 2 module.exports={
 3   context:path.resolve(__dirname,'src'),
 4   entry:{
 5     project:['./project.js']
 6   },
 7   output:{
 8     path:path.resolve(__dirname,'dist'),
 9     filename:'[name].bundle.js'
10   },
11   devtool:"#inline-source-map"
12 };

【问题讨论】:

    标签: webpack gulp


    【解决方案1】:

    任务pack-strip没有使用任务strip-test-code返回的流,你可以将它们合并为一个任务:

    gulp.task('task', function(){
        return gulp.src(['src/*.js','src/gui/*.js'],{base:'src'})
           .pipe(stripCode({
               start_comment: "start-test-block",
               end_comment: "end-test-block"
           }))
           .pipe(webpack(require('./webpack.config.devel.js')))
           .pipe(gulp.dest('dist/'));
    });
    

    或者您可以先保存剥离的文件,稍后再阅读:

    gulp.task('strip-test-code', function(){
         return gulp.src(['src/*.js','src/gui/*.js'],{base:'src'})
             .pipe(stripCode({
                 start_comment: "start-test-block",
                 end_comment: "end-test-block"
              }));
              .pipe(gulp.dest('dist'));
    });
    
    gulp.task('pack-strip',['strip-test-code'],function(){
        return gulp.src(['dist/*.js','dist/gui/*.js'],{base:'dist'})
            .pipe(webpack(require('./webpack.config.devel.js')))
            .pipe(gulp.dest('dist/'));
    });
    

    【讨论】:

    • 我更喜欢选项一,但它似乎不起作用。可能是因为 webpack.config.devel.js 脚本拾取了原件?
    • 对了,如果你使用的是带有gulp的webpack,你不需要在webpack配置文件中定义entry
    • 删除入口点会更改包名称。而且似乎不允许多个入口点。
    • 虽然我更喜欢选项 1。但我最终选择了选项 2。这让我可以为我的 webpack 指定多个入口点。我还完全废弃了 webpack 配置文件,并将其内联到我的 gulp 配方中。
    猜你喜欢
    • 2019-08-19
    • 2018-06-08
    • 1970-01-01
    • 2014-03-05
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多