Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
typescript:tsconfig.json [2022/11/14 14:13] werwolf [extends] |
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 ===== | ||
| Строка 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> | ||
| + | |||