vite-plugin-dts 1.7.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,22 @@
1
- # vite-plugin-dts
1
+ <h1 align="center">vite-plugin-dts</h1>
2
2
 
3
- **English** | [中文](./README.zh-CN.md)
3
+ <p align="center">
4
+ A vite plugin that generates declaration files (<code>*.d.ts</code>) from <code>.ts(x)</code> or <code>.vue</code> source files when using vite in <a href="https://vitejs.dev/guide/build.html#library-mode">library mode</a>.
5
+ </p>
4
6
 
5
- A vite plugin that generates declaration files (`*.d.ts`) from `.ts(x)` or `.vue` source files when using vite in [library mode](https://vitejs.dev/guide/build.html#library-mode).
7
+ <p align="center">
8
+ <a href="https://www.npmjs.com/package/vite-plugin-dts">
9
+ <img src="https://img.shields.io/npm/v/vite-plugin-dts?color=orange&label=" alt="version" />
10
+ </a>
11
+ </p>
12
+
13
+ <p align="center">
14
+ <strong>English</strong> | <a href="./README.zh-CN.md">中文</a>
15
+ </p>
16
+
17
+ <p align="center"><strong>Notice: </strong><code>skipDiagnostics</code> option default to <code>false</code> since 1.7.0.</p>
18
+
19
+ <br />
6
20
 
7
21
  ## Install
8
22
 
@@ -63,6 +77,37 @@ const props = defineProps<{
63
77
  </template>
64
78
  ```
65
79
 
80
+ ## FAQ
81
+
82
+ Here are some FAQ's and solutions.
83
+
84
+ ### Missing some declaration files after build (before `1.7.0`)
85
+
86
+ By default `skipDiagnostics` option is `true`, which means that type diagnostic will be skipped during the build process (some projects may have diagnostic tools such as `vue-tsc`). If there are some files with type errors which interrupt the build process, these files will not be emitted (declaration files won't be generated).
87
+
88
+ If your project doesn't use type diagnostic tools, you can set `skipDiagnostics: false` and `logDiagnostics: true` to turn on the diagnostic and log features of this plugin. It will help you check the type errors during build and log error information to the terminal.
89
+
90
+ ### Take type error when using both `script` and `setup-script` in vue component
91
+
92
+ This is usually caused by using `defineComponent` function in both `script` and `setup-script`. When `vue/compiler-sfc` compiles these files, the default export result from `script` gets merged with the parameter object of `defineComponent` from `setup-script`. This is incompatible with parameters and types returned from `defineComponent`, which results in a type error.
93
+
94
+ Here is a simple [example](https://github.com/qmhc/vite-plugin-dts/blob/main/example/components/BothScripts.vue), you should remove the `defineComponent` which in `script` and export a native object directly.
95
+
96
+ ### Take errors that unable to infer types from packages which under `node_modules`
97
+
98
+ This is a exist issue when TypeScript inferring types from packages which under `node_modules` through soft links (pnpm), you can refer to this [issue](https://github.com/microsoft/TypeScript/issues/42873). Currently has a workaround that add `baseUrl` to your `tsconfig.json` and specify the `paths` for these packages:
99
+
100
+ ```json
101
+ {
102
+ "compilerOptions": {
103
+ "baseUrl": ".",
104
+ "paths": {
105
+ "third-lib": ["node_modules/third-lib"]
106
+ }
107
+ }
108
+ }
109
+ ```
110
+
66
111
  ## Options
67
112
 
68
113
  ```ts
@@ -74,96 +119,186 @@ interface TransformWriteFile {
74
119
  }
75
120
 
76
121
  export interface PluginOptions {
77
- // Depends on the root directory
78
- // Defaults base on your vite config root options
122
+ /**
123
+ * Depends on the root directory
124
+ *
125
+ * Defaults base on your vite config root options
126
+ */
79
127
  root?: string
80
128
 
81
- // Declaration files output directory
82
- // Can be specified a array to output to multiple directories
83
- // Defaults base on your vite config output options
129
+ /**
130
+ * Declaration files output directory
131
+ *
132
+ * Can be specified a array to output to multiple directories
133
+ *
134
+ * Defaults base on your vite config output options
135
+ */
84
136
  outputDir?: string | string[]
85
137
 
86
- // Manually set the root path of the entry files
87
- // The output path of each file will be caculated base on it
88
- // Defaults is the smallest public path for all files
138
+ /**
139
+ * Manually set the root path of the entry files
140
+ *
141
+ * The output path of each file will be caculated base on it
142
+ *
143
+ * Defaults is the smallest public path for all files
144
+ */
89
145
  entryRoot?: string
90
146
 
91
- // Project init compilerOptions using by ts-morph
92
- // Default: null
147
+ /**
148
+ * Project init compilerOptions using by ts-morph
149
+ *
150
+ * @default null
151
+ */
93
152
  compilerOptions?: ts.CompilerOptions | null
94
153
 
95
- // Project init tsconfig.json file path by ts-morph
96
- // Plugin also resolve incldue and exclude files from tsconfig.json
97
- // Default: 'tsconfig.json'
154
+ /**
155
+ * Project init tsconfig.json file path by ts-morph
156
+ *
157
+ * Plugin also resolve incldue and exclude files from tsconfig.json
158
+ *
159
+ * @default 'tsconfig.json'
160
+ */
98
161
  tsConfigFilePath?: string
99
162
 
100
- // Set which paths should exclude when transform aliases
101
- // If it's regexp, it will test the original import path directly
102
- // Default: []
163
+ /**
164
+ * Set which paths should exclude when transform aliases
165
+ *
166
+ * If it's regexp, it will test the original import path directly
167
+ *
168
+ * @default []
169
+ */
103
170
  aliasesExclude?: (string | RegExp)[]
104
171
 
105
- // Whether transform file name '.vue.d.ts' to '.d.ts'
106
- // Default: false
172
+ /**
173
+ * Whether transform file name '.vue.d.ts' to '.d.ts'
174
+ *
175
+ * @default false
176
+ */
107
177
  cleanVueFileName?: boolean
108
178
 
109
- // Whether transform dynamic import to static
110
- // Force true when `rollupTypes` is effective
111
- // eg. 'import('vue').DefineComponent' to 'import { DefineComponent } from "vue"'
112
- // Default: false
179
+ /**
180
+ * Whether transform dynamic import to static
181
+ *
182
+ * Force true when `rollupTypes` is effective
183
+ *
184
+ * eg. 'import('vue').DefineComponent' to 'import { DefineComponent } from "vue"'
185
+ *
186
+ * @default false
187
+ */
113
188
  staticImport?: boolean
114
189
 
115
- // Manual set include glob
116
- // Defaults base on your tsconfig.json include option
190
+ /**
191
+ * Manual set include glob
192
+ *
193
+ * Defaults base on your tsconfig.json include option
194
+ */
117
195
  include?: string | string[]
118
196
 
119
- // Manual set exclude glob
120
- // Defaults base on your tsconfig.json exclude option, be 'node_module/**' when empty
197
+ /**
198
+ * Manual set exclude glob
199
+ *
200
+ * Defaults base on your tsconfig.json exclude option, be 'node_modules/**' when empty
201
+ */
121
202
  exclude?: string | string[]
122
203
 
123
- // Whether generate types entry file
124
- // When true will from package.json types field if exists or `${outputDir}/index.d.ts`
125
- // Force true when `rollupTypes` is effective
126
- // Default: false
204
+ /**
205
+ * Do not emit if content of file only includes 'export {}'
206
+ *
207
+ * @default true
208
+ */
209
+ clearPureImport?: boolean
210
+
211
+ /**
212
+ * Whether generate types entry file
213
+ *
214
+ * When true will from package.json types field if exists or `${outputDir}/index.d.ts`
215
+ *
216
+ * Force true when `rollupTypes` is effective
217
+ *
218
+ * @default false
219
+ */
127
220
  insertTypesEntry?: boolean
128
221
 
129
- // Set to rollup declaration files after emit
130
- // Power by `@microsoft/api-extractor`, it will start a new program which takes some time
131
- // Default: false
222
+ /**
223
+ * Set to rollup declaration files after emit
224
+ *
225
+ * Power by `@microsoft/api-extractor`, it will start a new program which takes some time
226
+ *
227
+ * @default false
228
+ */
132
229
  rollupTypes?: boolean
133
230
 
134
- // Whether copy .d.ts source files into outputDir
135
- // Default: true
231
+ /**
232
+ * Whether copy .d.ts source files into outputDir
233
+ *
234
+ * @default true
235
+ */
136
236
  copyDtsFiles?: boolean
137
237
 
138
- // Whether emit nothing when has any diagnostic
139
- // Default: false
238
+ /**
239
+ * Whether emit nothing when has any diagnostic
240
+ *
241
+ * @default false
242
+ */
140
243
  noEmitOnError?: boolean
141
244
 
142
- // Whether skip typescript diagnostics
143
- // Skip type diagnostics means that type errors will not interrupt the build process
144
- // But for the source files with type errors will not be emitted
145
- // Default: true
245
+ /**
246
+ * Whether skip typescript diagnostics
247
+ *
248
+ * Skip type diagnostics means that type errors will not interrupt the build process
249
+ *
250
+ * But for the source files with type errors will not be emitted
251
+ *
252
+ * @default false
253
+ */
146
254
  skipDiagnostics?: boolean
147
255
 
148
- // Whether log diagnostic informations
149
- // Not effective when `skipDiagnostics` is true
150
- // Default: false
256
+ /**
257
+ * Whether log diagnostic informations
258
+ *
259
+ * Not effective when `skipDiagnostics` is true
260
+ *
261
+ * @deprecated
262
+ * @default false
263
+ */
151
264
  logDiagnostics?: boolean
152
265
 
153
- // After emit diagnostic hook
154
- // According to the length to judge whether there is any type error
155
- // Default: () => {}
266
+ /**
267
+ * Customize typescript lib folder path
268
+ *
269
+ * Should pass a relative path to root or a absolute path
270
+ *
271
+ * @default undefined
272
+ */
273
+ libFolderPath?: string
274
+
275
+ /**
276
+ * After emit diagnostic hook
277
+ *
278
+ * According to the length to judge whether there is any type error
279
+ *
280
+ * @default () => {}
281
+ */
156
282
  afterDiagnostic?: (diagnostics: Diagnostic[]) => void | Promise<void>
157
283
 
158
- // Before declaration file be writed hook
159
- // You can transform declaration file-path and content through it
160
- // The file will be skipped when return exact false
161
- // Default: () => {}
284
+ /**
285
+ * Before declaration file be writed hook
286
+ *
287
+ * You can transform declaration file-path and content through it
288
+ *
289
+ * The file will be skipped when return exact false
290
+ *
291
+ * @default () => {}
292
+ */
162
293
  beforeWriteFile?: (filePath: string, content: string) => void | false | TransformWriteFile
163
294
 
164
- // After build hook
165
- // It wil be called after all declaration files are written
166
- // Default: () => {}
295
+ /**
296
+ * After build hook
297
+ *
298
+ * It wil be called after all declaration files are written
299
+ *
300
+ * @default () => {}
301
+ */
167
302
  afterBuild?: () => void | Promise<void>
168
303
  }
169
304
  ```
@@ -173,41 +308,10 @@ export interface PluginOptions {
173
308
  Clone and run the following script:
174
309
 
175
310
  ```sh
176
- pnpm run test:e2e
311
+ pnpm run test:ts
177
312
  ```
178
313
 
179
- Then check `example/types`.
180
-
181
- ## FAQ
182
-
183
- Here are some FAQ's and solutions.
184
-
185
- ### Missing some declaration files after build
186
-
187
- By default `skipDiagnostics` option is `true`, which means that type diagnostic will be skipped during the build process (some projects may have diagnostic tools such as `vue-tsc`). If there are some files with type errors which interrupt the build process, these files will not be emitted (declaration files won't be generated).
188
-
189
- If your project doesn't use type diagnostic tools, you can set `skipDiagnostics: false` and `logDiagnostics: true` to turn on the diagnostic and log features of this plugin. It will help you check the type errors during build and log error information to the terminal.
190
-
191
- ### Take type error when using both `script` and `setup-script` in vue component
192
-
193
- This is usually caused by using `defineComponent` function in both `script` and `setup-script`. When `vue/compiler-sfc` compiles these files, the default export result from `script` gets merged with the parameter object of `defineComponent` from `setup-script`. This is incompatible with parameters and types returned from `defineComponent`, which results in a type error.
194
-
195
- Here is a simple [example](https://github.com/qmhc/vite-plugin-dts/blob/main/example/components/BothScripts.vue), you should remove the `defineComponent` which in `script` and export a native object directly.
196
-
197
- ### Take errors that unable to infer types from packages which under `node_modules`
198
-
199
- This is a exist issue when TypeScript inferring types from packages which under `node_modules` through soft links (pnpm), you can refer to this [issue](https://github.com/microsoft/TypeScript/issues/42873). Currently has a workaround that add `baseUrl` to your `tsconfig.json` and specify the `paths` for these packages:
200
-
201
- ```json
202
- {
203
- "compilerOptions": {
204
- "baseUrl": ".",
205
- "paths": {
206
- "third-lib": ["node_modules/third-lib"]
207
- }
208
- }
209
- }
210
- ```
314
+ Then check `examples/ts/types`.
211
315
 
212
316
  ## License
213
317