You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.5 KiB
73 lines
2.5 KiB
import adminXViteConfig from '@tryghost/admin-x-framework/vite';
|
|
import pkg from './package.json';
|
|
import {resolve} from 'path';
|
|
import fs from 'fs';
|
|
|
|
const GHOST_CARDS_PATH = resolve(__dirname, '../../ghost/core/core/frontend/src/cards');
|
|
|
|
const validateCardsDirectoryPlugin = (cardsPath) => {
|
|
return {
|
|
name: 'validate-cards-directory',
|
|
buildStart() {
|
|
const jsPath = resolve(cardsPath, 'js');
|
|
const cssPath = resolve(cardsPath, 'css');
|
|
|
|
if (!fs.existsSync(cardsPath)) {
|
|
throw new Error(`Ghost cards directory not found at: ${cardsPath}`);
|
|
}
|
|
|
|
if (!fs.existsSync(jsPath)) {
|
|
throw new Error(`Ghost cards JS directory not found at: ${jsPath}`);
|
|
}
|
|
|
|
if (!fs.existsSync(cssPath)) {
|
|
throw new Error(`Ghost cards CSS directory not found at: ${cssPath}`);
|
|
}
|
|
|
|
const jsFiles = fs.readdirSync(jsPath).filter(f => f.endsWith('.js'));
|
|
const cssFiles = fs.readdirSync(cssPath).filter(f => f.endsWith('.css'));
|
|
|
|
if (jsFiles.length === 0) {
|
|
throw new Error(`No JavaScript files found in Ghost cards directory: ${jsPath}`);
|
|
}
|
|
|
|
if (cssFiles.length === 0) {
|
|
throw new Error(`No CSS files found in Ghost cards directory: ${cssPath}`);
|
|
}
|
|
|
|
console.log(`✓ Found ${jsFiles.length} JS and ${cssFiles.length} CSS card files at: ${cardsPath}`);
|
|
}
|
|
};
|
|
};
|
|
|
|
export default (function viteConfig() {
|
|
const config = adminXViteConfig({
|
|
packageName: pkg.name,
|
|
entry: resolve(__dirname, 'src/index.tsx'),
|
|
overrides: {
|
|
test: {
|
|
include: [
|
|
'./test/unit/**/*',
|
|
'./src/**/*.test.ts'
|
|
]
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'@src': resolve(__dirname, './src'),
|
|
'@assets': resolve(__dirname, './src/assets'),
|
|
'@components': resolve(__dirname, './src/components'),
|
|
'@hooks': resolve(__dirname, './src/hooks'),
|
|
'@utils': resolve(__dirname, './src/utils'),
|
|
'@views': resolve(__dirname, './src/views'),
|
|
'@ghost-cards': GHOST_CARDS_PATH
|
|
}
|
|
},
|
|
plugins: [
|
|
validateCardsDirectoryPlugin(GHOST_CARDS_PATH)
|
|
]
|
|
}
|
|
});
|
|
|
|
return config;
|
|
});
|