Skip to content

Commit 160b340

Browse files
authored
Add support for baseUrl in tsconfig/jsconfig for CRA (codesandbox#2296)
* Add support for baseUrl in tsconfig/jsconfig * Fix checking on configuration * Make stringify prettier
1 parent 1eb8629 commit 160b340

File tree

4 files changed

+48
-7
lines changed

4 files changed

+48
-7
lines changed

packages/app/src/sandbox/eval/manager.ts

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,23 @@ export default class Manager {
557557
.replace(/.*\{\{sandboxRoot\}\}/, '');
558558
}
559559

560+
getModuleDirectories() {
561+
const baseTSCompilerConfig = [
562+
this.configurations.typescript,
563+
this.configurations.jsconfig,
564+
].find(config => config && config.generated !== true);
565+
566+
const baseUrl =
567+
baseTSCompilerConfig &&
568+
baseTSCompilerConfig.parsed &&
569+
baseTSCompilerConfig.parsed.compilerOptions &&
570+
baseTSCompilerConfig.parsed.compilerOptions.baseUrl;
571+
572+
return ['node_modules', baseUrl, this.envVariables.NODE_PATH].filter(
573+
Boolean
574+
);
575+
}
576+
560577
// ALWAYS KEEP THIS METHOD IN SYNC WITH SYNC VERSION
561578
async resolveModuleAsync(
562579
path: string,
@@ -598,10 +615,7 @@ export default class Manager {
598615
isFile: this.isFile,
599616
readFileSync: this.readFileSync,
600617
packageFilter,
601-
moduleDirectory: [
602-
'node_modules',
603-
this.envVariables.NODE_PATH,
604-
].filter(Boolean),
618+
moduleDirectory: this.getModuleDirectories(),
605619
},
606620
(err, foundPath) => {
607621
if (err) {
@@ -702,9 +716,7 @@ export default class Manager {
702716
isFile: this.isFile,
703717
readFileSync: this.readFileSync,
704718
packageFilter,
705-
moduleDirectory: ['node_modules', this.envVariables.NODE_PATH].filter(
706-
Boolean
707-
),
719+
moduleDirectory: this.getModuleDirectories(),
708720
});
709721

710722
this.cachedPaths[dirredPath][path] = resolvedPath;

packages/common/src/templates/configuration/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import netlifyConfig from './netlify';
77
import angularCli from './angular-cli';
88
import angularJSON from './angular-json';
99
import tsconfig from './tsconfig';
10+
import jsconfig from './jsconfig';
1011
import babelTranspiler from './babel-transpiler';
1112
import customCodeSandbox from './custom-codesandbox';
1213

@@ -22,6 +23,7 @@ const configs = {
2223
customCodeSandbox,
2324
nowConfig,
2425
netlifyConfig,
26+
jsconfig,
2527
};
2628

2729
export default configs;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { ConfigurationFile } from '../types';
2+
3+
const config: ConfigurationFile = {
4+
title: 'jsconfig.json',
5+
type: 'jsconfig',
6+
description:
7+
'Configuration for how the editor (and sometimes the bundler) reads and parses JavaScript.',
8+
moreInfoUrl: 'https://code.visualstudio.com/docs/languages/jsconfig',
9+
10+
getDefaultCode: (
11+
template: string,
12+
resolveModule: (path: string) => { code: string } | undefined
13+
) => JSON.stringify({ compilerOptions: { baseUrl: '.' } }, null, 2),
14+
15+
schema:
16+
'https://raw.githubusercontent.com/SchemaStore/schemastore/master/src/schemas/json/jsconfig.json',
17+
18+
partialSupportDisclaimer: `Only \`compilerOptions.baseUrl\` field is supported.`,
19+
};
20+
21+
export default config;

packages/common/src/templates/react.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import Template from './template';
22
import { decorateSelector } from '../theme';
33

4+
import configurations from './configuration';
5+
46
export default new Template(
57
'create-react-app',
68
'React',
@@ -12,5 +14,9 @@ export default new Template(
1214
popular: true,
1315
main: true,
1416
mainFile: ['/src/index.js', '/src/index.tsx', '/src/index.ts'],
17+
extraConfigurations: {
18+
'/jsconfig.json': configurations.jsconfig,
19+
'/tsconfig.json': configurations.tsconfig,
20+
},
1521
}
1622
);

0 commit comments

Comments
 (0)