Advertisement
Guest User

slush angular

a guest
Mar 31st, 2015
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var gulp = require('gulp'),
  2.     install = require('gulp-install'),
  3.     conflict = require('gulp-conflict'),
  4.     template = require('gulp-template'),
  5.     rename = require('gulp-rename'),
  6.     inquirer = require('inquirer'),
  7.     _ = require('underscore.string');
  8.  
  9. var cssTypeData = {
  10.   'less': {
  11.     plugin: 'gulp-less',
  12.     pluginVersion: '^1.2.3',
  13.     pipeCommand: 'g.less()',
  14.     extension: 'less'
  15.   },
  16.   'sass': {
  17.     plugin: 'gulp-sass',
  18.     pluginVersion: '^0.7.1',
  19.     pipeCommand: 'g.sass()',
  20.     extension: 'scss'
  21.   },
  22.   'styl': {
  23.     plugin: 'gulp-stylus',
  24.     pluginVersion: '^1.0.2',
  25.     pipeCommand: 'g.stylus({use: [require(\'nib\')()]})',
  26.     extension: 'styl',
  27.     extraDependencies: {
  28.       'nib': '^1.0.2'
  29.     }
  30.   }
  31. };
  32.  
  33. gulp.task('default', function (done) {
  34.   //Запрос ответов на вопросы. Заносится в answers. Потом используется в шаблонах как <%= name %>
  35.   inquirer.prompt([
  36.     {type: 'input', name: 'name', message: 'What do you want to name your AngularJS app?', default: getNameProposal()},
  37.     {type: 'list', name: 'csstype', message: 'What CSS preprocessor do you want to use?', default: 'styl', choices: [
  38.       {name: 'Stylus', value: 'styl'},
  39.       {name: 'LESS', value: 'less'},
  40.       {name: 'Sass', value: 'sass'}
  41.     ]},
  42.     {type: 'confirm', name: 'coffee', message: 'Do you want to use CoffeeScript in your app?', default: false},
  43.     {type: 'confirm', name: 'example', message: 'Do you want to include a Todo List example in your app?', default: true}
  44.   ],
  45.   function (answers) {
  46.     //Дополняется массив переменных
  47.     answers.nameDashed = _.slugify(answers.name);
  48.     answers.modulename = _.camelize(answers.nameDashed);
  49.     //Массив адресов файлов
  50.     var files = [__dirname + '/templates/**'];
  51.     //Если был дан ответ coffee исключаем из списка файлов *.js
  52.     if (answers.coffee) {
  53.       files.push('!' + __dirname + '/templates/src/**/*.js')
  54.     }
  55.     //Иначе исключаем из списка файлов *.coffee
  56.     else {
  57.       files.push('!' + __dirname + '/templates/src/**/*.coffee')
  58.     }
  59.     //Если был дан ответ, что экзампл не нужен, то исключаем и его
  60.     if (!answers.example) {
  61.       files.push('!' + __dirname + '/templates/src/app/todo/**');
  62.     }
  63.     //Заполняем инфу по генераторы стилей
  64.     answers.styleData = cssTypeData[answers.csstype];
  65.     //Массив наших файлов
  66.     return gulp.src(files)
  67.        //Создаём "шаблон"
  68.       .pipe(template(answers))
  69.        //Переименовываем файлды стилей
  70.       .pipe(rename(function (file) {
  71.         if (file.extname === '.css') {
  72.           file.extname = '.' + answers.styleData.extension;
  73.         } else if (file.basename[0] === '_') {
  74.           file.basename = '.' + file.basename.slice(1);
  75.         }
  76.       }))
  77.       //Хз что
  78.       .pipe(conflict('./'))
  79.       //Куда ставится
  80.       .pipe(gulp.dest('./'))
  81.       //Судя по всему установка зафисимостей
  82.       .pipe(install())
  83.       //Финиш
  84.       .on('finish', function () {
  85.         done();
  86.       });
  87.   });
  88. });
  89. //Попытка сгенерить имя для проекта. Исползуется в заполнение ответов
  90. function getNameProposal () {
  91.   var path = require('path');
  92.   try {
  93.     return require(path.join(process.cwd(), 'package.json')).name;
  94.   } catch (e) {
  95.     return path.basename(process.cwd());
  96.   }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement