mirror of
https://github.com/withastro/astro.git
synced 2025-02-17 22:44:24 -05:00
* Fix for #9673 * 🦋 add changeset file * Update breezy-plants-smoke.md Co-authored-by: Florian Lefebvre <contact@florian-lefebvre.dev> * ⚡️ simplified normalizeConfigPath --------- Co-authored-by: Florian Lefebvre <contact@florian-lefebvre.dev>
This commit is contained in:
parent
457e8b6422
commit
5d7db1dbb0
2 changed files with 25 additions and 11 deletions
5
.changeset/breezy-plants-smoke.md
Normal file
5
.changeset/breezy-plants-smoke.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
"astro": patch
|
||||
---
|
||||
|
||||
Fixes types generation from Content Collections config file
|
|
@ -333,6 +333,22 @@ function invalidateVirtualMod(viteServer: ViteDevServer) {
|
|||
viteServer.moduleGraph.invalidateModule(virtualMod);
|
||||
}
|
||||
|
||||
/**
|
||||
* Takes the source (`from`) and destination (`to`) of a config path and
|
||||
* returns a normalized relative version:
|
||||
* - If is not relative, it adds `./` to the beginning.
|
||||
* - If it ends with `.ts`, it replaces it with `.js`.
|
||||
* - It adds `""` around the string.
|
||||
* @param from Config path source.
|
||||
* @param to Config path destination.
|
||||
* @returns Normalized config path.
|
||||
*/
|
||||
function normalizeConfigPath(from: string, to: string) {
|
||||
const configPath = path.relative(from, to).replace(/\.ts$/, '.js');
|
||||
|
||||
return `"${isRelativePath(configPath) ? '' : './'}${configPath}"` as const;
|
||||
}
|
||||
|
||||
async function writeContentFiles({
|
||||
fs,
|
||||
contentPaths,
|
||||
|
@ -415,18 +431,11 @@ async function writeContentFiles({
|
|||
fs.mkdirSync(contentPaths.cacheDir, { recursive: true });
|
||||
}
|
||||
|
||||
let configPathRelativeToCacheDir = normalizePath(
|
||||
path.relative(contentPaths.cacheDir.pathname, contentPaths.config.url.pathname)
|
||||
const configPathRelativeToCacheDir = normalizeConfigPath(
|
||||
contentPaths.cacheDir.pathname,
|
||||
contentPaths.config.url.pathname
|
||||
);
|
||||
|
||||
if (!isRelativePath(configPathRelativeToCacheDir))
|
||||
configPathRelativeToCacheDir = './' + configPathRelativeToCacheDir;
|
||||
|
||||
// Remove `.ts` from import path
|
||||
if (configPathRelativeToCacheDir.endsWith('.ts')) {
|
||||
configPathRelativeToCacheDir = configPathRelativeToCacheDir.replace(/\.ts$/, '');
|
||||
}
|
||||
|
||||
for (const contentEntryType of contentEntryTypes) {
|
||||
if (contentEntryType.contentModuleTypes) {
|
||||
typeTemplateContent = contentEntryType.contentModuleTypes + '\n' + typeTemplateContent;
|
||||
|
@ -436,7 +445,7 @@ async function writeContentFiles({
|
|||
typeTemplateContent = typeTemplateContent.replace('// @@DATA_ENTRY_MAP@@', dataTypesStr);
|
||||
typeTemplateContent = typeTemplateContent.replace(
|
||||
"'@@CONTENT_CONFIG_TYPE@@'",
|
||||
contentConfig ? `typeof import(${JSON.stringify(configPathRelativeToCacheDir)})` : 'never'
|
||||
contentConfig ? `typeof import(${configPathRelativeToCacheDir})` : 'never'
|
||||
);
|
||||
|
||||
await fs.promises.writeFile(
|
||||
|
|
Loading…
Add table
Reference in a new issue