-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathgulpfile.js
More file actions
101 lines (90 loc) · 2.61 KB
/
gulpfile.js
File metadata and controls
101 lines (90 loc) · 2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
const browserSync = require('browser-sync').create()
const ejs = require('ejs')
const fs = require('fs')
const gulp = require('gulp')
const gulpClean = require('gulp-clean')
const gulpMarkdown = require('gulp-markdown')
const through = require('through2')
const vinyl = require('vinyl')
const webpack = require('webpack-stream')
const exec = require('gulp-exec')
const paths = {
views: {
src: 'src/views/index.ejs',
dest: 'dist',
},
assets: {
src: 'src/assets/**/*',
dest: 'dist',
},
docs: {
src: 'src/docs/markdowns/**/*.md',
},
}
function assets() {
return gulp.src(paths.assets.src).pipe(gulp.dest(paths.assets.dest))
}
function clean() {
return gulp.src('dist', { allowEmpty: true }).pipe(gulpClean())
}
function search() {
return gulp
.src('src/tools/search.js')
.pipe(webpack(require('./webpack.config.js')))
.pipe(gulp.dest('dist/'))
}
function updateSearchPool() {
return gulp.src('src/tools/updateSearchPool.ts').pipe(exec((file) => `ts-node ${file.path}`))
}
function views() {
const sidebar = require('./sidebar.json')
const template = fs.readFileSync('src/views/index.ejs').toString()
return gulp
.src(paths.docs.src)
.pipe(gulpMarkdown())
.pipe(
through.obj(function (file, enc, cb) {
this.push(
new vinyl({
contents: Buffer.from(
ejs.render(template, {
title: 'Codeanywhere Docs',
description:
"Welcome to the official Codeanywhere documentation! Here you'll find articles and tutorials to help you get started with the Codeanywhere platform.",
sidebar,
rendered: String(file.contents),
filePath: file.relative.replace('.html', '').replace(/\\/g, '/').replace('index', ''),
filename: 'src/views/index.ejs',
})
),
path: file.relative,
})
)
cb()
})
)
.pipe(gulp.dest(paths.views.dest))
}
function reload(done) {
browserSync.reload()
done()
}
function serve(done) {
browserSync.init({
server: {
baseDir: './dist',
serveStaticOptions: {
extensions: ['html'],
},
},
})
done()
}
const watch = function () {
gulp.watch([paths.views.src, paths.docs.src], { ignoreInitial: false }, gulp.series(views, reload))
gulp.watch([paths.assets.src], { ignoreInitial: false }, gulp.series(assets, reload))
}
const build = gulp.series(clean, updateSearchPool, gulp.parallel(assets, views, search))
const development = gulp.series(build, serve, watch)
exports.default = build
exports.development = development