timpla
Version:
An optimal website development experience for [server-side] web frameworks.
58 lines (51 loc) • 1.72 kB
text/typescript
/*
* local.gulpfile.ts
*/
import * as gulp from 'gulp'
import * as inject from 'gulp-inject'
import * as replace from 'gulp-replace'
const buildReadMe = () => {
// It's not necessary to read the files (will speed up things), we're only after their paths:
const timplaConfigInterface = gulp.src('gulpfile.ts/lib/TIMPLA_INTERFACES.ts')
const timplaConfig = gulp.src('.timplaconfig.js').pipe(replace('./lib/public', 'timpla'))
const babelConfig = gulp.src('babel.config.js')
const transformJSCodeBlock = (filePath: string, file: any) => {
const utText = file.contents.toString('utf8')
const extractMatches = utText.match(/\/\/(.?)@extract([\s\S]*?)@endextract/gi)
const contents = !!extractMatches
? extractMatches.join('').replace(/\/\/.?@(end)?extract/g, '')
: utText
const extensionMatchers: any = {
js: 'javascript',
md: 'markdown',
sh: 'shell',
ts: 'typescript',
}
const ext = filePath.split('.').pop()!
const extToUse = extensionMatchers[ext] || ext
// return file contents as string
return ['```' + extToUse, contents, '```'].join('\n')
}
return gulp
.src('local.gulpfile.ts/README.md')
.pipe(
inject(timplaConfigInterface, {
starttag: '<!-- inject:timpla_config:{{ext}} -->',
transform: transformJSCodeBlock,
})
)
.pipe(
inject(timplaConfig, {
starttag: '<!-- inject:timpla_config_basic:{{ext}} -->',
transform: transformJSCodeBlock,
})
)
.pipe(
inject(babelConfig, {
starttag: '<!-- inject:babel:{{ext}} -->',
transform: transformJSCodeBlock,
})
)
.pipe(gulp.dest('./'))
}
export default buildReadMe