2017-04-11 72 views
0

我试图(在测试意思应用程序中;使用:angular2,webpack-stream + gulp,express/consign,babel-node/gulp)transpile es6将服务器应用程序的文件格式化为wwwroot(dist),以便维持应用程序的文件/路径结构(因此,dummy ...pipe(dist)不起作用,因为输出文件会变平坦)。 这里是代码:Babel-transpile将应用程序文件转换为dist,保存路径的结构

... merged = require('merge-stream')(),..... 

gulp.task('compile', ['clean:wwwroot'],() => { 
    gulpEnv.set({ 
    NODE_ENV: 'production', 
    ENV: 'prod' 
    }); 
    let appFilesPaths = ['./app.js', './utils', './routes', './db.js', './boot.js', './models']; 
    let streams = []; 

    let compileAppFile(file, rel = './') => { 
    log('[compile]:Rel ::: ', rel) 
    let fullPath = path.join(__dirname, file); 
    let fullDestPath = path.join(paths.appDist, rel); 
    log('[compile:::full_Path]', fullPath); 
    log('[compile:::full_Dest]', fullDestPath) 

    let stream = gulp.src(fullPath) 
     .pipe(babel()) 
     .pipe(debug({ 
     title: 'Gulp-Debug' 
     })) 
     .pipe(gulp.dest(fullDestPath)) 
     .on('finish',() => { log('DONE') }) 
     .on('error', (err) => { log('[compile error]', err) }); 

    merged.add(stream) 
     .pipe(debug({ 
     title: `[Debug::MergedStreams]::: ${stream}` 
     })); 
    } 

    let traverseAppPaths(fsEntity, rel = './') => { 
    log('[traverse]:Rel ::: ', rel) 
    let fullPath = path.resolve(rel, fsEntity); 
    fs.stat(fullPath, (err, stats) => { 
     if (err) throw new Error(`Error reading app file : \n ${err}`); 
     if (stats.isFile()) { 
     log('[traverse:::fsEntity]', fsEntity) 
     if (fsEntity.indexOf('js') !== -1) 
      compileAppFile(fsEntity, rel); 
     } else { 
     fs.readdir(fsEntity, (err, files) => { 
      if (err) throw new Error(`Error reading app directory's files : ${err}`); 
      files.filter(item => item.indexOf('js') !== -1) 
      .forEach(item => traverseAppPaths(item, fsEntity)); 
     }) 
     } 
    }) 
    } 

    appFilesPaths.forEach(fsItem => traverseAppPaths(fsItem)); 
    return merged 
    .pipe(debug({ 
     title: '[merged_streams]:::' 
    })); 

}); 
gulp.task('test', ['compile']); 

。但它otputs只有3个文件wwwroot:transpiled app.jsboot.jsdb.js(即,像utils没有路径..编译/感动印度wwwroot


PS还有使用webpack/babel-loader的问题gist

回答