From cad9dcd8924616ccd24221e92ae29319411fd29a Mon Sep 17 00:00:00 2001 From: Dmitry Fuks Date: Tue, 7 May 2024 21:26:26 +0300 Subject: [PATCH] add readme --- README.md | 19 ------ packages/example/README.md | 12 ++++ packages/plugin/README.md | 132 +++++++++++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+), 19 deletions(-) create mode 100644 packages/example/README.md diff --git a/README.md b/README.md index 0dfc53a..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,19 +0,0 @@ -### Step to reproduce: - -1. Install dependencies - ```bash - yarn - ``` -2. Build plugin - ```bash - yarn build:plugin - ``` -3. Run build and type check - ```bash - yarn build:tspc # ✅ working - yarn build:ts-loader # ✅ working - yarn build:fork-ts # ✅ working - yarn watch:tspc # ⛔️ not working - yarn watch:ts-loader # ✅ working - yarn watch:fork-ts # ⛔️ not working - ``` \ No newline at end of file diff --git a/packages/example/README.md b/packages/example/README.md new file mode 100644 index 0000000..38cf199 --- /dev/null +++ b/packages/example/README.md @@ -0,0 +1,12 @@ +# ts-overrides-plugin example + +Commands: + +```bash +yarn build:tspc +yarn build:ts-loader +yarn build:fork-ts +yarn watch:tspc +yarn watch:ts-loader +yarn watch:fork-ts +``` diff --git a/packages/plugin/README.md b/packages/plugin/README.md index e69de29..46ce46f 100644 --- a/packages/plugin/README.md +++ b/packages/plugin/README.md @@ -0,0 +1,132 @@ +# ts-overrides-plugin + +Плагин для `TypeScript`, который позволяет переопределять `tsconfig` для определенных файлов и папок + +[![typedoc-theme-hierarchy (latest)](https://img.shields.io/npm/v/ts-overrides-plugin)](https://www.npmjs.com/package/ts-overrides-plugin) +[![typedoc-theme-hierarchy (downloads)](https://img.shields.io/npm/dw/ts-overrides-plugin)](https://www.npmjs.com/package/ts-overrides-plugin) +[![typedoc-theme-hierarchy (stars)](https://img.shields.io/github/stars/difuks/ts-overrides-plugin?style=social)](https://github.com/DiFuks/ts-overrides-plugin) + +## Зачем нужен? + +Самый популярный вариант использования – перевод проекта с `strict: false` на `strict: true`, но также подходит для +любых других случаев, когда нужно переопределить настройки tsconfig для определенных файлов или папок. + +## Установка и настройка + +Примеры можно увидеть в папке [`example`](https://github.com/DiFuks/ts-overrides-plugin/tree/main/packages/example). + +### Для использования плагина только в IDE + +Выполнить в терминале: +```bash +yarn add -D ts-overrides-plugin +``` + +В файле `tsconfig.json` добавить: +```json5 +{ + "compilerOptions": { + "plugins": [ + { + "name": "ts-overrides-plugin", + "config": { + "overrides": [ + { + "files": ["src/modern/**/*.{ts,tsx}"], // Путь к файлам (glob), для которых нужно переопределить настройки. Не должен начинаться с './' + "compilerOptions": { // Настройки для этих файлов + "strict": true + } + } + ] + } + } + ] + } +} +``` + +### Для использования в `webpack`, `tsc` + +Для корректной работы плагина в `webpack`, `tsc` необходимо использовать библиотеку [`ts-patch`](https://github.com/nonara/ts-patch). + +Выполнить в терминале: + +```bash +yarn add -D ts-overrides-plugin ts-patch +``` + +В файле `tsconfig.json` добавить: + +```json5 +{ + "compilerOptions": { + "plugins": [ + { + "name": "ts-overrides-plugin", + "transform": "ts-overrides-plugin/cli", + "transformProgram": true, + "overrides": [ + { + "files": ["src/modern/**/*.{ts,tsx}"], // Путь к файлам (glob), для которых нужно переопределить настройки. Не должен начинаться с './' + "compilerOptions": { // Настройки для этих файлов + "strict": true, + }, + }, + ] + } + ] + } +} +``` + +Для команды `tsc` – заменить на `tspc` в `package.json`: + +```json5 +{ + "scripts": { + "build": "tspc" + } +} +``` + +Для `ForkTsCheckerWebpackPlugin` в файле `webpack.config.js` добавить: + +```js +const path = require('path'); + +module.exports = { + plugins: [ + new ForkTsCheckerWebpackPlugin({ + typescript: { + typescriptPath: require.resolve('ts-patch/compiler'), + } + }), + ], +}; +``` + +Для `ts-loader` в файле `webpack.config.js` добавить: + +```js +const path = require('path'); + +module.exports = { + module: { + rules: [ + { + test: /\.ts$/, + exclude: /node_modules/, + loader: 'ts-loader', + options: { + compiler: require.resolve('ts-patch/compiler'), + } + }, + ], + }, +}; +``` + +## Известные проблемы + +- Пути в `tsconfig` не должны начинаться с `./` +- Плагин не работает в `WebStorm` при использовании `yarn pnp`