-
Notifications
You must be signed in to change notification settings - Fork 3
/
gulpfile.mjs
60 lines (46 loc) · 2.27 KB
/
gulpfile.mjs
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
import gulp from "gulp";
import { $ } from "zx";
gulp.task("clean:docs", () => $`find docs/* -not \\( -name 'index.html' -or -name 'tsutils_logo.png' -or -name '_footer.md' -or -name 'brand.png' -or -name 'bui4.css' -or -name 'prism.css' \\) -delete`);
gulp.task("build:docs", async () => {
await $`npx typedoc \
--name 'Docs' \
--plugin typedoc-plugin-markdown \
--plugin typedoc-plugin-merge-modules \
--out typedoc-dist \
--hideMembersSymbol \
--hideBreadcrumbs \
--hideInPageTOC \
--mergeModulesMergeMode module-category \
--entryPointStrategy resolve \
--entryPoints src/index.ts`;
await $`cp readme.md docs/`;
await $`cat typedoc-dist/modules.md >> docs/README.md`;
await $`cat typedoc-dist/classes/* >> docs/README.md`;
await $`rm typedoc-dist/README.md`;
await $`mv typedoc-dist/* docs/`;
});
gulp.task("deploy", async () => {
await $`NPM_TOKEN=$(yarn config get _authToken) npm publish`;
await $`git push origin $(git describe --tags)`;
await $`git push origin main`;
});
gulp.task("build:lib", () => $`tsc`);
gulp.task("check:lint", () => $`eslint .`);
gulp.task("check:formatting", () => $`prettier -c src/*`);
gulp.task("fix:formatting", () => $`prettier -w src/*`);
gulp.task("check:quality", gulp.parallel("check:lint", "check:formatting"));
gulp.task("clean:tags", async () => {
await $`git tag -d $(git tag -l)`;
await $`git fetch --tags`;
});
gulp.task("check:branch", async () => {
const branch = (await $`git rev-parse --abbrev-ref HEAD`).toString().trim();
if (branch != "main") throw "!! on branch " + branch + ", but must be on main to deploy";
});
gulp.task("predeploy", gulp.series(gulp.parallel("check:quality", "check:branch", "build:lib"), "clean:tags"));
gulp.task("version:patch", () => $`yarn version --patch`);
gulp.task("version:minor", () => $`yarn version --minor`);
gulp.task("version:major", () => $`yarn version --major`);
gulp.task("release:patch", gulp.series("predeploy", "version:patch", "deploy"));
gulp.task("release:minor", gulp.series("predeploy", "version:minor", "deploy"));
gulp.task("release:major", gulp.series("predeploy", "version:major", "deploy"));