mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-05 19:41:42 +08:00
95 lines
2.4 KiB
TypeScript
95 lines
2.4 KiB
TypeScript
import { existsSync, readFileSync } from 'fs';
|
|
import { fileURLToPath, pathToFileURL } from 'url';
|
|
import { join, dirname, isAbsolute } from 'path';
|
|
|
|
function findRootDir(dir: string): string {
|
|
if (existsSync(join(dir, 'vant.config.mjs'))) {
|
|
return dir;
|
|
}
|
|
|
|
const parentDir = dirname(dir);
|
|
if (dir === parentDir) {
|
|
return dir;
|
|
}
|
|
|
|
return findRootDir(parentDir);
|
|
}
|
|
|
|
// Root paths
|
|
export const CWD = process.cwd();
|
|
export const ROOT = findRootDir(CWD);
|
|
export const ES_DIR = join(ROOT, 'es');
|
|
export const LIB_DIR = join(ROOT, 'lib');
|
|
export const DOCS_DIR = join(ROOT, 'docs');
|
|
export const VETUR_DIR = join(ROOT, 'vetur');
|
|
export const SITE_DIST_DIR = join(ROOT, 'site-dist');
|
|
export const VANT_CONFIG_FILE = join(ROOT, 'vant.config.mjs');
|
|
export const PACKAGE_JSON_FILE = join(ROOT, 'package.json');
|
|
|
|
// Relative paths
|
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
export const CJS_DIR = join(__dirname, '..', '..', 'cjs');
|
|
export const DIST_DIR = join(__dirname, '..', '..', 'dist');
|
|
export const CONFIG_DIR = join(__dirname, '..', 'config');
|
|
export const SITE_SRC_DIR = join(__dirname, '..', '..', 'site');
|
|
|
|
// Dist files
|
|
export const PACKAGE_ENTRY_FILE = join(DIST_DIR, 'package-entry.js');
|
|
export const PACKAGE_STYLE_FILE = join(DIST_DIR, 'package-style.css');
|
|
|
|
export const STYLE_DEPS_JSON_FILE = join(DIST_DIR, 'style-deps.json');
|
|
|
|
// Config files
|
|
export const POSTCSS_CONFIG_FILE = join(CJS_DIR, 'postcss.config.cjs');
|
|
export const JEST_CONFIG_FILE = join(CJS_DIR, 'jest.config.cjs');
|
|
|
|
export const SCRIPT_EXTS = [
|
|
'.js',
|
|
'.jsx',
|
|
'.vue',
|
|
'.ts',
|
|
'.tsx',
|
|
'.mjs',
|
|
'.cjs',
|
|
];
|
|
export const STYLE_EXTS = ['.css', '.less', '.scss'];
|
|
|
|
export function getPackageJson() {
|
|
const rawJson = readFileSync(PACKAGE_JSON_FILE, 'utf-8');
|
|
return JSON.parse(rawJson);
|
|
}
|
|
|
|
async function getVantConfigAsync() {
|
|
try {
|
|
// https://github.com/nodejs/node/issues/31710
|
|
// absolute file paths don't work on Windows
|
|
return (await import(pathToFileURL(VANT_CONFIG_FILE).href)).default;
|
|
} catch (err) {
|
|
return {};
|
|
}
|
|
}
|
|
|
|
const vantConfig = await getVantConfigAsync();
|
|
|
|
export function getVantConfig() {
|
|
return vantConfig;
|
|
}
|
|
|
|
function getSrcDir() {
|
|
const vantConfig = getVantConfig();
|
|
const srcDir = vantConfig.build?.srcDir;
|
|
|
|
if (srcDir) {
|
|
if (isAbsolute(srcDir)) {
|
|
return srcDir;
|
|
}
|
|
|
|
return join(ROOT, srcDir);
|
|
}
|
|
|
|
return join(ROOT, 'src');
|
|
}
|
|
|
|
export const SRC_DIR = getSrcDir();
|
|
export const STYLE_DIR = join(SRC_DIR, 'style');
|