mirror of
https://github.com/withastro/astro.git
synced 2024-12-16 21:46:22 -05:00
eb984559a8
Another change in snowpack@3 caused this bug. It's not actually a bug in snowpack. Previously snowpack was keeping its list of installed packages in a global cache. In 3.3 it stopped doing so. We were accidentally relying on that global cache to be able to resolve dynamic components. This fixes it so that we use the frontend snowpack instance to resolve dynamic components. Doing so means they are available when we try to load them.
31 lines
957 B
JavaScript
31 lines
957 B
JavaScript
const { readFile } = require('fs').promises;
|
|
|
|
// Snowpack plugins must be CommonJS :(
|
|
const transformPromise = import('./lib/compiler/index.js');
|
|
|
|
module.exports = function (snowpackConfig, { resolvePackageUrl, extensions, astroConfig } = {}) {
|
|
return {
|
|
name: 'snowpack-astro',
|
|
knownEntrypoints: [],
|
|
resolve: {
|
|
input: ['.astro', '.md'],
|
|
output: ['.js', '.css'],
|
|
},
|
|
async load({ filePath }) {
|
|
const { compileComponent } = await transformPromise;
|
|
const projectRoot = snowpackConfig.root;
|
|
const contents = await readFile(filePath, 'utf-8');
|
|
const compileOptions = {
|
|
astroConfig,
|
|
resolvePackageUrl,
|
|
extensions,
|
|
};
|
|
const result = await compileComponent(contents, { compileOptions, filename: filePath, projectRoot });
|
|
const output = {
|
|
'.js': result.contents,
|
|
};
|
|
if (result.css) output['.css'] = result.css;
|
|
return output;
|
|
},
|
|
};
|
|
};
|