#typescript
#typescript
Вопрос:
В чем разница между rootDir и baseUrl в tyescript?
Согласно документам ts
Базовый URL
Base directory to resolve non-relative module names. See Module Resolution documentation for more details.
И rootDir
Specifies the root directory of input files. Only use to control the output directory structure with --outDir.
В моем tsconfig я добавил
«baseUrl»: «приложение / javascript /src»,
и ничего не добавили для
rootDir
Это правильно? (это работает, но я не уверен, правильно это или нет)
Обновление: rootDir выдает ошибку, поскольку я использую абсолютные пути
Это мой tsconfig. (baseUrl этого не делает)
{
"compilerOptions": {
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [
"es6",
"dom"
],
"module": "es6",
"moduleResolution": "node",
"sourceMap": true,
"jsx": "react",
"target": "es5",
"allowSyntheticDefaultImports": true,
"baseUrl": "app/javascript/src",
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"isolatedModules": true,
"skipLibCheck": true,
"allowJs": true,
"strict": true,
"outDir": "app/javascript/.dist",
},
"exclude": [
"node_modules",
"**/*.js",
"**/.jsx"
],
"include": [
"**/*.ts",
"**/*.tsx"
],
"compileOnSave": false
}
В webpack я разрешаю пути, подобные этому
resolved_paths: ['app/javascript/src', 'app/javascript']
Ответ №1:
Я добавил «baseUrl»: «app / javascript / src», это правильно?
Нет. Если вы указываете включаемые файлы для своего проекта (как указано src
), вы должны использовать rootDir
(как упоминалось Specifies the root directory of input files.
).
Причина, по которой вы не получаете сообщение об ошибке
baseUrl
вступает в силу только для не относительного импорта. Ваш код в основном имеет относительный импорт, например, import something from './something'
поэтому он не оказывает на вас никакого негативного эффекта.