@tistory-skin-previewer/astro
Version:
Astro integration for Tistory skin previewing
82 lines (76 loc) • 2.6 kB
JavaScript
'use strict';
var url = require('url');
var fs = require('fs');
// src/index.ts
function tistoryPreviewer() {
return {
name: "astro-tistory-skin-previewer",
hooks: {
"astro:config:setup": ({
command,
addMiddleware,
injectRoute,
updateConfig,
config
// injectScript,
}) => {
console.log("========= tistory-skin-previewer. By BlueNyang =========");
const skinEntry = url.fileURLToPath(
new URL("./src/pages/skin.astro", config.root)
);
if (command === "dev") {
if (fs.existsSync(skinEntry)) {
const skinContent = fs.readFileSync(skinEntry, "utf-8");
if (!skinContent.includes("export const prerender = false")) {
console.error(`
\u{1F6AB} \uD2F0\uC2A4\uD1A0\uB9AC \uC2A4\uD0A8 \uD504\uB9AC\uBDF0\uC5B4 \uC124\uC815 \uD544\uC694
src/pages/skin.astro \uD30C\uC77C\uC5D0 \uB2E4\uC74C \uAD6C\uBB38\uC744 \uCD94\uAC00\uD574\uC8FC\uC138\uC694:
---
export const prerender = false;
---
\uC774 \uC124\uC815\uC774 \uC5C6\uC73C\uBA74 \uB3D9\uC801 \uB77C\uC6B0\uD305\uC5D0\uC11C \uC624\uB958\uAC00 \uBC1C\uC0DD\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.
`);
console.warn("\u26A0\uFE0F prerender = false \uC124\uC815\uC744 \uD655\uC778\uD574\uC8FC\uC138\uC694!");
process.exit(1);
}
}
addMiddleware({
entrypoint: "@tistory-skin-previewer/astro/middleware",
order: "pre"
});
injectRoute({
pattern: "/[...slug]",
entrypoint: skinEntry
});
injectRoute({
pattern: "/",
entrypoint: skinEntry
});
}
updateConfig({
vite: {
build: {
rollupOptions: {
output: {
// 3. CSS 파일을 'style.css' 단일 파일로 빌드
assetFileNames: (assetInfo) => {
if (assetInfo.name?.endsWith(".css")) {
return "style.css";
}
return "assets/[name]-[hash][extname]";
}
}
}
},
// 3. 빌드 시 CSS 경로를 './style.css'로 변경
// command === 'build'일 때만 base를 변경하도록 조건 추가 가능
base: command === "build" ? "./" : "/"
}
});
}
}
};
}
module.exports = tistoryPreviewer;
//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map