@esengine/pathfinding
Version:
寻路算法库,支持A*、广度优先等算法,适用于Cocos Creator、Laya等游戏引擎
137 lines (123 loc) • 3.73 kB
JavaScript
'use strict';
const gulp = require("gulp");
const terser = require('gulp-terser');
const inject = require("gulp-inject-string");
const ts = require('gulp-typescript');
const concat = require('gulp-concat');
const { deleteAsync } = require('del');
const tsProject = ts.createProject('tsconfig.json');
// 清理构建目录
function clean() {
return deleteAsync(['bin/**/*']);
}
// 构建完整版本(包含所有算法)
function buildComplete() {
return tsProject.src()
.pipe(tsProject())
.js.pipe(concat('pathfinding.js'))
.pipe(inject.prepend('// 高性能寻路算法库 - 完整版 v1.0.1\n'))
.pipe(gulp.dest('./bin'))
.pipe(terser({
compress: {
drop_console: true,
drop_debugger: true
},
mangle: {
toplevel: true
}
}))
.pipe(concat('pathfinding.min.js'))
.pipe(gulp.dest('./bin'));
}
// 构建A*算法模块
function buildAStar() {
const astarProject = ts.createProject('tsconfig.json', {
include: [
"src/Types/**/*",
"src/Utils/**/*",
"src/AI/Pathfinding/AStar/**/*"
]
});
return astarProject.src()
.pipe(astarProject())
.js.pipe(concat('astar.js'))
.pipe(inject.prepend('// A*寻路算法模块 v1.0.1\n'))
.pipe(gulp.dest('./bin/modules'))
.pipe(terser({
compress: {
drop_console: true,
drop_debugger: true
},
mangle: {
toplevel: true
}
}))
.pipe(concat('astar.min.js'))
.pipe(gulp.dest('./bin/modules'));
}
// 构建广度优先算法模块
function buildBFS() {
const bfsProject = ts.createProject('tsconfig.json', {
include: [
"src/Types/**/*",
"src/Utils/**/*",
"src/AI/Pathfinding/BreadthFirst/**/*"
]
});
return bfsProject.src()
.pipe(bfsProject())
.js.pipe(concat('breadth-first.js'))
.pipe(inject.prepend('// 广度优先搜索算法模块 v1.0.1\n'))
.pipe(gulp.dest('./bin/modules'))
.pipe(terser({
compress: {
drop_console: true,
drop_debugger: true
},
mangle: {
toplevel: true
}
}))
.pipe(concat('breadth-first.min.js'))
.pipe(gulp.dest('./bin/modules'));
}
// 构建类型定义文件
function buildDts() {
return tsProject.src()
.pipe(tsProject())
.dts.pipe(concat('pathfinding.d.ts'))
.pipe(gulp.dest('./bin'));
}
// 复制包文件
function copyPackageFiles() {
return gulp.src(['package.json', 'README.md'])
.pipe(gulp.dest('./bin'));
}
// 创建模块目录
function createModuleDir() {
return gulp.src('*.*', {read: false})
.pipe(gulp.dest('./bin/modules'));
}
function build() {
return gulp.src('bin/**/*');
}
// 导出任务
exports.clean = clean;
exports.buildComplete = buildComplete;
exports.buildAStar = buildAStar;
exports.buildBFS = buildBFS;
exports.buildDts = buildDts;
exports.copyPackageFiles = copyPackageFiles;
exports.createModuleDir = createModuleDir;
// 构建所有模块
exports.buildModules = gulp.series(createModuleDir, gulp.parallel(buildAStar, buildBFS));
// 完整构建
exports.build = gulp.series(
clean,
buildComplete,
buildDts,
copyPackageFiles,
exports.buildModules,
build
);
exports.default = exports.build;