rollup.config.mjs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import pluginTypeScript from "@rollup/plugin-typescript";
  2. import pluginNodeResolve from "@rollup/plugin-node-resolve";
  3. import pluginJson from "@rollup/plugin-json";
  4. import pluginHtml from "rollup-plugin-html";
  5. import pluginCss from "rollup-plugin-import-css";
  6. import pluginMarkdown from "@jackfranklin/rollup-plugin-markdown";
  7. import pluginExecute from "rollup-plugin-execute";
  8. import typescript from "typescript";
  9. const outputDir = "dist";
  10. const outputFile = getOutputFileName();
  11. /** @param {string} [suffix] */
  12. function getOutputFileName(suffix) {
  13. return `BetterYTM${suffix ?? ""}.user.js`;
  14. }
  15. export default (/**@type {import("./src/types").RollupArgs}*/ args) => (async () => {
  16. const mode = args["config-mode"] ?? (process.env.NODE_ENV === "production" ? "production" : "development");
  17. const branch = args["config-branch"] ?? "develop";
  18. const host = args["config-host"] ?? "github";
  19. const suffix = args["config-suffix"] ?? "";
  20. /** @type {import("rollup").RollupOptions} */
  21. const config = {
  22. input: "src/index.ts",
  23. plugins: [
  24. pluginNodeResolve({
  25. extensions: [".ts", ".mts", ".json"],
  26. }),
  27. pluginTypeScript({
  28. typescript,
  29. sourceMap: mode === "development",
  30. }),
  31. pluginJson(),
  32. pluginHtml(),
  33. pluginCss({
  34. output: "global.css",
  35. }),
  36. pluginMarkdown(),
  37. pluginExecute([
  38. `npm run --silent post-build -- --mode=${mode} --branch=${branch} --host=${host} --suffix=${suffix}`,
  39. ...(mode === "development" ? ["npm run --silent invisible -- \"npm run tr-progress\""] : []),
  40. ]),
  41. ],
  42. output: {
  43. file: `${outputDir}/${getOutputFileName(suffix)}`,
  44. format: "iife",
  45. sourcemap: mode === "development",
  46. compact: mode === "development",
  47. },
  48. onwarn(warning) {
  49. // ignore circular dependency warnings
  50. if(warning.code !== "CIRCULAR_DEPENDENCY") {
  51. const { message, ...rest } = warning;
  52. console.error(`\x1b[33m(!)\x1b[0m ${message}\n`, rest);
  53. }
  54. },
  55. };
  56. return config;
  57. })();
  58. export { outputDir, outputFile };