sveldoc
Version:
Readme-driven Development for building Svelte components
62 lines (61 loc) • 2.89 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.pluginReadme = void 0;
const node_fs_1 = __importDefault(require("node:fs"));
const node_path_1 = __importDefault(require("node:path"));
const prettier_1 = __importDefault(require("prettier"));
const fdir_1 = require("fdir");
const process_readme_1 = require("./process-readme");
const match_1 = require("./utils/match");
const pluginReadme = () => {
let filename = null;
return {
name: "vite:readme",
apply: "build",
config(config) {
var _a;
const files = new fdir_1.fdir()
.withFullPaths()
.crawl(node_path_1.default.resolve(process.cwd(), "examples"))
.sync().filter((path) => /\.svelte.html$/.test(path));
if (((_a = config.build) === null || _a === void 0 ? void 0 : _a.rollupOptions) === undefined) {
config.build.rollupOptions = {
input: {},
};
}
config.build.rollupOptions.input = Object.assign({ main: node_path_1.default.resolve(process.cwd(), "index.html") }, files.reduce((files, file) => (Object.assign(Object.assign({}, files), { [node_path_1.default.parse(file).name]: file })), {}));
},
load(id) {
if (match_1.match.readmeFile(id)) {
filename = id;
return undefined;
}
},
writeBundle() {
return __awaiter(this, void 0, void 0, function* () {
if (!filename)
return;
const source = node_fs_1.default.readFileSync(filename, "utf-8");
const transformed = yield (0, process_readme_1.processReadme)({
source,
filename,
noEval: true,
});
node_fs_1.default.writeFileSync(filename, prettier_1.default.format(transformed.code, { parser: "markdown" }));
});
},
};
};
exports.pluginReadme = pluginReadme;
;