@@ -7,6 +7,9 @@ import {Base} from 'yeoman-generator';
7
7
import { genBase } from '../generator-base' ;
8
8
import insight from '../insight-init' ;
9
9
import { exec } from 'child_process' ;
10
+ import babelStream from 'gulp-babel' ;
11
+ import beaufityStream from 'gulp-beautify' ;
12
+ import filter from 'gulp-filter' ;
10
13
11
14
export default class Generator extends Base {
12
15
constructor ( ...args ) {
@@ -119,6 +122,12 @@ export default class Generator extends Base {
119
122
} [ val ] ;
120
123
}
121
124
} , {
125
+ // TODO: enable once Babel setup supports Flow
126
+ // type: 'confirm',
127
+ // name: 'flow',
128
+ // message: 'Would you like to use Flow types with Babel?',
129
+ // when: answers => answers.transpiler === 'babel'
130
+ // }, {
122
131
type : 'list' ,
123
132
name : 'markup' ,
124
133
message : 'What would you like to write markup with?' ,
@@ -152,6 +161,9 @@ export default class Generator extends Base {
152
161
this . filters [ answers . transpiler ] = true ;
153
162
insight . track ( 'transpiler' , answers . transpiler ) ;
154
163
164
+ this . filters . flow = ! ! answers . flow ;
165
+ insight . track ( 'flow' , ! ! answers . flow ) ;
166
+
155
167
this . filters [ answers . markup ] = true ;
156
168
insight . track ( 'markup' , answers . markup ) ;
157
169
@@ -425,6 +437,64 @@ export default class Generator extends Base {
425
437
get writing ( ) {
426
438
return {
427
439
generateProject : function ( ) {
440
+ /**
441
+ * var tap = require('gulp-tap');
442
+ this.registerTransformStream([
443
+ extensionFilter,
444
+ tap(function(file, t) {
445
+ var contents = file.contents.toString();
446
+ contents = beautify_js(contents, config);
447
+ file.contents = new Buffer(contents);
448
+ }),
449
+ //prettifyJs(config),
450
+ extensionFilter.restore
451
+ ]);
452
+ */
453
+
454
+ let babelPlugins = [
455
+ 'babel-plugin-syntax-flow' ,
456
+ 'babel-plugin-syntax-class-properties'
457
+ ] ;
458
+
459
+ // TODO: enable once Babel setup supports Flow
460
+ // if(this.filters.babel && !this.filters.flow) {
461
+ babelPlugins . push ( 'babel-plugin-transform-flow-strip-types' ) ;
462
+ // }
463
+
464
+ const jsFilter = filter ( [ 'client/**/*.js' ] , { restore : true } ) ;
465
+ this . registerTransformStream ( [
466
+ jsFilter ,
467
+ babelStream ( {
468
+ plugins : babelPlugins . map ( require . resolve ) ,
469
+ /* Babel get's confused about these if you're using an `npm link`ed
470
+ generator-angular-fullstack, thus the `require.resolve` */
471
+ // retainLines: true,
472
+ babelrc : false // don't grab the generator's `.babelrc`
473
+ } ) ,
474
+ beaufityStream ( {
475
+ "indent_size" : 2 ,
476
+ "indent_char" : " " ,
477
+ "indent_level" : 0 ,
478
+ "indent_with_tabs" : false ,
479
+ "preserve_newlines" : true ,
480
+ "max_preserve_newlines" : 10 ,
481
+ "jslint_happy" : false ,
482
+ "space_after_anon_function" : false ,
483
+ "brace_style" : "collapse" ,
484
+ "keep_array_indentation" : false ,
485
+ "keep_function_indentation" : false ,
486
+ "space_before_conditional" : true ,
487
+ "break_chained_methods" : true ,
488
+ "eval_code" : false ,
489
+ "unescape_strings" : false ,
490
+ "wrap_line_length" : 100 ,
491
+ "wrap_attributes" : "auto" ,
492
+ "wrap_attributes_indent_size" : 4 ,
493
+ "end_with_newline" : true
494
+ } ) ,
495
+ jsFilter . restore
496
+ ] ) ;
497
+
428
498
let self = this ;
429
499
this . sourceRoot ( path . join ( __dirname , './templates' ) ) ;
430
500
this . processDirectory ( '.' , '.' , function ( dest ) {
0 commit comments