gulpfile.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import * as fs from "fs";
  2. import { watch, dest, src, series } from "gulp";
  3. import * as nodemon from "gulp-nodemon";
  4. import * as ts from "gulp-typescript";
  5. import * as rename from "gulp-rename";
  6. const jest = require("gulp-jest").default;
  7. const tsProject = ts.createProject("tsconfig.json");
  8. export function test() {
  9. // Unlike the jest CLI tool, gulp-jest does not automatically set process.env.NODE_ENV to be test
  10. process.env.NODE_ENV = "test";
  11. if (!fs.existsSync("src/test/.env.test")) {
  12. src(".env.example")
  13. .pipe(rename(".env.test"))
  14. .pipe(dest("src/test"));
  15. }
  16. return src("src/test").pipe(
  17. jest({
  18. detectOpenHandles: true,
  19. coverage: true
  20. })
  21. );
  22. }
  23. function createConf(cb: any) {
  24. if (!fs.existsSync("dist/.env")) {
  25. return src(".env.example")
  26. .pipe(rename(".env"))
  27. .pipe(dest("dist"));
  28. }
  29. cb();
  30. }
  31. function copyDocs() {
  32. return src("src/docs/**/*.yml").pipe(dest("dist/docs"));
  33. }
  34. function transpile() {
  35. process.env.NODE_ENV = "dev";
  36. return src(["src/**/*.ts", "!src/**/*.test.ts"])
  37. .pipe(tsProject())
  38. .pipe(dest("dist"));
  39. }
  40. function livereload(cb: any) {
  41. process.env.NODE_ENV = "dev";
  42. nodemon({ script: "dist/index.js", ext: "js, yml", delay: 1000, done: cb });
  43. watch(["src/**/*.ts", "!**/*.test.ts"], transpile);
  44. watch("src/**/*.test.ts", test);
  45. watch("src/docs/**/*.yml", copyDocs);
  46. }
  47. export default series(createConf, transpile, copyDocs, livereload);
  48. export const dev = series(createConf, transpile, copyDocs, livereload);
  49. export const build = series(test, transpile, createConf, copyDocs);