Skip to content

Commit 1f1e518

Browse files
authored
refactor: using esm (#84)
1 parent f248841 commit 1f1e518

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+197
-244
lines changed

.changeset/cold-students-share.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@umijs/tnf': patch
3+
---
4+
5+
refactor: using esm

.commitlintrc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module.exports = {
1+
export default {
22
extends: ['@commitlint/config-conventional'],
33
rules: {
44
'type-enum': [2, 'always', [

.fatherrc.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { defineConfig } from 'father';
22

33
export default defineConfig({
4-
cjs: {
4+
esm: {
55
transformer: 'babel',
66
input: 'src',
77
output: 'dist',

.prettierrc.js

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
1-
module.exports = {
1+
export default {
22
printWidth: 80,
33
singleQuote: true,
44
trailingComma: 'all',
55
proseWrap: 'never',
66
plugins: ['@trivago/prettier-plugin-sort-imports'],
7-
importOrder: [
8-
'^react',
9-
'^@umijs/tnf/?',
10-
'^@?\\w',
11-
'^@/',
12-
'^[./]'
13-
],
7+
importOrder: ['^react', '^@umijs/tnf/?', '^@?\\w', '^@/', '^[./]'],
148
importOrderSortSpecifiers: true,
159
};

bin/tnf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ if (process.env.DEBUG_CONSOLE) {
1717
});
1818
}
1919

20-
require('../dist/cli');
20+
import('../dist/cli.js').catch(console.error);

compiled/gradient-string/index.d.ts

Lines changed: 0 additions & 77 deletions
This file was deleted.

compiled/gradient-string/index.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"tsc": "tsc --noEmit",
2828
"sync:docs": "tsx scripts/syncDocs.ts"
2929
},
30+
"type": "module",
3031
"bin": {
3132
"tnf": "bin/tnf.js"
3233
},

scripts/changeset.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { getPackages } from '@manypkg/get-packages';
2+
import { fileURLToPath } from 'url';
23
import 'zx/globals';
34

5+
const __filename = fileURLToPath(import.meta.url);
6+
const __dirname = path.dirname(__filename);
7+
48
const root = path.join(__dirname, '../');
59
const changesetConfig = path.join(__dirname, '../.changeset/config.json');
610

scripts/compile.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import 'zx/globals';
22

33
const files = {
4-
'gradient-string': {
5-
file: './node_modules/gradient-string/dist/index.js',
6-
dts: './node_modules/gradient-string/dist/index.d.ts',
7-
},
4+
// 'gradient-string': {
5+
// file: './node_modules/gradient-string/dist/index.js',
6+
// dts: './node_modules/gradient-string/dist/index.d.ts',
7+
// },
88
};
99

1010
const bundleWithMako = async (name: string) => {

src/ai/ai.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import * as buildTools from './tools_build';
2-
import * as configTools from './tools_config';
3-
import * as doctorTools from './tools_doctor';
4-
import * as generateTools from './tools_generate';
5-
import * as syncTools from './tools_sync';
1+
import * as buildTools from './tools_build.js';
2+
import * as configTools from './tools_config.js';
3+
import * as doctorTools from './tools_doctor.js';
4+
import * as generateTools from './tools_generate.js';
5+
import * as syncTools from './tools_sync.js';
66

77
const tools = {
88
...generateTools,

src/build.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import chokidar from 'chokidar';
22
import fs from 'fs';
33
import path from 'pathe';
4-
import { BundlerType, createBundler } from './bundler/bundler';
5-
import { doctor } from './doctor/doctor';
6-
import * as logger from './fishkit/logger';
7-
import { buildHtml } from './html';
8-
import { PluginHookType } from './plugin/plugin_manager';
9-
import { sync } from './sync/sync';
10-
import { type Context } from './types';
11-
import { Watcher } from './watch/watcher';
4+
import { BundlerType, createBundler } from './bundler/bundler.js';
5+
import { doctor } from './doctor/doctor.js';
6+
import * as logger from './fishkit/logger.js';
7+
import { buildHtml } from './html.js';
8+
import { PluginHookType } from './plugin/plugin_manager.js';
9+
import { sync } from './sync/sync.js';
10+
import { type Context } from './types/index.js';
11+
import { Watcher } from './watch/watcher.js';
1212

1313
export async function build({
1414
context,

src/bundler/bundler.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import express from 'express';
2-
import type { Config } from '../config/types';
3-
import type { Mode } from '../types';
2+
import type { Config } from '../config/types.js';
3+
import type { Mode } from '../types/index.js';
44

55
interface BundlerOpts {
66
bundler: BundlerType;

src/bundler/bundler_mako.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import assert from 'assert';
33
import proxy from 'express-http-proxy';
44
import { getPort } from 'get-port-please';
55
import { createProxyMiddleware } from 'http-proxy-middleware';
6-
import { Mode } from '../types';
7-
import type { Bundler } from './bundler';
6+
import { Mode } from '../types/index.js';
7+
import type { Bundler } from './bundler.js';
88

99
let _hmrPort: number;
1010
let _host: string;

src/bundler/bundler_webpack.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { Bundler } from './bundler';
1+
import type { Bundler } from './bundler.js';
22

33
export default {
44
build: async (_opts) => {

src/cli.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,23 @@
11
import assert from 'assert';
22
import fs from 'fs';
3+
import { instagram } from 'gradient-string';
34
import path from 'pathe';
45
import yargsParser from 'yargs-parser';
5-
import { instagram } from '../compiled/gradient-string';
6-
import { loadConfig } from './config/config';
7-
import { ConfigSchema } from './config/types';
8-
import { FRAMEWORK_NAME, MIN_NODE_VERSION } from './constants';
9-
import { debug, error, info, warn } from './fishkit/logger';
10-
import * as logger from './fishkit/logger';
11-
import { checkVersion, setNoDeprecation, setNodeTitle } from './fishkit/node';
12-
import { mock } from './funplugins/mock/mock';
13-
import { reactCompiler } from './funplugins/react_compiler/react_compiler';
14-
import { reactScan } from './funplugins/react_scan/react_scan';
15-
import { PluginHookType, PluginManager } from './plugin/plugin_manager';
16-
import { type Context, Mode } from './types';
6+
import { loadConfig } from './config/config.js';
7+
import { ConfigSchema } from './config/types.js';
8+
import { FRAMEWORK_NAME, MIN_NODE_VERSION } from './constants.js';
9+
import { debug, error, info, warn } from './fishkit/logger.js';
10+
import * as logger from './fishkit/logger.js';
11+
import {
12+
checkVersion,
13+
setNoDeprecation,
14+
setNodeTitle,
15+
} from './fishkit/node.js';
16+
import { mock } from './funplugins/mock/mock.js';
17+
import { reactCompiler } from './funplugins/react_compiler/react_compiler.js';
18+
import { reactScan } from './funplugins/react_scan/react_scan.js';
19+
import { PluginHookType, PluginManager } from './plugin/plugin_manager.js';
20+
import { type Context, Mode } from './types/index.js';
1721

1822
async function buildContext(cwd: string): Promise<Context> {
1923
const argv = yargsParser(process.argv.slice(2));

src/config/config.ts

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ import { updateConfig } from 'c12/update';
77
import fs from 'fs';
88
import path from 'pathe';
99
import pc from 'picocolors';
10-
import { CONFIG_FILE } from '../constants';
11-
import * as logger from '../fishkit/logger';
12-
import type { Context, Pkg } from '../types';
13-
import type { Config } from './types';
14-
import { ConfigSchema } from './types';
10+
import { fileURLToPath } from 'url';
11+
import { CONFIG_FILE } from '../constants.js';
12+
import * as logger from '../fishkit/logger.js';
13+
import type { Context, Pkg } from '../types/index.js';
14+
import type { Config } from './types.js';
15+
import { ConfigSchema } from './types.js';
1516

1617
interface ConfigOpts {
1718
cwd: string;
@@ -20,6 +21,10 @@ interface ConfigOpts {
2021
overrides?: Partial<Config>;
2122
}
2223

24+
async function resolveModule(id: string) {
25+
return fileURLToPath(await import.meta.resolve(id));
26+
}
27+
2328
export async function loadConfig(opts: ConfigOpts): Promise<Config> {
2429
const { config: rawConfig } = await loadC12Config(createLoadConfigOpts(opts));
2530
const result = ConfigSchema.safeParse(rawConfig);
@@ -28,17 +33,24 @@ export async function loadConfig(opts: ConfigOpts): Promise<Config> {
2833
}
2934
const config = result.data;
3035
const reactPath =
31-
resolveUserLib('react', opts.pkg || {}, opts.cwd) || resolveLib('react');
36+
resolveUserLib('react', opts.pkg || {}, opts.cwd) ||
37+
(await resolveLib('react'));
3238
const reactDomPath =
3339
resolveUserLib('react-dom', opts.pkg || {}, opts.cwd) ||
34-
resolveLib('react-dom');
40+
(await resolveLib('react-dom'));
3541
config.alias = [
3642
['@', path.join(opts.cwd, 'src')],
3743
['react', reactPath],
3844
['react-dom', reactDomPath],
39-
['@tanstack/react-router', resolveLib('@tanstack/react-router')],
40-
['@tanstack/router-devtools', resolveLib('@tanstack/router-devtools')],
41-
['click-to-react-component', require.resolve('click-to-react-component')],
45+
['@tanstack/react-router', await resolveLib('@tanstack/react-router')],
46+
[
47+
'@tanstack/router-devtools',
48+
await resolveLib('@tanstack/router-devtools'),
49+
],
50+
[
51+
'click-to-react-component',
52+
await resolveModule('click-to-react-component'),
53+
],
4254
...(config.alias || []),
4355
];
4456
config.mountElementId = config.mountElementId || 'root';
@@ -58,8 +70,8 @@ function resolveUserLib(lib: string, pkg: Record<string, any>, cwd: string) {
5870
return null;
5971
}
6072

61-
function resolveLib(lib: string) {
62-
return path.dirname(require.resolve(`${lib}/package.json`));
73+
async function resolveLib(lib: string) {
74+
return path.dirname(await resolveModule(`${lib}/package.json`));
6375
}
6476

6577
export function watchConfig(opts: ConfigOpts) {

src/config/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { z } from 'zod';
2-
import { PluginSchema } from '../plugin/types';
2+
import { PluginSchema } from '../plugin/types.js';
33

44
// why no use { configSchema } from '@tanstack/router-generator';
55
// configSchema has default

src/dev.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { build } from './build';
2-
import { createBundler } from './bundler/bundler';
3-
import { BundlerType } from './bundler/bundler';
4-
import { createServer } from './fishkit/server';
5-
import { buildHtml } from './html';
6-
import { PluginHookType } from './plugin/plugin_manager';
7-
import type { Context } from './types';
1+
import { build } from './build.js';
2+
import { createBundler } from './bundler/bundler.js';
3+
import { BundlerType } from './bundler/bundler.js';
4+
import { createServer } from './fishkit/server.js';
5+
import { buildHtml } from './html.js';
6+
import { PluginHookType } from './plugin/plugin_manager.js';
7+
import type { Context } from './types/index.js';
88

99
export async function dev({ context }: { context: Context }) {
1010
const devServer = context.config?.devServer || {};

src/doctor/build_src.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import path from 'pathe';
22
import { expect, test } from 'vitest';
3-
import { buildSrc } from './build_src';
3+
import { buildSrc } from './build_src.js';
44

55
test('buildSrc', async () => {
66
const entry = path.join(__dirname, 'fixtures/build_src/index.tsx');

src/doctor/build_src.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import assert from 'assert';
2-
import { CachedInputFileSystem, ResolverFactory } from 'enhanced-resolve';
2+
import enhancedResolve from 'enhanced-resolve';
33
import { init, parse } from 'es-module-lexer';
44
import esbuild from 'esbuild';
55
import fs from 'fs';
66
import path from 'pathe';
7-
import * as logger from '../fishkit/logger';
7+
import * as logger from '../fishkit/logger.js';
88

99
interface BuildSrcOptions {
1010
entry: string;
@@ -21,6 +21,7 @@ export async function buildSrc(opts: BuildSrcOptions) {
2121
const queue = [];
2222
queue.push(entry);
2323
await init;
24+
const { CachedInputFileSystem, ResolverFactory } = enhancedResolve;
2425
const resolver = ResolverFactory.createResolver({
2526
fileSystem: new CachedInputFileSystem(fs, 4000),
2627
extensions: ['.tsx', '.ts', '.jsx', '.js', '.json'],

src/doctor/check_dependency.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { expect, test } from 'vitest';
2-
import { checkUnsupportedPackages } from './check_dependency';
2+
import { checkUnsupportedPackages } from './check_dependency.js';
33

44
test('checkUnsupportedPackages() - should throw error for monaco-editor', () => {
55
expect(() =>

0 commit comments

Comments
 (0)