mirror of
https://github.com/wassname/talk.git
synced 2026-06-27 19:17:09 +08:00
85 lines
2.3 KiB
JavaScript
85 lines
2.3 KiB
JavaScript
const path = require("path");
|
|
const json = require("comment-json");
|
|
const fs = require("fs");
|
|
const del = require("del");
|
|
const gulp = require("gulp");
|
|
const ts = require("gulp-typescript");
|
|
const sourcemaps = require("gulp-sourcemaps");
|
|
const babel = require("gulp-babel");
|
|
const generateTypescriptTypes = require("./scripts/generateSchemaTypes");
|
|
const _ = require("lodash");
|
|
|
|
// Parse the tsconfig.json file (which contains comments).
|
|
const tsconfig = json.parse(fs.readFileSync("./src/tsconfig.json").toString());
|
|
|
|
// Create the typescript project.
|
|
const tsProject = ts.createProject("./src/tsconfig.json");
|
|
|
|
const resolveDistFolder = (...paths) => "./" + path.join("dist", ...paths);
|
|
|
|
gulp.task("clean", () => del([resolveDistFolder()]));
|
|
|
|
gulp.task("server:schema", () => generateTypescriptTypes());
|
|
|
|
gulp.task("server:scripts", () =>
|
|
gulp
|
|
.src(
|
|
[
|
|
"./src/**/*.ts",
|
|
"./src/**/.*.ts",
|
|
// Exclude client files from this, that's for webpack.
|
|
"!./src/core/client/**/*.ts",
|
|
"!./src/core/client/**/.*.ts",
|
|
],
|
|
{ base: "src" }
|
|
)
|
|
.pipe(sourcemaps.init())
|
|
.pipe(tsProject())
|
|
.pipe(
|
|
babel({
|
|
plugins: [
|
|
[
|
|
"module-resolver",
|
|
{
|
|
root: [resolveDistFolder()],
|
|
alias: _.reduce(
|
|
tsconfig.compilerOptions.paths,
|
|
(alias, [pathGlob], prefixBlob) => ({
|
|
...alias,
|
|
[prefixBlob.replace(/\/\*/g, "")]: pathGlob
|
|
.replace(/\/\*/g, "")
|
|
.replace(/^\./g, resolveDistFolder()),
|
|
}),
|
|
{}
|
|
),
|
|
},
|
|
],
|
|
],
|
|
})
|
|
)
|
|
.pipe(sourcemaps.write(".", { sourceRoot: "../src" }))
|
|
.pipe(gulp.dest(resolveDistFolder()))
|
|
);
|
|
|
|
gulp.task("server:static", () =>
|
|
gulp
|
|
.src(["./src/core/server/**/*", "!./src/core/server/**/*.ts"])
|
|
.pipe(gulp.dest(resolveDistFolder() + "/core/server"))
|
|
);
|
|
|
|
gulp.task("locales", () =>
|
|
gulp
|
|
.src(["./src/locales/**/*"])
|
|
.pipe(gulp.dest(resolveDistFolder() + "/locales"))
|
|
);
|
|
|
|
gulp.task(
|
|
"server",
|
|
gulp.series(
|
|
"server:schema",
|
|
gulp.parallel("server:scripts", "server:static", "locales")
|
|
)
|
|
);
|
|
|
|
gulp.task("default", gulp.series("clean", "server"));
|