|
// Файл "tsconfig.json": |
|
// - устанавливает корневой каталог проекта TypeScript; |
|
// - выполняет настройку параметров компиляции; |
|
// - устанавливает файлы проекта. |
|
// Присутствие файла "tsconfig.json" в папке указывает TypeScript, что это корневая папка проекта. |
|
// Внутри "tsconfig.json" указываются настройки компилятора TypeScript и корневые файлы проекта. |
|
// Программа компилятора "tsc" ищет файл "tsconfig.json" сначала в папке, где она расположена, затем поднимается выше и ищет в родительских папках согласно их вложенности друг в друга. |
|
// Команда "tsc --project C:\path\to\my\project\folder" берет файл "tsconfig.json" из папки, расположенной по данному пути. |
|
// Файл "tsconfig.json" может быть полностью пустым, тогда компилятор скомпилирует все файлы с настройками заданными по умолчанию. |
|
// Опции компилятора, перечисленные в командной строке перезаписывают собой опции, заданные в файле "tsconfig.json". |
|
{ |
|
"extends": "./configs/base", // Загрузить другой конфигурационный файл "tsconfig.json", взятый за основу, и перезаписать его значениями из секций ниже. |
|
"compileOnSave": true, // При значении true указывает используемой редактору кода производить компиляцию при каждом сохранении файлов TypeScript. Поддерживается не всеми редакторами кода. |
|
"compilerOptions": { |
|
// Настраивает параметры компиляции. Параметры называются также, как и в командной строке. |
|
|
|
// Основные настройки. |
|
// Настройки путей для создания выходных файлов. |
|
"module": "amd", // Определяет тип импорта кода в итоговом файле, прописанном в "outFile". Необходимо задавать при использовании опции "outFile". |
|
"outFile": "./build/bundle.js", // Имя единого итогового выходного файла, в который будут помещен код из всех найденных TypeScript-файлов. |
|
"outDir": "./build", // Поместить все скомпилированные файлы в данную папку, согласно их вложенности в исходниках. Если задана опция "outFile", то опция "outDir" будет проигнорирована. |
|
// Если "outFile" и "outDir" не заданы, то выходные файлы будут созданы рядом со своими исходниками. |
|
// Настройки для поиска @types |
|
"typeRoots": [ |
|
// По умолчанию все видимые в проекте пакеты "@types", расположенные в папках "node_modules" на всех уровнях вложенности, используются при компиляции. |
|
// Но, если указан массив "typeRoots", тогда при компиляции будут использованы только описания типов, найденные в папках, расположенных по перечисленным в нем путях. |
|
// При этом описания типов, находящихся в других папках использованы не будут. |
|
// Папки с пакетами описаний типов обычно содержат внутри себя файл "index.d.ts" или "package.json" со свойством "types". |
|
"./typings" // При компиляции будут использованы только файлы описания типов ".d.ts" находящиеся в этой папке. |
|
], |
|
"types": ["node", "lodash", "express"], // Если указан параметр "types", то из всех найденных будут использованы только те описания типов, что указаны в его массиве, а именно: "./typings/node", "./typings/lodash", "./typings/express". |
|
// Другие найденные типы использоваться не будут. |
|
// Задание "types": [] приведет к отключению автоматического использования описаний типов из папок "@types". |
|
"rootDir": "../src", // Путь до папки с которой надо начинать поиск входных файлов. Обычно корневая директория вычисляется по списку входных файлов. Данная опция необходима для проверки, что все найденные TypeScript-файлы находятся внутри корневой папки. |
|
"rootDirs": [ |
|
// Список корневых папок, совокупный контент которых представляет структуру проекта для компиляции. |
|
"src/views", |
|
"generated/templates/views" |
|
], |
|
"baseUrl": ".", // Путь до базовой папки для поиска не относительных путей до файлов. |
|
"build": false, // TODO |
|
"composite": true, // TODO |
|
"paths": { |
|
// Укажите сопоставление маршрутов для вычисления по сравнению с параметром baseUrl. |
|
"jquery": ["node_modules/jquery/dist/jquery"] // Путь относительно "baseUrl". |
|
}, |
|
"lib": ["es5", "es6", "es2015.promise", "es2016.array.include"], // Набор библиотечных файлов полифилов, которые будут включены в итоговый выходной файл. |
|
"jsx": "react", // Включать ли поддержку ".tsx" файлов? |
|
"jsxFactory": "React.createElement", // Укажите фабричную функцию JSX, чтобы использовать, когда таргетинг реагирует на обработку JSX, например: 'React.createElement' или 'h'. Требуется TypeScript версии 2.1 или новее. |
|
"allowJs": false, // Разрешать компилировать файлы с JavaScript-кодом? |
|
"alwaysStrict": false, // Компилировать ли каждый файл в строгом режиме и создавать ли 'use strict' для каждого выходного файла? Требуется TypeScript версии 2.1 или новее. |
|
"checkJs": false, // Сообщить об ошибках в .js-файлах? Используйте совместно с "allowJs". |
|
"downlevelIteration": false, // Обеспечьте полную поддержку итераций для for - in, ..., деструктуризации при настройке на ES5 или ES3? |
|
"importHelpers": false, // Имортировать созданные хелперы (__extends, __rest и так далее) из "tslib". |
|
"noEmitOnError": true, // Не создавать итоговый файл, если во время компиляции произошла ошибка. |
|
"noEmitHelpers": false, // Не помещать в код итогового файла функции хелперы. |
|
"noUnusedLocals": true, // Показывать ошибку, если где-то найдены неиспользуемые локальные значения. |
|
"noUnusedParameters": true, // Показывать ошибку, если где-то найдены неиспользуемые параметры. |
|
"noImplicitUseStrict": false, // Не записывать 'use strict' в итоговый выходной файл? |
|
"pretty": true, // Окрашивать в терминале сообщения об ошибках. |
|
"removeComments": true, // Удалить все комментарии из итогового файла. |
|
"sourceMap": true, // Создавать ли соответствующие source map файлы ".map"? |
|
"strict": false, // Включить ли все строги проверки типов сразу: noImplicitAny, noImplicitThis, alwaysStrict, strictNullChecks, strictFunctionTypes, strictPropertyInitialization? |
|
"strictNullChecks": false, // Значения "null" и "undefined" могут быть присвоены только значениям данного типа и значениям только с типом "any"? |
|
"target": "es3", // Тип кода создаваемого итогового файла. |
|
"watch": true, // Запустить компилятор в режиме отслеживания изменений во входных файлах и их повторной компиляции? |
|
|
|
// Дополнительные настройки. |
|
"allowSyntheticDefaultImports": false, // Разрешить импортировать модули не имеющие внутри себя "import default"? |
|
"allowUnreachableCode": false, // Сообщить об ошибке в случае обнаружения кода, который никогда не будет выполнен? |
|
"allowUnusedLabels": false, // Не создавать сообщений об ошибках, если в коде найдены неиспользуемые метки label? |
|
"allowUmdGlobalAccess": false, // TODO |
|
"assumeChangesOnlyAffectDirectDependencies": false, // TODO |
|
"charset": "utf8", // Кодировка входных файлов. |
|
"declaration": false, // Создавать ли соответствующие файлы ".d.ts"? |
|
"declarationDir": ".", // Путь до папки, в которую будут записаны созданные соответствующие файлы ".d.ts". |
|
"declarationMap": false, // TODO |
|
"diagnostics": false, // Показывать ли диагностическую информацию? |
|
"disableSizeLimit": false, // Отключить ограничение размера в проекте JavaScript. |
|
"emitBOM": false, // Записывать ли UTF-8 Byte Order Mark (BOM) в начало итогового файла? |
|
"emitDeclarationOnly": false, // TODO |
|
"emitDecoratorMetadata": false, // Создавать метаданные для объявлений декораторов в исходном коде? |
|
"esModuleInterop": false, // Создать хелперы __importStar и __importDefault для обеспечения совместимости с экосистемой Babel и включить allowSyntheticDefaultImports для совместимости с системой типов. |
|
"experimentalDecorators": false, // Включить экспериментальную поддержку декораторов EcmaScript? |
|
"extendedDiagnostics": false, // TODO |
|
"forceConsistentCasingInFileNames": false, // Запретить несогласованные ссылки на один и тот же файл? |
|
"inlineSources": false, // Помещать ли source в итоговый файл рядом с source map? |
|
"inlineSourceMap": false, // Помещать ли source map в итоговый файл, вместо того чтобы иметь отдельный файл с source map? |
|
"isolatedModules": false, // Обрабатывать каждый файл, как отдельный изолированный модуль. |
|
"listFiles": false, // Печатать ли имена файлов при компиляции? |
|
"listEmittedFiles": false, // Печатать список всех выходных файлов при компиляции. Требуется TypeScript версии 2.0 или новее. |
|
"mapRoot": ".", // Путь до папки, в которой дебаггер браузера должен будет искать файлы с source map. |
|
"maxNodeModuleJsDepth": 0, // Максимальная глубина поиска зависимостей внутри node_modules и загрузки файлов JavaScript. Применяется только вместе с заданной опцией "allowJs". |
|
"moduleResolution": "classic", // Определить способ поиска модулей в папках: как в Node.js или классический, как в TypeScript 1.5 и ниже. |
|
"newLine": "CRLF", // Определяет тип завершения строк в итоговом файле. |
|
"noEmit": false, // Не создавать итоговый файл. |
|
"noFallthroughCasesInSwitch": false, // Сообщить об ошибке в случае обнаружения проваливания в конструкции switch-case? |
|
"noImplicitAny": false, // Показывать ошибку, если где-то задан тип "any". |
|
"noImplicitThis": false, // Показывать ошибку на "this", если где-то задан тип "any". |
|
"noImplicitReturns": false, // Сообщить об ошибке, когда не все пути кода в функции возвращают значение? |
|
"noLib": false, // Не использовать стандартный библиотечный файл по умолчанию (lib.d.ts). |
|
"noResolve": false, // Не добавлять "/// <reference path="..." />" в список скомпилированных файлов. |
|
"noStrictGenericChecks": false, // Отключить строгую проверку типов джинериков в типах функций? |
|
"plugins": [], // Список плагинов для сервера языка TypeScript для загрузки. Требуется TypeScript версии 2.3 или новее. |
|
"preserveConstEnums": false, // Не удалять объявления const enum из итогового файла. |
|
"preserveSymlinks": false, // Не заменять символические ссылки на их реальный путь, обрабатывать символический файл как реальный. |
|
"sourceRoot": ".", // Путь до папки, в которой дебаггер должен искать исходные source файлы. |
|
"skipLibCheck": false, // Не проверять типы, заданные во всех файлах описания типов (*.d.ts)? |
|
"skipDefaultLibCheck": false, // Пропустить проверку типов из стандартной библиотеки по умолчанию? |
|
"suppressExcessPropertyErrors": false, // Подавлять избыточные проверки свойств для объектных литералов? |
|
"suppressImplicitAnyIndexErrors": false, // Подавлять "noImplicitAny" ошибки для индексирования объектов, не имеющих индексных подписей. |
|
"stripInternal": false, // Не создавать объявления для кода, который имеет аннотацию JSDoc /** @internal */. |
|
"strictFunctionTypes": false, // Отключить проверку бивариантных параметров для типов функций. |
|
"strictPropertyInitialization": false, // Убедитесь, что свойства класса, имеющие значения undefined, получают новые значения внутри конструктора. |
|
"traceResolution": false // Выводить в логи сообщения о нахождении путей до модулей. |
|
}, |
|
"files": [ |
|
// Список относительных или абсолютных путей до конкретных исходных файлов, которые обязательно надо скомпилировать. |
|
// Если секция "files" не указана, то компилятор по умолчанию включает все файлы с расширением *.ts и *.tsx, которые находятся в корневой папке и внутренних подпапках проекта. |
|
// Если секция "files" указана, то скомпилируются файлы, которые в ней перечислены. |
|
// Все файлы, на которые есть ссылки в файлах из секции "files", также скомпилируются. |
|
"core.ts", |
|
"app.ts" |
|
], |
|
// Вместе с компиляцией только конкретных исходных файлов можно компилировать только файлы в заданных папках, которые будут найдены через регулярные выражения, которые принимают только следующие значения: |
|
// - букву или цифру; |
|
// - * - ноль или более любых символов, не включая разделители директорий "/" и "\"; |
|
// - ? - один любой символ, не включая разделители директорий "/" и "\"; |
|
// - **/ - рекурсивно включить любую подпапку. |
|
// Если путь до папки заканчивается так "*" или так ".*", тогда в ней будут скомплированы все файлы с расширениями .ts, .tsx, .d.ts, а также .js и .jsx, если опция "allowJs" будет равна true. |
|
"include": [ |
|
// Секция "include" позволяет скомпилировать все файлы, находящиеся в заданных папках. |
|
// Если секция "files" и секция "include" заданы вместе, то будут скомпилированы только файлы, перечисленные в обеих секциях. |
|
// Все файлы, на которые есть ссылки во включенных файлах из секции "files" и секции "include", также скомпилируются. |
|
"src/**/*" |
|
], |
|
"exclude": [ |
|
// Секция "exclude" позволяет исключить при компиляции определенные файлы, которые находятся в заданных папках секции "include" или в папках всего проекта, если секция "include" не задана. |
|
// Компилятор не будет учитывать перечисленные в секции "exclude" файлы TypeScript, которые находятся в папках из секции "include". |
|
// Однако файлы, заданные в секции "files" будут обязательно скомпилированы. |
|
// Если секция "exclude" не указана, то по умолчанию будут исключаться из компиляции все файлы из папок: |
|
// - node_modules, |
|
// - bower_components, |
|
// - jspm_packages, |
|
// - файлы из папки, указанной в опции компилятора "outDir". |
|
"src/**/*.spec.ts", |
|
"node_modules" |
|
] |
|
} |