-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathgulpfile.js
More file actions
158 lines (135 loc) · 4.36 KB
/
gulpfile.js
File metadata and controls
158 lines (135 loc) · 4.36 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
'use strict'
const { parallel, series, watch } = require('gulp')
const createTask = require('./gulp.d/lib/create-task')
const exportTasks = require('./gulp.d/lib/export-tasks')
const bundleName = 'ui'
const buildDir = process.env.CONTEXT === 'deploy-preview' ? 'public/dist' : 'build'
const previewSrcDir = 'preview-site-src'
const previewJpSrcDir = 'preview-site-src-jp'
const previewDestDir = 'public'
const srcDir = 'src'
const destDir = `${previewDestDir}/_`
const partialsDir = `${srcDir}/partials`
const { reload: livereload } = process.env.LIVERELOAD === 'true' ? require('gulp-connect') : {}
const serverConfig = {
host: '0.0.0.0',
port: 8080,
livereload,
}
const task = require('./gulp.d/tasks')
const glob = {
all: [srcDir, previewSrcDir],
css: [`${srcDir}/css/**/*.css`, `!${srcDir}/css/**/*.min.css`],
js: ['gulpfile.js', 'gulp.d/**/*.js', `${srcDir}/{helpers,js}/**/*.js`, `!${srcDir}/js/**/*.min.js`],
}
const updateTask = createTask({
name: 'update',
desc: 'Update header and footer partials from endpoint',
call: task.update(partialsDir),
})
const cleanTask = createTask({
name: 'clean',
desc: 'Clean files and folders generated by build',
call: task.remove(['build', 'public']),
})
const lintCssTask = createTask({
name: 'lint:css',
desc: 'Lint the CSS source files using stylelint (standard config)',
call: task.lintCss(glob.css),
})
const lintJsTask = createTask({
name: 'lint:js',
desc: 'Lint the JavaScript source files using eslint (JavaScript Standard Style)',
call: task.lintJs(glob.js),
})
const lintTask = createTask({
name: 'lint',
desc: 'Lint the CSS and JavaScript source files',
call: parallel(lintCssTask, lintJsTask),
})
const formatTask = createTask({
name: 'format',
desc: 'Format the JavaScript source files using prettify (JavaScript Standard Style)',
call: task.format(glob.js),
})
const buildTask = createTask({
name: 'build',
desc: 'Build and stage the UI assets for bundling',
call: task.build(
srcDir,
destDir,
process.argv.slice(2).some((name) => name.startsWith('preview'))
),
})
const bundleBuildTask = createTask({
name: 'bundle:build',
call: series(cleanTask, lintTask, buildTask),
})
const bundlePackTask = createTask({
name: 'bundle:pack',
desc: 'Create a bundle of the staged UI assets for publishing',
call: task.pack(destDir, buildDir, bundleName),
})
const bundleTask = createTask({
name: 'bundle',
desc: 'Clean, lint, build, and bundle the UI for publishing',
call: series(bundleBuildTask, bundlePackTask),
})
const buildPreviewPagesTask = createTask({
name: 'preview:build-pages',
call: task.buildPreviewPages(srcDir, previewSrcDir, previewDestDir, livereload),
})
const buildJpPreviewPagesTask = createTask({
name: 'preview:build-pages-jp',
call: task.buildPreviewPages(srcDir, previewJpSrcDir, previewDestDir, livereload),
})
const prTask = createTask({
name: 'pr',
desc: 'Create a PR in docs-site-playbook',
call: task.pr(process.env.TAG_NAME, process.env.GH_TOKEN_EMU, process.env.SECRET_KEY),
})
const previewBuildTask = createTask({
name: 'preview:build',
desc: 'Process and stage the UI assets and generate pages for the preview',
call: parallel(buildTask, buildPreviewPagesTask),
})
const previewBuildJpTask = createTask({
name: 'preview:build-jp',
desc: 'Process and stage the JP site UI assets and generate pages for the preview',
call: parallel(buildTask, buildJpPreviewPagesTask),
})
const previewServeTask = createTask({
name: 'preview:serve',
call: task.serve(previewDestDir, serverConfig, () => watch(glob.all, previewBuildTask)),
})
const previewServeJpTask = createTask({
name: 'preview:serve-jp',
call: task.serve(previewDestDir, serverConfig, () => watch(glob.all, previewBuildJpTask)),
})
const previewTask = createTask({
name: 'preview',
desc: 'Generate a preview site and launch a server to view it',
call: series(updateTask, previewBuildTask, previewServeTask),
})
const previewJpTask = createTask({
name: 'preview-jp',
desc: 'Generate a JP preview site and launch a server to view it',
call: series(updateTask, previewBuildJpTask, previewServeJpTask),
})
module.exports = exportTasks(
buildTask,
bundleTask,
bundlePackTask,
bundleBuildTask,
cleanTask,
formatTask,
lintTask,
prTask,
previewBuildJpTask,
previewBuildTask,
previewJpTask,
previewServeJpTask,
previewServeTask,
previewTask,
updateTask
)