Skip to content

Commit 910e422

Browse files
committed
Improve(Cross Import): Use jiti to improve reliability
1 parent 015b2e7 commit 910e422

File tree

4 files changed

+40
-48
lines changed

4 files changed

+40
-48
lines changed

packages/cross-import/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"dist"
6060
],
6161
"dependencies": {
62+
"jiti": "^1.21.0",
6263
"sucrase": "^3.35.0"
6364
},
6465
"devDependencies": {

packages/cross-import/src/index.ts

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
import { Transform, transform } from 'sucrase'
2-
import { Module, createRequire } from 'module'
3-
import { readFileSync } from 'fs'
4-
import { runInThisContext } from 'vm'
5-
import { dirname, join, parse } from 'path'
1+
import { transform } from 'sucrase'
2+
import jiti from 'jiti/dist/jiti'
63

74
export default function crossImport(modulePath: string): any {
85
if (!modulePath) return
@@ -21,27 +18,18 @@ export default function crossImport(modulePath: string): any {
2118
console.error(error)
2219
console.log('[cross-import] fall back to sucrase runtime transform:', modulePath)
2320
}
24-
const parsedModulePath = parse(modulePath)
25-
const sourceCode = readFileSync(modulePath, 'utf8').toString()
26-
const transforms: Transform[] = ['imports']
27-
if (parsedModulePath.ext === '.ts') {
28-
transforms.unshift('typescript')
29-
}
30-
const { code: moduleCode } = transform(sourceCode, {
31-
transforms,
32-
filePath: modulePath
33-
})
34-
const filename = join(parsedModulePath.dir, parsedModulePath.name + '.js')
35-
const mod = new Module(filename, module)
36-
mod.filename = filename
37-
mod.path = dirname(filename)
38-
mod.require = createRequire(filename)
39-
// Compile wrapped script
40-
const compiledModule = runInThisContext(Module.wrap(moduleCode), {
41-
filename
42-
})
43-
compiledModule(mod.exports, mod.require, mod, mod.filename, dirname(mod.filename))
44-
mod.loaded = true
45-
return mod.exports
21+
return jiti(__filename, {
22+
interopDefault: true,
23+
cache: false,
24+
debug: !!process.env.DEBUG,
25+
onError(error) {
26+
throw error
27+
},
28+
transform: (options) => {
29+
return transform(options.source, {
30+
transforms: ['imports', 'typescript'],
31+
})
32+
}
33+
})(modulePath)
4634
}
4735
}

packages/explore-config/tests/test.ts

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,41 +3,41 @@ import exploreConfig from '../src'
33
it('read .js config', () => {
44
const config = exploreConfig('../fixtures/master.css', { cwd: __dirname, extensions: ['js'] })
55
expect(config).toEqual({
6-
// extends: [
7-
// {
8-
// styles: {
9-
// card: 'inline-flex'
10-
// }
11-
// }
12-
// ],
6+
extends: [
7+
{
8+
styles: {
9+
card: 'inline-flex'
10+
}
11+
}
12+
],
1313
colors: { primary: '#ff0' }
1414
})
1515
})
1616

1717
it('read .ts config', () => {
1818
const config = exploreConfig('../fixtures/master.css', { cwd: __dirname, extensions: ['ts'] })
1919
expect(config).toEqual({
20-
// extends: [
21-
// {
22-
// styles: {
23-
// card: 'inline-flex'
24-
// }
25-
// }
26-
// ],
20+
extends: [
21+
{
22+
styles: {
23+
card: 'inline-flex'
24+
}
25+
}
26+
],
2727
colors: { primary: '#ff0' }
2828
})
2929
})
3030

3131
it('read .mjs config', () => {
3232
const config = exploreConfig('../fixtures/master.css', { cwd: __dirname, extensions: ['mjs'] })
3333
expect(config).toEqual({
34-
// extends: [
35-
// {
36-
// styles: {
37-
// card: 'inline-flex'
38-
// }
39-
// }
40-
// ],
34+
extends: [
35+
{
36+
styles: {
37+
card: 'inline-flex'
38+
}
39+
}
40+
],
4141
colors: { primary: '#ff0' }
4242
})
4343
})

pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)