1
0
Fork 0
mirror of https://github.com/Eggbertx/gochan.git synced 2025-08-02 10:56:25 -07:00

Replace Gulp with Parcel for js bundling

This commit is contained in:
Eggbertx 2022-03-24 16:05:50 -07:00
parent 1848e2f073
commit d423398eff
10 changed files with 6252 additions and 13436 deletions

1
.gitignore vendored
View file

@ -16,3 +16,4 @@ __debug_bin
node_modules
/frontend/coverage
/frontend/tests/coverage
.parcel-cache

View file

@ -33,9 +33,9 @@ release_files = (
"html/hittheroad.mp3",
"html/hittheroad.ogg",
"html/hittheroad.wav",
"html/js/maps",
"html/js/maps/gochan.js.map",
"html/js/",
"html/js/gochan.js",
"html/js/gochan.js.map",
"html/notbanned.png",
"html/permabanned.jpg",
"sample-configs",
@ -234,7 +234,7 @@ def install(prefix="/usr", document_root="/srv/gochan", js_only=False, css_only=
if path.exists(js_install_dir) is False:
fs_action("mkdir", js_install_dir)
fs_action("copy", "html/js/gochan.js", path.join(js_install_dir, "gochan.js"))
fs_action("copy", "html/js/maps", path.join(js_install_dir, "maps"))
fs_action("copy", "html/js/gochan.js.map", path.join(js_install_dir, "gochan.js.map"))
done = True
if css_only:
print("Installing gochan CSS files")
@ -293,13 +293,16 @@ def install(prefix="/usr", document_root="/srv/gochan", js_only=False, css_only=
"systemctl start gochan.service")
def js(nominify=False, watch=False):
def js(watch=False):
print("Transpiling JS")
npm_cmd = "npm --prefix frontend/ run build"
if nominify is False:
npm_cmd += "-minify"
fs_action("mkdir", "html/js/")
fs_action("delete", "html/js/gochan.js")
fs_action("delete", "html/js/gochan.js.map")
npm_cmd = "npm --prefix frontend/ run"
if watch:
npm_cmd += "-watch"
npm_cmd += " watch"
else:
npm_cmd += " build"
status = run_cmd(npm_cmd, True, True, True)[1]
if status != 0:
@ -412,16 +415,12 @@ if __name__ == "__main__":
args = parser.parse_args()
install(args.prefix, args.documentroot, args.js, args.css, args.templates)
elif action == "js":
parser.add_argument(
"--nominify",
action="store_true",
help="Don't minify gochan.js")
parser.add_argument(
"--watch",
action="store_true",
help="automatically rebuild when you change a file (keeps running)")
args = parser.parse_args()
js(args.nominify, args.watch)
js(args.watch)
elif action == "release":
parser.add_argument(
"--all",

9
frontend/.parcelrc Normal file
View file

@ -0,0 +1,9 @@
{
// this is here since parcel and babel don't seem to get along
"extends": "@parcel/config-default",
"transformers": {
"*.js": [
"@parcel/transformer-js"
]
}
}

View file

@ -1,50 +0,0 @@
import browserify from "browserify";
import buffer from "vinyl-buffer"
import fancy_log from "fancy-log";
import glob from "glob";
import gulp from "gulp";
import stdio from "stdio";
import uglify from "gulp-uglify";
import source from "vinyl-source-stream";
import watchify from "watchify";
import sourcemaps from 'gulp-sourcemaps';
const args = stdio.getopt({
"watch": {key: "w", description: "Automatically rebuild when you change a file"},
"minify": {key: "m", description: "minify generated gochan.js"}
});
let builder = browserify({
entries: glob.sync("src/**/*.js")
});
function buildTask(minify) {
fancy_log("Building gochan frontend");
let babelOptions = {
presets: ["@babel/preset-env"],
comments: false
}
let out = builder.transform("babelify", babelOptions)
.bundle()
.pipe(source("gochan.js"))
.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
if(minify)
out = out.pipe(uglify());
return out
.pipe(sourcemaps.write('./maps/'))
.pipe(gulp.dest("../html/js/", {overwrite: true}));
}
gulp.task("default", () => {
if(args.watch) {
builder = watchify(builder);
builder.on("update", () => {
return buildTask(args.minify)
});
}
return buildTask(args.minify);
});

19357
frontend/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,46 +1,37 @@
{
"name": "gochan.js",
"version": "2.11.1",
"version": "3.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jest --verbose",
"build": "gulp",
"build-minify": "gulp -m",
"build-watch": "gulp -w",
"build-minify-watch": "gulp -m -w"
"type": "module",
"source": "src/gochan.js",
"main": "../html/js/gochan.js",
"targets": {
"frontend": {
"source": "src/gochan.js",
"distDir": "../html/js/"
}
},
"browserslist": "> 0.5%, last 2 versions, not dead",
"private": true,
"scripts": {
"build": "parcel build --no-cache",
"watch": "parcel watch",
"test": "jest --verbose"
},
"keywords": [],
"author": "Eggbertx",
"license": "BSD-2-Clause",
"dependencies": {
"core-js": "^3.20.1",
"gulp-sourcemaps": "^2.6.5",
"jquery": "^3.5.1",
"jqueryui": "^1.11.1",
"regenerator-runtime": "^0.13.9"
"jqueryui": "^1.11.1"
},
"devDependencies": {
"@babel/cli": "^7.10.1",
"@babel/core": "^7.10.2",
"@babel/preset-env": "^7.10.2",
"@babel/register": "^7.10.1",
"@babel/preset-env": "^7.16.11",
"@jest/globals": "^27.4.6",
"@types/jquery": "^3.3.38",
"@types/jqueryui": "^1.12.13",
"babel-jest": "^27.4.6",
"babelify": "^10.0.0",
"browserify": "^16.5.0",
"fancy-log": "^1.3.3",
"gulp": "^4.0.2",
"gulp-babel": "^8.0.0",
"gulp-uglify": "^3.0.2",
"babel-jest": "^27.5.1",
"jest": "^27.4.7",
"regenerator-runtime": "^0.13.9",
"stdio": "^0.2.7",
"vinyl-buffer": "^1.0.1",
"vinyl-source-stream": "^2.0.0",
"watchify": "^4.0.0",
"parcel": "^2.4.0",
"yargs-parser": ">=5.0.0-security.0"
}
}

View file

@ -1,7 +1,3 @@
// needed for Promise stuff
import "core-js/stable";
import "regenerator-runtime/runtime";
import { handleActions, handleKeydown } from "./boardevents";
import { initCookies, getCookie } from "./cookies";
import { initStaff, createStaffMenu } from "./manage";

File diff suppressed because one or more lines are too long

1
html/js/gochan.js.map Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long