Инструменты пользователя

Инструменты сайта


typescript:tsconfig.json

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
typescript:tsconfig.json [2022/11/14 14:13]
werwolf
typescript:tsconfig.json [2023/01/12 12:18] (текущий)
Строка 1: Строка 1:
-=====tsconfig.json===== 
-====config==== 
-<code javascript>​ 
-// Файл "​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"​ 
-  ] 
-} 
- 
-</​code>​ 
- 
 ===== Структура tsconfig ===== ===== Структура tsconfig =====
  
Строка 164: Строка 9:
 Это болванка нашего ''​tsconfig.json'':​ Это болванка нашего ''​tsconfig.json'':​
  
-<​code>​+<​code ​javascript>
 { {
   // extends позволяет обогатить опции другими опциями из указанного файла   // extends позволяет обогатить опции другими опциями из указанного файла
Строка 188: Строка 33:
 Указывает путь к файлу из которого нужно унаследовать опции. По большей части, служит инструментом упорядочивания. Можно разделить опции по некой логике,​ чтобы они не смешивались. Например,​ вынести настройки строгости в отдельный файл, как в примере болванки конфига. Однако,​ учитывая поддержку комментариев в ''​tsconfig.json''​ это можно сделать проще: Указывает путь к файлу из которого нужно унаследовать опции. По большей части, служит инструментом упорядочивания. Можно разделить опции по некой логике,​ чтобы они не смешивались. Например,​ вынести настройки строгости в отдельный файл, как в примере болванки конфига. Однако,​ учитывая поддержку комментариев в ''​tsconfig.json''​ это можно сделать проще:
  
-<​code>​+<​code ​javascript>
 { {
   "​compilerOptions":​ {   "​compilerOptions":​ {
Строка 200: Строка 45:
 Рассмотрим другой use-case, где комментариями отделаться не получится. Если необходимо создать production и development конфиги. Так бы мог выглядеть ''​tsconfig-dev.json''​ версия конфига:​ Рассмотрим другой use-case, где комментариями отделаться не получится. Если необходимо создать production и development конфиги. Так бы мог выглядеть ''​tsconfig-dev.json''​ версия конфига:​
  
-<​code>​+<​code ​javascript>
 { {
   "​extends":​ "​./​tsconfig.json",​   "​extends":​ "​./​tsconfig.json",​
Строка 221: Строка 66:
 Указать список конкретных файлов для компиляции можно использовав данную опцию. Указать список конкретных файлов для компиляции можно использовав данную опцию.
  
-<​code>​+<​code ​javascript>
 { {
   "​compilerOptions":​ {},   "​compilerOptions":​ {},
Строка 239: Строка 84:
 Если опция ''​files''​ не указана,​ то TypeScript будет использовать эту директиву для поиска компилируемых файлов. Если ''​include''​ так же не указана,​ то её значение будет неявно объявлено как ''​["​%%**/​*%%"​]''​. Это означает,​ что поиск файлов будет осуществляться во всех папках и их подпапках. Такое поведение не оптимально,​ поэтому в целях производительности лучше всегда указывать конкретные пути. Можно прописывать как пути к конкретным файлам,​ так и паттерны путей. Если опция ''​files''​ не указана,​ то TypeScript будет использовать эту директиву для поиска компилируемых файлов. Если ''​include''​ так же не указана,​ то её значение будет неявно объявлено как ''​["​%%**/​*%%"​]''​. Это означает,​ что поиск файлов будет осуществляться во всех папках и их подпапках. Такое поведение не оптимально,​ поэтому в целях производительности лучше всегда указывать конкретные пути. Можно прописывать как пути к конкретным файлам,​ так и паттерны путей.
  
-<​code>​+<​code ​javascript>
 { {
   "​compilerOptions":​ {},   "​compilerOptions":​ {},
Строка 261: Строка 106:
 Директива служит для того, чтобы исключать некоторые лишние пути или файлы, которые включились директивой ''​include''​. По умолчанию,​ опция имеет значение путей пакетных менеджеров ''​npm'',​ ''​bower''​ и ''​jspm'',​ так как модули в них уже собраны. Помимо этого, TypeScript будет так же игнорировать папку из опции ''​outDir'',​ если она указана. Это папка, куда помещаются собранные артефакты сборки. Логично,​ что их нужно исключить. Если добавить свои значения в эту опцию, то необходимо не забыть восстановить умолчания. Так как пользовательские значения не объединяются со значениями по умолчанию. Другими словами,​ необходимо вручную указать корень модулей своего пакетного менеджера. Директива служит для того, чтобы исключать некоторые лишние пути или файлы, которые включились директивой ''​include''​. По умолчанию,​ опция имеет значение путей пакетных менеджеров ''​npm'',​ ''​bower''​ и ''​jspm'',​ так как модули в них уже собраны. Помимо этого, TypeScript будет так же игнорировать папку из опции ''​outDir'',​ если она указана. Это папка, куда помещаются собранные артефакты сборки. Логично,​ что их нужно исключить. Если добавить свои значения в эту опцию, то необходимо не забыть восстановить умолчания. Так как пользовательские значения не объединяются со значениями по умолчанию. Другими словами,​ необходимо вручную указать корень модулей своего пакетного менеджера.
  
-<​code>​+<​code ​javascript>
 { {
   "​compilerOptions":​ {},   "​compilerOptions":​ {},
Строка 307: Строка 152:
 Конечно,​ правильным выбором будет подключать тайпинги только той функциональности,​ для которой установлены полифилы. Конечно,​ правильным выбором будет подключать тайпинги только той функциональности,​ для которой установлены полифилы.
  
-<​code>​+<​code ​javascript>
 Для --target ES5 подключаются:​ DOM, ES5, ScriptHost Для --target ES5 подключаются:​ DOM, ES5, ScriptHost
 Для --target ES6: DOM, ES6, DOM.Iterable,​ ScriptHost Для --target ES6: DOM, ES6, DOM.Iterable,​ ScriptHost
Строка 314: Строка 159:
 Как только вы что-либо добавляете в ''​lib''​ умолчания сбрасываются. Необходимо руками добавить то, что нужно, например ''​DOM'':​ Как только вы что-либо добавляете в ''​lib''​ умолчания сбрасываются. Необходимо руками добавить то, что нужно, например ''​DOM'':​
  
-<​code>​+<​code ​javascript>
 { {
   "​compilerOptions":​ {   "​compilerOptions":​ {
Строка 366: Строка 211:
 Если какая-либо библиотека не имеет ''​default import'',​ лоадеры вроде ''​ts-loader''​ или ''​babel-loader''​ автоматически создают их. Однако,​ ''​d.ts-файлы''​ библиотеки об этом не знают. Данный флаг говорит компилятору,​ что можно писать следующим образом:​ Если какая-либо библиотека не имеет ''​default import'',​ лоадеры вроде ''​ts-loader''​ или ''​babel-loader''​ автоматически создают их. Однако,​ ''​d.ts-файлы''​ библиотеки об этом не знают. Данный флаг говорит компилятору,​ что можно писать следующим образом:​
  
-<​code>​+<​code ​javascript>
 // вместо такого импорта // вместо такого импорта
 import * as React from '​react';​ import * as React from '​react';​
Строка 381: Строка 226:
 За счёт добавления болерплейта в выходной код, позволяет импортировать ''​CommonJS''​ пакеты как ''​ES6''​. За счёт добавления болерплейта в выходной код, позволяет импортировать ''​CommonJS''​ пакеты как ''​ES6''​.
  
-<​code>​+<​code ​javascript>
 // библиотека moment экспортируется только как CommonJS // библиотека moment экспортируется только как CommonJS
 // пытаемся импортировать её как ES6 // пытаемся импортировать её как ES6
Строка 409: Строка 254:
 Спецификация ''​ES6''​ добавила новый синтаксис для итерирования:​ цикл ''​for / of'',​ ''​array spread'',​ ''​arguments spread''​. Если код проекта преобразовывается в ''​ES5'',​ то конструкция с циклом ''​for / of''​ будет преобразована в обычный ''​for'':​ Спецификация ''​ES6''​ добавила новый синтаксис для итерирования:​ цикл ''​for / of'',​ ''​array spread'',​ ''​arguments spread''​. Если код проекта преобразовывается в ''​ES5'',​ то конструкция с циклом ''​for / of''​ будет преобразована в обычный ''​for'':​
  
-<​code>​+<​code ​javascript>
 // код es6 // код es6
 const str = '​Hello!';​ const str = '​Hello!';​
Строка 417: Строка 262:
 </​code>​ </​code>​
  
-<​code>​+<​code ​javascript>
 // код es5 без downlevelIteration // код es5 без downlevelIteration
 var str = "​Hello!";​ var str = "​Hello!";​
Строка 486: Строка 331:
 Флаг позволяет включить возможность импортировать ''​*.json''​ файлы. Ничего дополнительно устанавливать не требуется. Флаг позволяет включить возможность импортировать ''​*.json''​ файлы. Ничего дополнительно устанавливать не требуется.
  
-<​code>​+<​code ​javascript>
 // необходимо указывать расширение .json // необходимо указывать расширение .json
 import config from '​./​config.json'​ import config from '​./​config.json'​
Строка 502: Строка 347:
  
 UPD: Здесь можно прочитать [[https://​habr.com/​ru/​post/​557738/​|вторую часть статьи]]. UPD: Здесь можно прочитать [[https://​habr.com/​ru/​post/​557738/​|вторую часть статьи]].
 +
 +=====tsconfig.json=====
 +====config====
 +<code javascript>​
 +// Файл "​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"​
 +  ]
 +}
 +
 +</​code>​
 +
typescript/tsconfig.json.1668424406.txt.gz · Последние изменения: 2023/01/12 12:17 (внешнее изменение)