mirror of
https://github.com/taskgenius/taskgenius-plugin.git
synced 2026-07-22 06:40:25 +00:00
- Add release-it with conventional changelog support - Configure automatic GitHub releases with asset uploads - Add custom Obsidian version bumper plugin - Add zip script for packaging releases - Update package.json with release scripts - Install required dependencies (jszip, globby, release-it plugins)
45 lines
No EOL
1.3 KiB
JavaScript
45 lines
No EOL
1.3 KiB
JavaScript
import { copyFile, rename, writeFile } from "fs/promises";
|
|
import { dirname, join } from "path";
|
|
|
|
/**
|
|
* @param {{ hotreload?: boolean, beta?:boolean }} config
|
|
* @returns {import("esbuild").Plugin}
|
|
*/
|
|
const obPlugin = (config = {}) => ({
|
|
name: "obsidian-plugin",
|
|
setup: (build) => {
|
|
const { hotreload = true, beta = false } = config;
|
|
build.onEnd(async () => {
|
|
const outDir = dirname(build.initialOptions.outfile ?? "main.js");
|
|
// fix default css output file name
|
|
const { outfile } = build.initialOptions;
|
|
try {
|
|
await rename(
|
|
outfile.replace(/\.js$/, ".css"),
|
|
outfile.replace(/main\.js$/, "styles.css"),
|
|
);
|
|
} catch (err) {
|
|
if (err.code !== "ENOENT") throw err;
|
|
}
|
|
|
|
// copy manifest.json to build dir
|
|
if (!beta) {
|
|
await copyFile("manifest.json", join(outDir, "manifest.json"));
|
|
} else {
|
|
await copyFile("manifest-beta.json", join(outDir, "manifest.json"));
|
|
}
|
|
|
|
// create .hotreload if it doesn't exist
|
|
if (hotreload) {
|
|
try {
|
|
await writeFile(join(outDir, ".hotreload"), "", { flag: "wx" });
|
|
} catch (err) {
|
|
if (err.code !== "EEXIST") throw err;
|
|
}
|
|
}
|
|
|
|
console.log("build finished");
|
|
});
|
|
},
|
|
});
|
|
export default obPlugin; |