]> git.evergreen-ils.org Git - working/eg-antora.git/blob - gulpfile.js
update terminology for referring to the default branch
[working/eg-antora.git] / gulpfile.js
1 'use strict'
2
3 const { parallel, series, watch } = require('gulp')
4 const createTask = require('./gulp.d/lib/create-task')
5 const exportTasks = require('./gulp.d/lib/export-tasks')
6 const log = require('fancy-log')
7
8 const bundleName = 'ui'
9 const buildDir = 'build'
10 const previewSrcDir = 'preview-src'
11 const previewDestDir = 'public'
12 const srcDir = 'src'
13 const destDir = `${previewDestDir}/_`
14 const { reload: livereload } = process.env.LIVERELOAD === 'true' ? require('gulp-connect') : {}
15 const serverConfig = { host: '0.0.0.0', port: 5252, livereload }
16
17 const task = require('./gulp.d/tasks')
18 const glob = {
19   all: [srcDir, previewSrcDir],
20   css: `${srcDir}/css/**/*.css`,
21   js: ['gulpfile.js', 'gulp.d/**/*.js', `${srcDir}/{helpers,js}/**/*.js`],
22 }
23
24 const cleanTask = createTask({
25   name: 'clean',
26   desc: 'Clean files and folders generated by build',
27   call: task.remove(['build', 'public']),
28 })
29
30 const lintCssTask = createTask({
31   name: 'lint:css',
32   desc: 'Lint the CSS source files using stylelint (standard config)',
33   call: task.lintCss(glob.css),
34 })
35
36 const lintJsTask = createTask({
37   name: 'lint:js',
38   desc: 'Lint the JavaScript source files using eslint (JavaScript Standard Style)',
39   call: task.lintJs(glob.js),
40 })
41
42 const lintTask = createTask({
43   name: 'lint',
44   desc: 'Lint the CSS and JavaScript source files',
45   call: parallel(lintCssTask, lintJsTask),
46 })
47
48 const formatTask = createTask({
49   name: 'format',
50   desc: 'Format the JavaScript source files using prettify (JavaScript Standard Style)',
51   call: task.format(glob.js),
52 })
53
54 const buildTask = createTask({
55   name: 'build',
56   desc: 'Build and stage the UI assets for bundling',
57   call: task.build(
58     srcDir,
59     destDir,
60     process.argv.slice(2).some((name) => name.startsWith('preview'))
61   ),
62 })
63
64 const bundleBuildTask = createTask({
65   name: 'bundle:build',
66   call: series(cleanTask, lintTask, buildTask),
67 })
68
69 const bundlePackTask = createTask({
70   name: 'bundle:pack',
71   desc: 'Create a bundle of the staged UI assets for publishing',
72   call: task.pack(
73     destDir,
74     buildDir,
75     bundleName,
76     (bundlePath) => !process.env.CI && log(`Antora option: --ui-bundle-url=${bundlePath}`)
77   ),
78 })
79
80 const bundleTask = createTask({
81   name: 'bundle',
82   desc: 'Clean, lint, build, and bundle the UI for publishing',
83   call: series(bundleBuildTask, bundlePackTask),
84 })
85
86 const packTask = createTask({
87   name: 'pack',
88   desc: '(deprecated; use bundle instead)',
89   call: series(bundleTask),
90 })
91
92 const buildPreviewPagesTask = createTask({
93   name: 'preview:build-pages',
94   call: task.buildPreviewPages(srcDir, previewSrcDir, previewDestDir, livereload),
95 })
96
97 const previewBuildTask = createTask({
98   name: 'preview:build',
99   desc: 'Process and stage the UI assets and generate pages for the preview',
100   call: parallel(buildTask, buildPreviewPagesTask),
101 })
102
103 const previewServeTask = createTask({
104   name: 'preview:serve',
105   call: task.serve(previewDestDir, serverConfig, () => watch(glob.all, previewBuildTask)),
106 })
107
108 const previewTask = createTask({
109   name: 'preview',
110   desc: 'Generate a preview site and launch a server to view it',
111   call: series(previewBuildTask, previewServeTask),
112 })
113
114 module.exports = exportTasks(
115   bundleTask,
116   cleanTask,
117   lintTask,
118   formatTask,
119   buildTask,
120   bundleTask,
121   bundlePackTask,
122   previewTask,
123   previewBuildTask,
124   packTask
125 )