Skip to content
This repository has been archived by the owner on Mar 25, 2018. It is now read-only.

Добавить одиночный таргет #14

Open
belozer opened this issue Nov 24, 2016 · 7 comments
Open

Добавить одиночный таргет #14

belozer opened this issue Nov 24, 2016 · 7 comments

Comments

@belozer
Copy link

belozer commented Nov 24, 2016

Сейчас на вход билдера подаётся объект с тагретами. Но если разбивать gulpfile на таски - это не совсем удобно.

// Сборка стилей
gulp.task('build:css', () => {
  return bundler('bem/bundles/*')
  .pipe(builder({ css: bundle =>
    require('gulp-bem-preset-css')(bundle, {svgPaths: ['bem/icons']})
  }))
  .on('error', console.error)
  .pipe(gulp.dest('./public/bundles/'))
  .pipe(debug({title: 'public bundles'}))
})

Лучше было бы так

// Сборка стилей
gulp.task('build:css', () => {
  return bundler('bem/bundles/*')
  .pipe(builder(bundle =>require('gulp-bem-preset-css')(bundle, {svgPaths: ['bem/icons']})))
  .on('error', console.error)
  .pipe(gulp.dest('./public/bundles/'))
  .pipe(debug({title: 'public bundles'}))
})

так это без пресетов выглядит

// Сборка стилей
gulp.task('build:css', () => {
  return bundler('bem/bundles/*')
  .pipe(builder(bundle => bundle.src('css')))
  .on('error', console.error)
  .pipe(gulp.dest('./public/bundles/'))
  .pipe(debug({title: 'public bundles'}))
})
@belozer
Copy link
Author

belozer commented Nov 24, 2016

или даже так

// Сборка стилей
gulp.task('build:css', () => {
  return bundler('bem/bundles/*')
  .pipe(builder('css'))
  .on('error', console.error)
  .pipe(gulp.dest('./public/bundles/'))
  .pipe(debug({title: 'public bundles'}))
})

или можно вот так

// Сборка стилей
gulp.task('build:css', () => {
  return bundler('bem/bundles/*')
  .pipe(builder({tech: 'css'})) // techs для массива
  .on('error', console.error)
  .pipe(gulp.dest('./public/bundles/'))
  .pipe(debug({title: 'public bundles'}))
})

@yar-usenko
Copy link

Тогда bundler и builder можно обеденить в 1 плагин и, судя по внутриностям, добавить кеширование библиотек, как в enb (чтоб он не обходил их каждый раз при сборке)

@belozer
Copy link
Author

belozer commented Nov 24, 2016

Если объединить bundler и builder, как предложил @yar-usenko, можно получить например такое API

// Сборка стилей
gulp.task('build:css', () => {
  return bundler('bem/bundles/*') // Все технологиий
  .pipe(/*...*/)
  .on('error', console.error)
  .pipe(gulp.dest('./public/bundles/'))
  .pipe(debug({title: 'public bundles'}))
})
// Сборка стилей
gulp.task('build:css', () => {
  return bundler('bem/bundles/*', {tech: 'css'}) // только CSS технологии
  .pipe(/*...*/)
  .on('error', console.error)
  .pipe(gulp.dest('./public/bundles/'))
  .pipe(debug({title: 'public bundles'}))
})
// Сборка стилей
gulp.task('build:css', () => {
  return bundler('bem/bundles/*', 'css') // Или такой вариант
  .pipe(/*...*/)
  .on('error', console.error)
  .pipe(gulp.dest('./public/bundles/'))
  .pipe(debug({title: 'public bundles'}))
})

upd.

// Сборка стилей
gulp.task('build:css', () => {
  return bundler('bem/bundles/*').tech('css') // Или так
  .pipe(/*...*/)
  .on('error', console.error)
  .pipe(gulp.dest('./public/bundles/'))
  .pipe(debug({title: 'public bundles'}))
})

@belozer
Copy link
Author

belozer commented Nov 24, 2016

@zxqfox что скажешь?

@qfox
Copy link
Member

qfox commented Nov 24, 2016

@belozer можно, конечно ;-) Но нужно ли?

@belozer
Copy link
Author

belozer commented Nov 24, 2016

@zxqfox ну с чем я сейчас столкнулся - так это с излишком необходимости объекта для таргетов на вход билдера, когда таргет всего один.
#14 (comment)
#14 (comment)

@belozer
Copy link
Author

belozer commented Nov 24, 2016

Про необходимость в разбивке бандлов по таскам я описал здесь

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants