2016-03-18 02:50:12 +03:00
import { Preset , Clean , Copy , Jekyll , CssNano , Sass , RollupEs , RollupUmd , RollupIife , ScssLint , EsLint , Aggregate , Uglify , parallel , series } from 'gulp-pipeline/src/index'
2016-03-10 02:08:03 +03:00
const referenceDocNotice =
` $ 1 \n
2016-03-18 01:25:31 +03:00
[ //]: # DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by gulp docs:copy:bs-docs\n
2016-03-10 02:08:03 +03:00
{ % callout info % } \ n * * Bootstrap Reference Documentation * *
This is a part of the reference documentation from < a href = "http://getbootstrap.com" > Bootstrap < / a > .
It is included here to demonstrate rendering with Material Design for Bootstrap default styling .
See the < a href = "/material-design/buttons" > Material Design < / a > s e c t i o n f o r m o r e e l e m e n t s a n d c u s t o m i z a t i o n o p t i o n s .
{ % endcallout % }
\ n \ n$2 `
const copyProcessor = ( content , srcpath ) => { // https://regex101.com/r/cZ7aO8/2
return content
. replace ( /(---[\s\S]+?---)([\s\S]+)/mg , referenceDocNotice ) // insert docs reference
. replace ( /Fancy display heading/ , 'Fancy heading' ) // remove sample text 'display' as this is a particular MD style and is confusing
}
const preset = Preset . baseline ( {
javascripts : {
source : { options : { cwd : 'docs/assets/js/src' } } ,
watch : { options : { cwd : 'docs/assets/js/src' } } ,
test : { options : { cwd : 'docs/assets/js/tests' } } ,
dest : 'docs/dist'
} ,
stylesheets : {
source : { options : { cwd : 'docs/assets/scss' } } ,
watch : { options : { cwd : 'docs/assets/scss' } } ,
dest : 'docs/dist'
2016-03-18 19:34:25 +03:00
} ,
images : {
dest : 'docs/dist'
} ,
postProcessor : {
dest : 'docs/dist'
2016-03-10 02:08:03 +03:00
}
} )
const prefix = { task : { prefix : 'docs:' } }
export default function ( gulp , options ) {
2016-03-17 23:11:07 +03:00
let javascripts = parallel ( gulp ,
2016-03-10 02:08:03 +03:00
new RollupIife ( gulp , preset , prefix , options . rollupConfig , {
2016-03-10 19:12:16 +03:00
options : {
dest : 'docs.iife.js' ,
moduleName : 'docs'
}
} ) ,
2016-03-10 02:08:03 +03:00
new Uglify ( gulp , preset , prefix , {
task : { name : 'vendor:uglify' } ,
source : { options : { cwd : 'docs/assets/js/vendor' } } ,
options : { dest : 'docs-vendor.min.js' }
} )
2016-03-17 23:11:07 +03:00
)
2016-03-10 02:08:03 +03:00
let eslint = new EsLint ( gulp , preset , prefix )
let scsslint = new ScssLint ( gulp , preset , prefix , {
source : { glob : [ '**/*.scss' , '!docs.scss' ] } ,
watch : { glob : [ '**/*.scss' , '!docs.scss' ] }
} )
2016-03-17 23:11:07 +03:00
let linters = parallel ( gulp , scsslint , eslint )
2016-03-10 02:08:03 +03:00
let sass = new Sass ( gulp , preset , prefix )
2016-03-17 23:11:07 +03:00
let recipes = series ( gulp ,
2016-03-10 02:50:43 +03:00
new Clean ( gulp , preset , prefix ) ,
2016-03-10 02:08:03 +03:00
linters ,
2016-03-10 19:12:16 +03:00
sass ,
javascripts ,
2016-03-18 02:50:12 +03:00
new CssNano ( gulp , preset , prefix )
2016-03-17 23:11:07 +03:00
)
new Aggregate ( gulp , 'default' , recipes , prefix )
new Aggregate ( gulp , 'lint' , linters , prefix )
new Aggregate ( gulp , 'js' , series ( gulp , eslint , javascripts ) , prefix )
new Aggregate ( gulp , 'css' , series ( gulp , scsslint , sass ) , prefix )
2016-03-10 02:08:03 +03:00
// docs copy
2016-03-17 23:11:07 +03:00
new Aggregate ( gulp , 'copy:bs-docs' , parallel ( gulp ,
2016-03-10 02:08:03 +03:00
new Copy ( gulp , preset , prefix , {
2016-03-17 23:11:07 +03:00
task : false , //{name: 'copy:bs-docs-content'},
2016-03-10 02:08:03 +03:00
source : {
options : { cwd : '../bootstrap/docs/content' } ,
glob : [ '**/*' ]
} ,
dest : 'docs/content/' ,
process : copyProcessor
} ) ,
new Copy ( gulp , preset , prefix , {
2016-03-17 23:11:07 +03:00
task : false , //{name: 'copy:bs-docs-components'},
2016-03-10 02:08:03 +03:00
source : {
options : { cwd : '../bootstrap/docs/components' } ,
glob : [ '**/*' ]
} ,
dest : 'docs/components/' ,
process : copyProcessor
} ) ,
new Copy ( gulp , preset , prefix , {
2016-03-17 23:11:07 +03:00
task : false , //{name: 'copy:bs-docs-scss'},
2016-03-10 02:08:03 +03:00
source : {
options : { cwd : '../bootstrap/docs/assets/scss' } ,
glob : [ '**/*' , '!docs.scss' ] // keep variable customizations
} ,
dest : 'docs/assets/scss/' ,
process : ( content , srcpath ) => {
2016-03-18 01:25:31 +03:00
return content . replace ( /([\s\S]+)/mg , '// DO NOT EDIT IT WILL BE OVERWRITTEN - copy of bootstrap documentation generated by gulp docs:copy:bs-docs\n\n$1' ) ;
2016-03-10 02:08:03 +03:00
}
} ) ,
new Copy ( gulp , preset , prefix , {
2016-03-17 23:11:07 +03:00
task : false , //{name: 'copy:bs-docs-plugins'},
2016-03-10 02:08:03 +03:00
source : {
options : { cwd : '../bootstrap/docs/_plugins' } ,
glob : [ '**/*' , '!bridge.rb' ]
} ,
dest : 'docs/_plugins/'
} ) ,
new Copy ( gulp , preset , prefix , {
2016-03-17 23:11:07 +03:00
task : false , //{name: 'copy:bs-docs-js-vendor'},
2016-03-10 02:08:03 +03:00
source : {
options : { cwd : '../bootstrap/docs/assets/js/vendor' } ,
glob : [
'**/*' ,
'!tether.min.js' ,
'!jquery.min.js'
]
} ,
dest : 'docs/assets/js/vendor/'
} , prefix )
2016-03-18 01:22:27 +03:00
) , prefix )
2016-03-17 23:11:07 +03:00
return recipes
2016-03-10 02:08:03 +03:00
}