mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2025-12-27 18:51:53 +00:00
106 lines
2.7 KiB
JavaScript
106 lines
2.7 KiB
JavaScript
/* Dependencies */
|
|
|
|
// Regular node dependencies
|
|
var child_process = require("child_process");
|
|
var fs = require("fs");
|
|
var path = require("path");
|
|
|
|
// Main compilers
|
|
var browserify = require("browserify");
|
|
var gulp = require("gulp");
|
|
|
|
// Extras
|
|
var del = require("del");
|
|
var concat = require("gulp-concat");
|
|
var flatten = require("gulp-flatten");
|
|
var rename = require("gulp-rename");
|
|
var buffer = require("vinyl-buffer");
|
|
var source = require("vinyl-source-stream");
|
|
|
|
/* Configuration */
|
|
const watch_targets = [
|
|
"./src/index.js",
|
|
"./src/css/*",
|
|
"./src/js/*",
|
|
"./src/html/**/*"
|
|
]
|
|
|
|
const output = {
|
|
"css": "bundle.css",
|
|
"dest": "./dist/",
|
|
"js": "bundle.js"
|
|
};
|
|
|
|
/* Clean out the dist directory to get rid of any old build artifacts. */
|
|
gulp.task("clean", function () {
|
|
del(output.dest + "*");
|
|
});
|
|
|
|
/* This uses browserify to compress every single require() into a single javascript file. */
|
|
gulp.task("browserify", ["clean"], function () {
|
|
var bundleStream = browserify("./src/index.js").bundle();
|
|
|
|
bundleStream
|
|
.pipe(source("index.js"))
|
|
.pipe(rename("bundle.js"))
|
|
.pipe(buffer())
|
|
.pipe(gulp.dest(output.dest))
|
|
});
|
|
|
|
|
|
/* CSS concatenation and output. */
|
|
gulp.task("css", ["clean"], function () {
|
|
gulp.src("./src/css/*.css")
|
|
.pipe(concat(output.css))
|
|
.pipe(buffer())
|
|
.pipe(gulp.dest(output.dest))
|
|
});
|
|
|
|
/* Basically just copy-paste the html files into the dest, but flatten the directory structure. */
|
|
gulp.task("etc", ["clean"], function () {
|
|
gulp.src("./src/html/**/*.html")
|
|
.pipe(flatten())
|
|
.pipe(buffer())
|
|
.pipe(gulp.dest(output.dest));
|
|
gulp.src("./src/img/*")
|
|
.pipe(buffer())
|
|
.pipe(gulp.dest(output.dest));
|
|
});
|
|
|
|
// This runs all of the other defined tasks on "gulp"
|
|
gulp.task("default", ["css", "etc", "browserify"])
|
|
|
|
// Autoreload
|
|
gulp.task("reload", ["default"], function() {
|
|
child_process.exec("reload.bat", function (err, stdout) {
|
|
if (err)
|
|
throw err;
|
|
|
|
var byond_cache = path.join(stdout.trim(), "BYOND", "cache");
|
|
var files = fs.readdirSync(byond_cache);
|
|
for (let file of files) {
|
|
let filepath = path.join(byond_cache, file);
|
|
let stats = fs.statSync(filepath)
|
|
if (file.startsWith("tmp") && stats.isDirectory()) {
|
|
var tmpFiles = fs.readdirSync(filepath);
|
|
if (tmpFiles.includes("bundle.js")) {
|
|
setTimeout(function () {transfer_files(filepath)}, 500);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
function transfer_files(target) {
|
|
console.log("transfer_files")
|
|
let filesToTransfer = fs.readdirSync(path.join(".", "dist"));
|
|
for (let file of filesToTransfer) {
|
|
console.log(file, path.join(target, file))
|
|
let filepath = path.join(".", "dist", file);
|
|
fs.createReadStream(filepath).pipe(fs.createWriteStream(path.join(target, file)))
|
|
}
|
|
}
|
|
|
|
gulp.task("watch", function () {
|
|
gulp.watch(watch_targets, ["reload"]);
|
|
}); |