123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import fs from 'node:fs';
- import { dirname, extname, resolve } from 'node:path';
- import { findUpSync } from 'find-up';
- function findUpPackageDir(pathname: string = '') {
- const file = findUpSync('package.json', {
- cwd: dirname(pathname),
- type: 'file',
- });
- return dirname(file || '');
- }
- function findFileByExtension(
- pathname: string = '',
- extensions: string[] = ['.ts'],
- ): string {
- if (extname(pathname)) {
- return pathname;
- }
- for (const ext of extensions) {
- const fullpath = resolve(pathname);
- if (fs.existsSync(fullpath + ext) && fs.statSync(fullpath + ext).isFile()) {
- return fullpath + ext;
- }
- }
- for (const ext of extensions) {
- const resultPath = resolve(pathname, `index${ext}`);
- if (fs.existsSync(resultPath)) {
- return resultPath;
- }
- }
- return pathname;
- }
- export { findFileByExtension, findUpPackageDir };
|