vite-plugin-lib 3.0.4 → 4.0.1
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/dist/index.d.mts +36 -42
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +260 -351
- package/dist/index.mjs.map +1 -0
- package/package.json +6 -6
- package/dist/index.d.ts +0 -55
package/dist/index.d.mts
CHANGED
|
@@ -1,55 +1,49 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
export { vitePluginDts as dts };
|
|
1
|
+
import * as dts from "vite-plugin-dts";
|
|
2
|
+
import { LibraryFormats, Plugin } from "vite";
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
enabled: boolean;
|
|
7
|
-
include: string[];
|
|
8
|
-
exclude: string[];
|
|
9
|
-
provider: "v8";
|
|
10
|
-
};
|
|
4
|
+
//#region src/index.d.ts
|
|
11
5
|
interface CommonOptions {
|
|
12
|
-
|
|
6
|
+
verbose: boolean;
|
|
13
7
|
}
|
|
14
8
|
interface TSConfigPathsOptions extends CommonOptions {
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
/** Path to the tsconfig file (relative to the project root). Defaults to `./tsconfig.json` */
|
|
10
|
+
tsconfig: string;
|
|
17
11
|
}
|
|
18
12
|
interface BundleOptions {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
13
|
+
/** If `false`, all builtin modules will be externalized. Defaults to `false`. */
|
|
14
|
+
builtin: boolean;
|
|
15
|
+
/** If `false`, all dependencies will be externalized. Defaults to `false`. */
|
|
16
|
+
dependencies: boolean;
|
|
17
|
+
/** If `false`, all devDependencies will be externalized. Defaults to `true`. */
|
|
18
|
+
devDependencies: boolean;
|
|
19
|
+
/** If `false`, all dependencies will be externalized. Defaults to `false`. */
|
|
20
|
+
peerDependencies: boolean;
|
|
21
|
+
/** List of packages or modules to externalize. Defaults to `[]`. */
|
|
22
|
+
exclude: (string | RegExp)[];
|
|
23
|
+
/** List of packages or modules to bundle. Acts as an override and defaults to `[]`. */
|
|
24
|
+
include: (string | RegExp)[];
|
|
25
|
+
/** If `false`, all direct imports from `node_modules` will be externalized. Defaults to `false`. */
|
|
26
|
+
nodeModules: boolean;
|
|
33
27
|
}
|
|
34
28
|
interface LibraryOptions extends TSConfigPathsOptions {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
29
|
+
/** Defaults to `src/index.ts`. */
|
|
30
|
+
entry: string;
|
|
31
|
+
/** Bundle configuration for packages and modules. See {@link BundleOptions} for defaults. */
|
|
32
|
+
bundle: Partial<BundleOptions>;
|
|
33
|
+
/** Defaults to `['es']`. */
|
|
34
|
+
formats: LibraryFormats[];
|
|
35
|
+
/** Defaults to `package.json`. */
|
|
36
|
+
manifest: string;
|
|
37
|
+
name?: string;
|
|
38
|
+
/** Remove any temporary build files. Defaults to `true`. */
|
|
39
|
+
cleanup: boolean;
|
|
46
40
|
}
|
|
47
41
|
declare function tsconfigPaths(options?: Partial<TSConfigPathsOptions>): Plugin;
|
|
48
42
|
declare function library(options?: Partial<LibraryOptions>): Plugin[];
|
|
49
43
|
/**
|
|
50
|
-
|
|
51
|
-
|
|
44
|
+
* Remove any temporary `vite.config.ts.timestamp-*` files.
|
|
45
|
+
*/
|
|
52
46
|
declare function cleanup(options?: Partial<CommonOptions>): Plugin;
|
|
53
|
-
|
|
54
|
-
export { cleanup,
|
|
55
|
-
|
|
47
|
+
//#endregion
|
|
48
|
+
export { BundleOptions, CommonOptions, LibraryOptions, TSConfigPathsOptions, cleanup, dts, library, tsconfigPaths };
|
|
49
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":";;;;UAwBiB,aAAA;;AAAjB;AAQiB,UAAA,oBAAA,SAA6B,aAAA,CAAA;EAU9C;EA2BA,QAAiB,EAAA,MAAA;;AAIP,UA/BO,aAAA,CA+BP;EAEC;EAN6B,OAAA,EAAA,OAAA;EAAA;EA8BxC,YAAgB,EAAA,OAAA;EAA+B;EAAR,eAAA,EAAA,OAAA;EAAqC;EAAA,gBAAA,EAAA,OAAA;EA2N5E;EAAyC,OAAA,EAAA,CAAA,MAAA,GA1QpB,MA0QoB,CAAA,EAAA;EAAR;EAA+B,OAAA,EAAA,CAAA,MAAA,GAxQ3C,MAwQ2C,CAAA,EAAA;EAAA;EA4EhE,WAAgB,EAAA,OAAA;;AAAiB,UArUhB,cAAA,SAAuB,oBAqUP,CAAA;EAA8B;EAAA,KAAA,EAAA,MAAA;;UAjUrD,QAAQ;;WAEP;;;;;;;iBAwBK,aAAA,WAAuB,QAAQ,wBAA6B;iBA2N5D,OAAA,WAAiB,QAAQ,kBAAuB;;;;iBA4EhD,OAAA,WAAiB,QAAQ,iBAAsB"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,410 +1,319 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import path from
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
export { dts };
|
|
11
|
-
import { normalizePath } from 'vite';
|
|
1
|
+
import { builtinModules } from "node:module";
|
|
2
|
+
import { existsSync, readFileSync, readdirSync, rmSync } from "node:fs";
|
|
3
|
+
import { readFile, readdir, unlink, writeFile } from "node:fs/promises";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import c from "picocolors";
|
|
6
|
+
import ts from "typescript";
|
|
7
|
+
import * as dts from "vite-plugin-dts";
|
|
8
|
+
import dts$1 from "vite-plugin-dts";
|
|
9
|
+
import { normalizePath } from "vite";
|
|
12
10
|
|
|
11
|
+
//#region src/logger.ts
|
|
13
12
|
function log(text) {
|
|
14
|
-
|
|
13
|
+
console.log(`${c.cyan("[vite:lib]")} ${text}`);
|
|
15
14
|
}
|
|
16
15
|
function logWarn(text) {
|
|
17
|
-
|
|
16
|
+
console.warn(`${c.yellow("[vite:lib]")} ${text}`);
|
|
18
17
|
}
|
|
19
18
|
function logError(text) {
|
|
20
|
-
|
|
19
|
+
console.error(`${c.red("[vite:lib]")} ${text}`);
|
|
21
20
|
}
|
|
22
21
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
//#endregion
|
|
23
|
+
//#region src/es-declarations.ts
|
|
24
|
+
async function generateMTSDeclarations(typesDir$1, deleteSourceFiles, verbose) {
|
|
25
|
+
const files = await collectFiles(typesDir$1);
|
|
26
|
+
for (const file of files) {
|
|
27
|
+
await createMTSImports(file, verbose);
|
|
28
|
+
if (deleteSourceFiles) unlink(file);
|
|
29
|
+
}
|
|
30
|
+
log(`Generated ${files.length} MTS declarations.`);
|
|
32
31
|
}
|
|
33
32
|
async function collectFiles(dir) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
entries.filter((entry) => entry.isDirectory()).map((entry) => collectFiles(normalizePath(path.join(dir, entry.name))))
|
|
42
|
-
);
|
|
43
|
-
return files.map((file) => normalizePath(path.join(dir, file.name))).concat(...nestedFiles);
|
|
33
|
+
const entries = await readdir(dir, {
|
|
34
|
+
recursive: false,
|
|
35
|
+
withFileTypes: true
|
|
36
|
+
});
|
|
37
|
+
const files = entries.filter((entry) => entry.isFile());
|
|
38
|
+
const nestedFiles = await Promise.all(entries.filter((entry) => entry.isDirectory()).map((entry) => collectFiles(normalizePath(path.join(dir, entry.name)))));
|
|
39
|
+
return files.map((file) => normalizePath(path.join(dir, file.name))).concat(...nestedFiles);
|
|
44
40
|
}
|
|
45
41
|
async function createMTSImports(file, verbose) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const modified = lines.map((line) => transformLine(file, line, verbose));
|
|
49
|
-
const targetFile = file.replace(".d.ts", ".d.mts");
|
|
50
|
-
await writeFile(targetFile, modified.join("\n"));
|
|
42
|
+
const modified = (await readFile(file, "utf-8")).split("\n").map((line) => transformLine(file, line, verbose));
|
|
43
|
+
await writeFile(file.replace(".d.ts", ".d.mts"), modified.join("\n"));
|
|
51
44
|
}
|
|
52
45
|
function transformLine(file, line, verbose) {
|
|
53
|
-
|
|
54
|
-
// eslint-disable-next-line style/quotes
|
|
55
|
-
transformStaticImport(file, line, "'", verbose) ?? transformStaticImport(file, line, '"', verbose) ?? // eslint-disable-next-line style/quotes
|
|
56
|
-
transformExport(file, line, "'", verbose) ?? transformExport(file, line, '"', verbose) ?? line
|
|
57
|
-
);
|
|
46
|
+
return transformStaticImport(file, line, "'", verbose) ?? transformStaticImport(file, line, "\"", verbose) ?? transformExport(file, line, "'", verbose) ?? transformExport(file, line, "\"", verbose) ?? line;
|
|
58
47
|
}
|
|
59
48
|
function transformStaticImport(file, line, quote, verbose) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const resolvedImport = path.resolve(path.dirname(file), importPath);
|
|
71
|
-
if (existsSync(resolvedImport)) {
|
|
72
|
-
if (verbose) {
|
|
73
|
-
log(`got index import ${resolvedImport}`);
|
|
74
|
-
}
|
|
75
|
-
return `${line.substring(0, line.length - 2)}/index.mjs${quote};`;
|
|
76
|
-
}
|
|
77
|
-
return `${line.substring(0, line.length - 2)}.mjs${quote};`;
|
|
49
|
+
const importPathMarker = `from ${quote}`;
|
|
50
|
+
if (!(line.includes("import ") && line.includes(`${importPathMarker}.`))) return;
|
|
51
|
+
const importStartIndex = line.lastIndexOf(importPathMarker);
|
|
52
|
+
const importPath = line.substring(importStartIndex + importPathMarker.length, line.length - 2);
|
|
53
|
+
const resolvedImport = path.resolve(path.dirname(file), importPath);
|
|
54
|
+
if (existsSync(resolvedImport)) {
|
|
55
|
+
if (verbose) log(`got index import ${resolvedImport}`);
|
|
56
|
+
return `${line.substring(0, line.length - 2)}/index.mjs${quote};`;
|
|
57
|
+
}
|
|
58
|
+
return `${line.substring(0, line.length - 2)}.mjs${quote};`;
|
|
78
59
|
}
|
|
79
60
|
function transformExport(file, line, quote, verbose) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const resolvedExport = path.resolve(path.dirname(file), exportPath);
|
|
91
|
-
if (existsSync(resolvedExport)) {
|
|
92
|
-
if (verbose) {
|
|
93
|
-
log(`got index export ${resolvedExport}`);
|
|
94
|
-
}
|
|
95
|
-
return `${line.substring(0, line.length - 2)}/index.mjs${quote};`;
|
|
96
|
-
}
|
|
97
|
-
return `${line.substring(0, line.length - 2)}.mjs${quote};`;
|
|
61
|
+
const exportPathMarker = ` from ${quote}`;
|
|
62
|
+
if (!(line.includes("export ") && line.includes(`${exportPathMarker}.`))) return;
|
|
63
|
+
const exportStartIndex = line.lastIndexOf(exportPathMarker);
|
|
64
|
+
const exportPath = line.substring(exportStartIndex + exportPathMarker.length, line.length - 2);
|
|
65
|
+
const resolvedExport = path.resolve(path.dirname(file), exportPath);
|
|
66
|
+
if (existsSync(resolvedExport)) {
|
|
67
|
+
if (verbose) log(`got index export ${resolvedExport}`);
|
|
68
|
+
return `${line.substring(0, line.length - 2)}/index.mjs${quote};`;
|
|
69
|
+
}
|
|
70
|
+
return `${line.substring(0, line.length - 2)}.mjs${quote};`;
|
|
98
71
|
}
|
|
99
72
|
|
|
73
|
+
//#endregion
|
|
74
|
+
//#region src/index.ts
|
|
100
75
|
const typesDir = "dist/types";
|
|
101
|
-
const
|
|
102
|
-
enabled: !!process.env.COVERAGE,
|
|
103
|
-
include: ["src/**/*.*"],
|
|
104
|
-
exclude: ["*.d.ts", "*.ohm", ".gitignore"],
|
|
105
|
-
provider: "v8"
|
|
106
|
-
};
|
|
107
|
-
const COMMON_DEFAULTS = {
|
|
108
|
-
verbose: false
|
|
109
|
-
};
|
|
76
|
+
const COMMON_DEFAULTS = { verbose: false };
|
|
110
77
|
const TS_CONFIG_PATHS_OPTIONS = {
|
|
111
|
-
|
|
112
|
-
|
|
78
|
+
...COMMON_DEFAULTS,
|
|
79
|
+
tsconfig: "./tsconfig.json"
|
|
113
80
|
};
|
|
114
81
|
const BUNDLE_DEFAULTS = {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
82
|
+
builtin: false,
|
|
83
|
+
dependencies: false,
|
|
84
|
+
devDependencies: true,
|
|
85
|
+
peerDependencies: false,
|
|
86
|
+
exclude: [],
|
|
87
|
+
include: [],
|
|
88
|
+
nodeModules: false
|
|
122
89
|
};
|
|
123
90
|
const LIBRARY_DEFAULTS = {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
91
|
+
...TS_CONFIG_PATHS_OPTIONS,
|
|
92
|
+
cleanup: true,
|
|
93
|
+
entry: "src/index.ts",
|
|
94
|
+
bundle: {},
|
|
95
|
+
formats: ["es"],
|
|
96
|
+
manifest: "package.json"
|
|
130
97
|
};
|
|
131
98
|
function mergeWithDefaults(options) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
99
|
+
return {
|
|
100
|
+
...LIBRARY_DEFAULTS,
|
|
101
|
+
...options
|
|
102
|
+
};
|
|
136
103
|
}
|
|
137
104
|
function tsconfigPaths(options = {}) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}
|
|
164
|
-
};
|
|
105
|
+
const tsconfig = options.tsconfig ?? TS_CONFIG_PATHS_OPTIONS.tsconfig;
|
|
106
|
+
const verbose = options.verbose ?? TS_CONFIG_PATHS_OPTIONS.verbose;
|
|
107
|
+
return {
|
|
108
|
+
name: "vite-plugin-lib:alias",
|
|
109
|
+
enforce: "pre",
|
|
110
|
+
config: async (config) => {
|
|
111
|
+
const tsconfigPath = path.resolve(config.root ?? ".", tsconfig);
|
|
112
|
+
const { baseUrl, paths } = await readConfig(tsconfigPath);
|
|
113
|
+
if (!baseUrl || !paths) {
|
|
114
|
+
log(`No paths found in ${tsconfig}.`);
|
|
115
|
+
return config;
|
|
116
|
+
}
|
|
117
|
+
const pathToAlias = pathToAliasFactory(tsconfigPath, baseUrl, verbose);
|
|
118
|
+
const aliasOptions = Object.entries(paths).map(pathToAlias).filter((alias) => alias !== void 0);
|
|
119
|
+
if (aliasOptions.length > 0) logInjectedAliases(aliasOptions, config, verbose);
|
|
120
|
+
const existingAlias = transformExistingAlias(config.resolve?.alias);
|
|
121
|
+
return {
|
|
122
|
+
...config,
|
|
123
|
+
resolve: {
|
|
124
|
+
...config.resolve,
|
|
125
|
+
alias: [...existingAlias, ...aliasOptions]
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
};
|
|
165
130
|
}
|
|
166
|
-
function buildConfig({
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
const shouldBeBundled = bundleWithDefaults.include.some((rule) => matchesRule(source, rule));
|
|
206
|
-
return shouldBeExternalized && !shouldBeBundled;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
}
|
|
212
|
-
};
|
|
131
|
+
function buildConfig({ entry, formats, manifest, name, bundle, verbose }) {
|
|
132
|
+
const bundleWithDefaults = {
|
|
133
|
+
...BUNDLE_DEFAULTS,
|
|
134
|
+
...bundle
|
|
135
|
+
};
|
|
136
|
+
const packagesToExternalize = [
|
|
137
|
+
...getBuiltinModules(bundleWithDefaults),
|
|
138
|
+
...getDependencies(manifest, bundleWithDefaults, verbose),
|
|
139
|
+
...bundleWithDefaults.exclude
|
|
140
|
+
];
|
|
141
|
+
if (!bundleWithDefaults.nodeModules) {
|
|
142
|
+
packagesToExternalize.push(/node_modules/);
|
|
143
|
+
if (verbose) log(`Externalized node_modules.`);
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
name: "vite-plugin-lib:build",
|
|
147
|
+
enforce: "pre",
|
|
148
|
+
apply: "build",
|
|
149
|
+
config: async (config) => {
|
|
150
|
+
return {
|
|
151
|
+
...config,
|
|
152
|
+
build: {
|
|
153
|
+
...config.build,
|
|
154
|
+
lib: {
|
|
155
|
+
...config.build?.lib,
|
|
156
|
+
entry: path.resolve(config.root ?? ".", entry),
|
|
157
|
+
formats,
|
|
158
|
+
name,
|
|
159
|
+
fileName: (format) => formatToFileName(entry, format)
|
|
160
|
+
},
|
|
161
|
+
rollupOptions: { external: (source, _importer, _isResolved) => {
|
|
162
|
+
const shouldBeExternalized = packagesToExternalize.some((rule) => matchesRule(source, rule));
|
|
163
|
+
const shouldBeBundled = bundleWithDefaults.include.some((rule) => matchesRule(source, rule));
|
|
164
|
+
return shouldBeExternalized && !shouldBeBundled;
|
|
165
|
+
} }
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
};
|
|
213
170
|
}
|
|
214
171
|
function matchesRule(source, rule) {
|
|
215
|
-
|
|
172
|
+
return typeof rule === "string" ? rule === source : rule.test(source);
|
|
216
173
|
}
|
|
217
174
|
function getDependencies(manifest, bundle, verbose) {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
return dependenciesToExternalize;
|
|
244
|
-
} catch (error) {
|
|
245
|
-
const message = getErrorMessage(error);
|
|
246
|
-
logError(`Could not read ${c.green(manifest)}: ${message}`);
|
|
247
|
-
throw error;
|
|
248
|
-
}
|
|
175
|
+
try {
|
|
176
|
+
const content = readFileSync(manifest, { encoding: "utf-8" });
|
|
177
|
+
const { dependencies = {}, devDependencies = {}, peerDependencies = {} } = JSON.parse(content);
|
|
178
|
+
const dependenciesToExternalize = [];
|
|
179
|
+
if (!bundle.dependencies) {
|
|
180
|
+
const names = Object.keys(dependencies);
|
|
181
|
+
dependenciesToExternalize.push(...names);
|
|
182
|
+
if (verbose) log(`Externalized ${names.length} dependencies.`);
|
|
183
|
+
}
|
|
184
|
+
if (!bundle.devDependencies) {
|
|
185
|
+
const names = Object.keys(devDependencies);
|
|
186
|
+
dependenciesToExternalize.push(...names);
|
|
187
|
+
if (verbose) log(`Externalized ${names.length} devDependencies.`);
|
|
188
|
+
}
|
|
189
|
+
if (!bundle.peerDependencies) {
|
|
190
|
+
const names = Object.keys(peerDependencies);
|
|
191
|
+
dependenciesToExternalize.push(...names);
|
|
192
|
+
if (verbose) log(`Externalized ${names.length} peerDependencies.`);
|
|
193
|
+
}
|
|
194
|
+
return dependenciesToExternalize;
|
|
195
|
+
} catch (error) {
|
|
196
|
+
const message = getErrorMessage(error);
|
|
197
|
+
logError(`Could not read ${c.green(manifest)}: ${message}`);
|
|
198
|
+
throw error;
|
|
199
|
+
}
|
|
249
200
|
}
|
|
250
201
|
function getBuiltinModules(bundle) {
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
202
|
+
if (bundle.builtin) return [];
|
|
203
|
+
log("Externalized builtin modules.");
|
|
204
|
+
return [
|
|
205
|
+
...builtinModules,
|
|
206
|
+
/node:/,
|
|
207
|
+
/bun:/,
|
|
208
|
+
/deno:/
|
|
209
|
+
];
|
|
256
210
|
}
|
|
257
211
|
function logInjectedAliases(aliasOptions, config, verbose) {
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
}
|
|
262
|
-
const base = `${path.resolve(config.root ?? ".")}/`;
|
|
263
|
-
aliasOptions.map(
|
|
264
|
-
({ find, replacement }) => ` ${c.gray(">")} ${c.green(find.toString())} ${c.gray(
|
|
265
|
-
c.bold("->")
|
|
266
|
-
)} ${c.green(replacement.replace(base, ""))}`
|
|
267
|
-
).forEach(log);
|
|
212
|
+
log(`Injected ${c.green(aliasOptions.length)} aliases.`);
|
|
213
|
+
if (!verbose) return;
|
|
214
|
+
const base = `${path.resolve(config.root ?? ".")}/`;
|
|
215
|
+
aliasOptions.map(({ find, replacement }) => ` ${c.gray(">")} ${c.green(find.toString())} ${c.gray(c.bold("->"))} ${c.green(replacement.replace(base, ""))}`).forEach(log);
|
|
268
216
|
}
|
|
269
217
|
function pathToAliasFactory(tsconfigPath, baseUrl, verbose) {
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
logWarn(`No replacement found for alias ${c.green(alias)}.`);
|
|
291
|
-
}
|
|
292
|
-
return void 0;
|
|
293
|
-
}
|
|
294
|
-
return {
|
|
295
|
-
find,
|
|
296
|
-
replacement
|
|
297
|
-
};
|
|
298
|
-
};
|
|
218
|
+
return ([alias, replacements]) => {
|
|
219
|
+
if (replacements.length === 0) {
|
|
220
|
+
if (verbose) logWarn(`No replacements for alias ${c.green(alias)}.`);
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
if (verbose && replacements.length > 1) {
|
|
224
|
+
logWarn(`Found more than one replacement for alias ${c.green(alias)}.`);
|
|
225
|
+
logWarn("Using the first existing replacement.");
|
|
226
|
+
}
|
|
227
|
+
const find = alias.replace("/*", "");
|
|
228
|
+
const replacement = getFirstExistingReplacement(tsconfigPath, baseUrl, replacements, find);
|
|
229
|
+
if (!replacement) {
|
|
230
|
+
if (verbose) logWarn(`No replacement found for alias ${c.green(alias)}.`);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
find,
|
|
235
|
+
replacement
|
|
236
|
+
};
|
|
237
|
+
};
|
|
299
238
|
}
|
|
300
239
|
function getFirstExistingReplacement(tsconfigPath, baseUrl, replacements, find, verbose) {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
);
|
|
307
|
-
if (existsSync(resolvedReplacement)) {
|
|
308
|
-
return resolvedReplacement;
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
return void 0;
|
|
240
|
+
for (const replacement of replacements) {
|
|
241
|
+
const resolvedReplacement = path.resolve(tsconfigPath, baseUrl, replacement.replace("/*", "") ?? find);
|
|
242
|
+
if (existsSync(resolvedReplacement)) return resolvedReplacement;
|
|
243
|
+
else if (verbose) logWarn(`Path ${c.green(replacement)} does not exist.`);
|
|
244
|
+
}
|
|
312
245
|
}
|
|
313
246
|
function formatToFileName(entry, format) {
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
if (format === "es") {
|
|
319
|
-
return `${entryFileName}.mjs`;
|
|
320
|
-
}
|
|
321
|
-
if (format === "cjs") {
|
|
322
|
-
return `${entryFileName}.cjs`;
|
|
323
|
-
}
|
|
324
|
-
return `${entryFileName}.${format}.js`;
|
|
247
|
+
const entryFileName = entry.substring(entry.lastIndexOf("/") + 1, entry.lastIndexOf("."));
|
|
248
|
+
if (format === "es") return `${entryFileName}.mjs`;
|
|
249
|
+
if (format === "cjs") return `${entryFileName}.cjs`;
|
|
250
|
+
return `${entryFileName}.${format}.js`;
|
|
325
251
|
}
|
|
326
252
|
function library(options = {}) {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
})
|
|
348
|
-
];
|
|
349
|
-
if (mergedOptions.cleanup) {
|
|
350
|
-
plugins.push(cleanup(mergedOptions));
|
|
351
|
-
}
|
|
352
|
-
return plugins;
|
|
253
|
+
const mergedOptions = mergeWithDefaults(options);
|
|
254
|
+
const plugins = [
|
|
255
|
+
tsconfigPaths(mergedOptions),
|
|
256
|
+
buildConfig(mergedOptions),
|
|
257
|
+
dts$1({
|
|
258
|
+
cleanVueFileName: true,
|
|
259
|
+
copyDtsFiles: true,
|
|
260
|
+
include: `${path.resolve(mergedOptions.entry, "..")}/**`,
|
|
261
|
+
outDir: typesDir,
|
|
262
|
+
staticImport: true,
|
|
263
|
+
tsconfigPath: mergedOptions.tsconfig,
|
|
264
|
+
afterBuild: async () => {
|
|
265
|
+
if (includesESFormat(mergedOptions.formats)) await generateMTSDeclarations(typesDir, mergedOptions.formats?.length === 1, options.verbose);
|
|
266
|
+
}
|
|
267
|
+
})
|
|
268
|
+
];
|
|
269
|
+
if (mergedOptions.cleanup) plugins.push(cleanup(mergedOptions));
|
|
270
|
+
return plugins;
|
|
353
271
|
}
|
|
354
272
|
function transformExistingAlias(alias) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
return Object.entries(alias).map(([find, replacement]) => ({
|
|
362
|
-
find,
|
|
363
|
-
replacement
|
|
364
|
-
}));
|
|
273
|
+
if (!alias) return [];
|
|
274
|
+
if (Array.isArray(alias)) return alias;
|
|
275
|
+
return Object.entries(alias).map(([find, replacement]) => ({
|
|
276
|
+
find,
|
|
277
|
+
replacement
|
|
278
|
+
}));
|
|
365
279
|
}
|
|
366
280
|
async function readConfig(configPath) {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
} catch (error) {
|
|
377
|
-
const message = getErrorMessage(error);
|
|
378
|
-
logError(`Could not read ${configPath}: ${message}`);
|
|
379
|
-
throw error;
|
|
380
|
-
}
|
|
281
|
+
try {
|
|
282
|
+
const configFileText = await readFile(configPath, { encoding: "utf-8" });
|
|
283
|
+
const { config } = ts.parseConfigFileTextToJson(configPath, configFileText);
|
|
284
|
+
const { options } = ts.parseJsonConfigFileContent(config, ts.sys, path.dirname(configPath));
|
|
285
|
+
return options;
|
|
286
|
+
} catch (error) {
|
|
287
|
+
logError(`Could not read ${configPath}: ${getErrorMessage(error)}`);
|
|
288
|
+
throw error;
|
|
289
|
+
}
|
|
381
290
|
}
|
|
382
291
|
function includesESFormat(formats) {
|
|
383
|
-
|
|
292
|
+
return formats?.includes("es") ?? true;
|
|
384
293
|
}
|
|
385
294
|
function getErrorMessage(error) {
|
|
386
|
-
|
|
387
|
-
return isObject ? error.message : String(error);
|
|
295
|
+
return typeof error === "object" && error !== null && "message" in error ? error.message : String(error);
|
|
388
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Remove any temporary `vite.config.ts.timestamp-*` files.
|
|
299
|
+
*/
|
|
389
300
|
function cleanup(options = {}) {
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
log(`Removed ${deletedCount} temporary files.`);
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
};
|
|
301
|
+
const verbose = options.verbose ?? COMMON_DEFAULTS.verbose;
|
|
302
|
+
return {
|
|
303
|
+
name: "vite-plugin-lib:cleanup",
|
|
304
|
+
enforce: "post",
|
|
305
|
+
closeBundle: () => {
|
|
306
|
+
let deletedCount = 0;
|
|
307
|
+
readdirSync(".").forEach((file) => {
|
|
308
|
+
if (!file.startsWith("vite.config.ts.timestamp-")) return;
|
|
309
|
+
rmSync(`./${file}`);
|
|
310
|
+
deletedCount++;
|
|
311
|
+
});
|
|
312
|
+
if (verbose) log(`Removed ${deletedCount} temporary files.`);
|
|
313
|
+
}
|
|
314
|
+
};
|
|
408
315
|
}
|
|
409
316
|
|
|
410
|
-
|
|
317
|
+
//#endregion
|
|
318
|
+
export { cleanup, dts, library, tsconfigPaths };
|
|
319
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["typesDir","dependenciesToExternalize: string[]","dts","error: any"],"sources":["../src/logger.ts","../src/es-declarations.ts","../src/index.ts"],"sourcesContent":["import c from 'picocolors'\n\nexport function log(text: string): void {\n // eslint-disable-next-line no-console\n console.log(`${c.cyan('[vite:lib]')} ${text}`)\n}\n\nexport function logWarn(text: string): void {\n console.warn(`${c.yellow('[vite:lib]')} ${text}`)\n}\n\nexport function logError(text: string): void {\n console.error(`${c.red('[vite:lib]')} ${text}`)\n}\n","import { existsSync } from 'node:fs'\nimport { readFile, readdir, unlink, writeFile } from 'node:fs/promises'\nimport path from 'node:path'\n\nimport { normalizePath } from 'vite'\n\nimport { log } from './logger'\n\nexport async function generateMTSDeclarations(\n typesDir: string,\n deleteSourceFiles: boolean,\n verbose: boolean | undefined,\n): Promise<void> {\n const files = await collectFiles(typesDir)\n for (const file of files) {\n await createMTSImports(file, verbose)\n if (deleteSourceFiles) {\n unlink(file)\n }\n }\n log(`Generated ${files.length} MTS declarations.`)\n}\n\nasync function collectFiles(dir: string): Promise<string[]> {\n const entries = await readdir(dir, {\n recursive: false, // does not provide full path to nested files\n withFileTypes: true,\n })\n const files = entries.filter((entry) => entry.isFile())\n const nestedFiles = await Promise.all(\n entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => collectFiles(normalizePath(path.join(dir, entry.name)))),\n )\n return files\n .map((file) => normalizePath(path.join(dir, file.name)))\n .concat(...nestedFiles)\n}\n\nasync function createMTSImports(file: string, verbose: boolean | undefined) {\n const content = await readFile(file, 'utf-8')\n const lines = content.split('\\n')\n const modified = lines.map((line) => transformLine(file, line, verbose))\n const targetFile = file.replace('.d.ts', '.d.mts')\n await writeFile(targetFile, modified.join('\\n'))\n}\n\nfunction transformLine(\n file: string,\n line: string,\n verbose: boolean | undefined,\n) {\n return (\n // eslint-disable-next-line style/quotes\n transformStaticImport(file, line, \"'\", verbose) ??\n transformStaticImport(file, line, '\"', verbose) ??\n // eslint-disable-next-line style/quotes\n transformExport(file, line, \"'\", verbose) ??\n transformExport(file, line, '\"', verbose) ??\n line\n )\n}\n\nfunction transformStaticImport(\n file: string,\n line: string,\n quote: string,\n verbose: boolean | undefined,\n) {\n const importPathMarker = `from ${quote}`\n const isStaticImport =\n line.includes('import ') && line.includes(`${importPathMarker}.`)\n if (!isStaticImport) {\n return undefined\n }\n\n const importStartIndex = line.lastIndexOf(importPathMarker)\n const importPath = line.substring(\n importStartIndex + importPathMarker.length,\n line.length - 2,\n )\n const resolvedImport = path.resolve(path.dirname(file), importPath)\n if (existsSync(resolvedImport)) {\n if (verbose) {\n log(`got index import ${resolvedImport}`)\n }\n return `${line.substring(0, line.length - 2)}/index.mjs${quote};`\n }\n\n return `${line.substring(0, line.length - 2)}.mjs${quote};`\n}\n\nfunction transformExport(\n file: string,\n line: string,\n quote: string,\n verbose: boolean | undefined,\n) {\n const exportPathMarker = ` from ${quote}`\n const isStaticExport =\n line.includes('export ') && line.includes(`${exportPathMarker}.`)\n if (!isStaticExport) {\n return undefined\n }\n\n const exportStartIndex = line.lastIndexOf(exportPathMarker)\n const exportPath = line.substring(\n exportStartIndex + exportPathMarker.length,\n line.length - 2,\n )\n const resolvedExport = path.resolve(path.dirname(file), exportPath)\n if (existsSync(resolvedExport)) {\n if (verbose) {\n log(`got index export ${resolvedExport}`)\n }\n return `${line.substring(0, line.length - 2)}/index.mjs${quote};`\n }\n\n return `${line.substring(0, line.length - 2)}.mjs${quote};`\n}\n","import { existsSync, readFileSync, readdirSync, rmSync } from 'node:fs'\nimport { readFile } from 'node:fs/promises'\nimport { builtinModules } from 'node:module'\nimport path from 'node:path'\n\nimport c from 'picocolors'\nimport type { CompilerOptions } from 'typescript'\nimport ts from 'typescript'\nimport type {\n Alias,\n AliasOptions,\n LibraryFormats,\n Plugin,\n UserConfig,\n} from 'vite'\nimport dts from 'vite-plugin-dts'\n\nimport { generateMTSDeclarations } from './es-declarations'\nimport { log, logError, logWarn } from './logger'\n\nexport * as dts from 'vite-plugin-dts'\n\nconst typesDir = 'dist/types'\n\nexport interface CommonOptions {\n verbose: boolean\n}\n\nconst COMMON_DEFAULTS = {\n verbose: false,\n} satisfies Partial<CommonOptions>\n\nexport interface TSConfigPathsOptions extends CommonOptions {\n /** Path to the tsconfig file (relative to the project root). Defaults to `./tsconfig.json` */\n tsconfig: string\n}\n\nconst TS_CONFIG_PATHS_OPTIONS = {\n ...COMMON_DEFAULTS,\n tsconfig: './tsconfig.json',\n} satisfies Partial<TSConfigPathsOptions>\n\nexport interface BundleOptions {\n /** If `false`, all builtin modules will be externalized. Defaults to `false`. */\n builtin: boolean\n /** If `false`, all dependencies will be externalized. Defaults to `false`. */\n dependencies: boolean\n /** If `false`, all devDependencies will be externalized. Defaults to `true`. */\n devDependencies: boolean\n /** If `false`, all dependencies will be externalized. Defaults to `false`. */\n peerDependencies: boolean\n /** List of packages or modules to externalize. Defaults to `[]`. */\n exclude: (string | RegExp)[]\n /** List of packages or modules to bundle. Acts as an override and defaults to `[]`. */\n include: (string | RegExp)[]\n /** If `false`, all direct imports from `node_modules` will be externalized. Defaults to `false`. */\n nodeModules: boolean\n}\n\nconst BUNDLE_DEFAULTS = {\n builtin: false,\n dependencies: false,\n devDependencies: true,\n peerDependencies: false,\n exclude: [],\n include: [],\n nodeModules: false,\n} satisfies BundleOptions\n\nexport interface LibraryOptions extends TSConfigPathsOptions {\n /** Defaults to `src/index.ts`. */\n entry: string\n /** Bundle configuration for packages and modules. See {@link BundleOptions} for defaults. */\n bundle: Partial<BundleOptions>\n /** Defaults to `['es']`. */\n formats: LibraryFormats[]\n /** Defaults to `package.json`. */\n manifest: string\n name?: string\n /** Remove any temporary build files. Defaults to `true`. */\n cleanup: boolean\n}\n\nconst LIBRARY_DEFAULTS = {\n ...TS_CONFIG_PATHS_OPTIONS,\n cleanup: true,\n entry: 'src/index.ts',\n bundle: {},\n formats: ['es'],\n manifest: 'package.json',\n} satisfies Partial<LibraryOptions>\n\nfunction mergeWithDefaults(options: Partial<LibraryOptions>): LibraryOptions {\n return {\n ...LIBRARY_DEFAULTS,\n ...options,\n }\n}\n\nexport function tsconfigPaths(options: Partial<TSConfigPathsOptions> = {}): Plugin {\n const tsconfig = options.tsconfig ?? TS_CONFIG_PATHS_OPTIONS.tsconfig\n const verbose = options.verbose ?? TS_CONFIG_PATHS_OPTIONS.verbose\n return {\n name: 'vite-plugin-lib:alias',\n enforce: 'pre',\n config: async (config) => {\n const tsconfigPath = path.resolve(config.root ?? '.', tsconfig)\n const { baseUrl, paths } = await readConfig(tsconfigPath)\n if (!baseUrl || !paths) {\n log(`No paths found in ${tsconfig}.`)\n return config\n }\n const pathToAlias = pathToAliasFactory(tsconfigPath, baseUrl, verbose)\n const aliasOptions = Object.entries(paths)\n .map(pathToAlias)\n .filter((alias) => alias !== undefined)\n if (aliasOptions.length > 0) {\n logInjectedAliases(aliasOptions, config, verbose)\n }\n const existingAlias = transformExistingAlias(config.resolve?.alias)\n return {\n ...config,\n resolve: {\n ...config.resolve,\n alias: [...existingAlias, ...aliasOptions],\n },\n }\n },\n }\n}\n\nfunction buildConfig({\n entry,\n formats,\n manifest,\n name,\n bundle,\n verbose,\n}: LibraryOptions): Plugin {\n const bundleWithDefaults = { ...BUNDLE_DEFAULTS, ...bundle }\n const packagesToExternalize = [\n ...getBuiltinModules(bundleWithDefaults),\n ...getDependencies(manifest, bundleWithDefaults, verbose),\n ...bundleWithDefaults.exclude,\n ]\n if (!bundleWithDefaults.nodeModules) {\n packagesToExternalize.push(/node_modules/)\n if (verbose) {\n log(`Externalized node_modules.`)\n }\n }\n return {\n name: 'vite-plugin-lib:build',\n enforce: 'pre',\n apply: 'build',\n config: async (config) => {\n return {\n ...config,\n build: {\n ...config.build,\n lib: {\n ...config.build?.lib,\n entry: path.resolve(config.root ?? '.', entry),\n formats,\n name,\n fileName: (format: string) => formatToFileName(entry, format),\n },\n rollupOptions: {\n external: (source: string, _importer: string | undefined, _isResolved: boolean) => {\n const shouldBeExternalized = packagesToExternalize.some((rule) => matchesRule(source, rule))\n const shouldBeBundled = bundleWithDefaults.include.some((rule) => matchesRule(source, rule))\n return shouldBeExternalized && !shouldBeBundled\n },\n },\n },\n }\n },\n }\n}\n\nfunction matchesRule(source: string, rule: string | RegExp) {\n return typeof rule === 'string' ? rule === source : rule.test(source)\n}\n\nfunction getDependencies(manifest: string, bundle: BundleOptions, verbose: boolean): string[] {\n try {\n const content = readFileSync(manifest, { encoding: 'utf-8' })\n const { dependencies = {}, devDependencies = {}, peerDependencies = {} } = JSON.parse(content)\n const dependenciesToExternalize: string[] = []\n if (!bundle.dependencies) {\n const names = Object.keys(dependencies)\n dependenciesToExternalize.push(...names)\n if (verbose) {\n log(`Externalized ${names.length} dependencies.`)\n }\n }\n if (!bundle.devDependencies) {\n const names = Object.keys(devDependencies)\n dependenciesToExternalize.push(...names)\n if (verbose) {\n log(`Externalized ${names.length} devDependencies.`)\n }\n }\n if (!bundle.peerDependencies) {\n const names = Object.keys(peerDependencies)\n dependenciesToExternalize.push(...names)\n if (verbose) {\n log(`Externalized ${names.length} peerDependencies.`)\n }\n }\n return dependenciesToExternalize\n } catch (error) {\n const message = getErrorMessage(error)\n logError(`Could not read ${c.green(manifest)}: ${message}`)\n throw error\n }\n}\n\nfunction getBuiltinModules(bundle: BundleOptions) {\n if (bundle.builtin) {\n return []\n }\n log('Externalized builtin modules.')\n return [...builtinModules, /node:/, /bun:/, /deno:/]\n}\n\nfunction logInjectedAliases(\n aliasOptions: Alias[],\n config: UserConfig,\n verbose?: boolean,\n) {\n log(`Injected ${c.green(aliasOptions.length)} aliases.`)\n if (!verbose) {\n return\n }\n const base = `${path.resolve(config.root ?? '.')}/`\n aliasOptions\n .map(\n ({ find, replacement }) =>\n ` ${c.gray('>')} ${c.green(find.toString())} ${c.gray(\n c.bold('->'),\n )} ${c.green(replacement.replace(base, ''))}`,\n )\n .forEach(log)\n}\n\nfunction pathToAliasFactory(\n tsconfigPath: string,\n baseUrl: string,\n verbose?: boolean,\n): (path: [string, string[]]) => Alias | undefined {\n return ([alias, replacements]) => {\n if (replacements.length === 0) {\n if (verbose) {\n logWarn(`No replacements for alias ${c.green(alias)}.`)\n }\n return undefined\n }\n if (verbose && replacements.length > 1) {\n logWarn(`Found more than one replacement for alias ${c.green(alias)}.`)\n logWarn('Using the first existing replacement.')\n }\n const find = alias.replace('/*', '')\n const replacement = getFirstExistingReplacement(\n tsconfigPath,\n baseUrl,\n replacements,\n find,\n )\n if (!replacement) {\n if (verbose) {\n logWarn(`No replacement found for alias ${c.green(alias)}.`)\n }\n return undefined\n }\n return {\n find,\n replacement,\n }\n }\n}\n\nfunction getFirstExistingReplacement(\n tsconfigPath: string,\n baseUrl: string,\n replacements: string[],\n find: string,\n verbose?: boolean,\n): string | undefined {\n for (const replacement of replacements) {\n const resolvedReplacement = path.resolve(\n tsconfigPath,\n baseUrl,\n replacement.replace('/*', '') ?? find,\n )\n if (existsSync(resolvedReplacement)) {\n return resolvedReplacement\n } else if (verbose) {\n logWarn(`Path ${c.green(replacement)} does not exist.`)\n }\n }\n return undefined\n}\n\nfunction formatToFileName(entry: string, format: string): string {\n const entryFileName = entry.substring(\n entry.lastIndexOf('/') + 1,\n entry.lastIndexOf('.'),\n )\n if (format === 'es') {\n return `${entryFileName}.mjs`\n }\n if (format === 'cjs') {\n return `${entryFileName}.cjs`\n }\n return `${entryFileName}.${format}.js`\n}\n\nexport function library(options: Partial<LibraryOptions> = {}): Plugin[] {\n const mergedOptions = mergeWithDefaults(options)\n const plugins = [\n tsconfigPaths(mergedOptions),\n buildConfig(mergedOptions),\n dts({\n cleanVueFileName: true,\n copyDtsFiles: true,\n include: `${path.resolve(mergedOptions.entry, '..')}/**`,\n outDir: typesDir,\n staticImport: true,\n tsconfigPath: mergedOptions.tsconfig,\n afterBuild: async () => {\n if (includesESFormat(mergedOptions.formats)) {\n await generateMTSDeclarations(\n typesDir,\n mergedOptions.formats?.length === 1,\n options.verbose,\n )\n }\n },\n }),\n ]\n\n if (mergedOptions.cleanup) {\n plugins.push(cleanup(mergedOptions))\n }\n\n return plugins\n}\n\nfunction transformExistingAlias(alias: AliasOptions | undefined): Alias[] {\n if (!alias) {\n return []\n }\n if (Array.isArray(alias)) {\n return alias\n }\n return Object.entries(alias).map(([find, replacement]) => ({\n find,\n replacement,\n }))\n}\n\nasync function readConfig(configPath: string): Promise<CompilerOptions> {\n try {\n const configFileText = await readFile(configPath, { encoding: 'utf-8' })\n\n const { config } = ts.parseConfigFileTextToJson(configPath, configFileText)\n\n const { options } = ts.parseJsonConfigFileContent(\n config,\n ts.sys,\n path.dirname(configPath),\n )\n return options\n } catch (error: any) {\n const message = getErrorMessage(error)\n logError(`Could not read ${configPath}: ${message}`)\n throw error\n }\n}\n\nfunction includesESFormat(formats?: LibraryFormats[]) {\n return formats?.includes('es') ?? true\n}\n\nfunction getErrorMessage(error: unknown) {\n const isObject =\n typeof error === 'object' && error !== null && 'message' in error\n return isObject ? error.message : String(error)\n}\n\n/**\n * Remove any temporary `vite.config.ts.timestamp-*` files.\n */\nexport function cleanup(options: Partial<CommonOptions> = {}): Plugin {\n const verbose = options.verbose ?? COMMON_DEFAULTS.verbose\n return {\n name: 'vite-plugin-lib:cleanup',\n enforce: 'post',\n closeBundle: () => {\n let deletedCount = 0\n readdirSync('.').forEach((file) => {\n if (!file.startsWith('vite.config.ts.timestamp-')) {\n return\n }\n rmSync(`./${file}`)\n deletedCount++\n })\n if (verbose) {\n log(`Removed ${deletedCount} temporary files.`)\n }\n },\n }\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vite-plugin-lib",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "4.0.1",
|
|
5
5
|
"description": "Vite plugin for build configuration, automatic aliases, and type declarations.",
|
|
6
6
|
"author": "Jan Müller <janmueller3698@gmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -43,17 +43,17 @@
|
|
|
43
43
|
"vite-plugin-dts": "4.5.4"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"
|
|
46
|
+
"publint": "0.3.15",
|
|
47
|
+
"tsdown": "0.16.1",
|
|
47
48
|
"typescript": "5.9.3",
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"@yeger/tsconfig": "2.1.1"
|
|
49
|
+
"vite": "7.2.2",
|
|
50
|
+
"@yeger/tsconfig": "2.1.2"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
|
54
54
|
},
|
|
55
55
|
"scripts": {
|
|
56
|
-
"build": "
|
|
56
|
+
"build": "tsdown",
|
|
57
57
|
"check:publish": "publint run --strict",
|
|
58
58
|
"check:tsc": "tsc",
|
|
59
59
|
"lint": "yeger-lint"
|
package/dist/index.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { LibraryFormats, Plugin } from 'vite';
|
|
2
|
-
import * as vitePluginDts from 'vite-plugin-dts';
|
|
3
|
-
export { vitePluginDts as dts };
|
|
4
|
-
|
|
5
|
-
declare const coverage: {
|
|
6
|
-
enabled: boolean;
|
|
7
|
-
include: string[];
|
|
8
|
-
exclude: string[];
|
|
9
|
-
provider: "v8";
|
|
10
|
-
};
|
|
11
|
-
interface CommonOptions {
|
|
12
|
-
verbose: boolean;
|
|
13
|
-
}
|
|
14
|
-
interface TSConfigPathsOptions extends CommonOptions {
|
|
15
|
-
/** Path to the tsconfig file (relative to the project root). Defaults to `./tsconfig.json` */
|
|
16
|
-
tsconfig: string;
|
|
17
|
-
}
|
|
18
|
-
interface BundleOptions {
|
|
19
|
-
/** If `false`, all builtin modules will be externalized. Defaults to `false`. */
|
|
20
|
-
builtin: boolean;
|
|
21
|
-
/** If `false`, all dependencies will be externalized. Defaults to `false`. */
|
|
22
|
-
dependencies: boolean;
|
|
23
|
-
/** If `false`, all devDependencies will be externalized. Defaults to `true`. */
|
|
24
|
-
devDependencies: boolean;
|
|
25
|
-
/** If `false`, all dependencies will be externalized. Defaults to `false`. */
|
|
26
|
-
peerDependencies: boolean;
|
|
27
|
-
/** List of packages or modules to externalize. Defaults to `[]`. */
|
|
28
|
-
exclude: (string | RegExp)[];
|
|
29
|
-
/** List of packages or modules to bundle. Acts as an override and defaults to `[]`. */
|
|
30
|
-
include: (string | RegExp)[];
|
|
31
|
-
/** If `false`, all direct imports from `node_modules` will be externalized. Defaults to `false`. */
|
|
32
|
-
nodeModules: boolean;
|
|
33
|
-
}
|
|
34
|
-
interface LibraryOptions extends TSConfigPathsOptions {
|
|
35
|
-
/** Defaults to `src/index.ts`. */
|
|
36
|
-
entry: string;
|
|
37
|
-
/** Bundle configuration for packages and modules. See {@link BundleOptions} for defaults. */
|
|
38
|
-
bundle: Partial<BundleOptions>;
|
|
39
|
-
/** Defaults to `['es']`. */
|
|
40
|
-
formats: LibraryFormats[];
|
|
41
|
-
/** Defaults to `package.json`. */
|
|
42
|
-
manifest: string;
|
|
43
|
-
name?: string;
|
|
44
|
-
/** Remove any temporary build files. Defaults to `true`. */
|
|
45
|
-
cleanup: boolean;
|
|
46
|
-
}
|
|
47
|
-
declare function tsconfigPaths(options?: Partial<TSConfigPathsOptions>): Plugin;
|
|
48
|
-
declare function library(options?: Partial<LibraryOptions>): Plugin[];
|
|
49
|
-
/**
|
|
50
|
-
* Remove any temporary `vite.config.ts.timestamp-*` files.
|
|
51
|
-
*/
|
|
52
|
-
declare function cleanup(options?: Partial<CommonOptions>): Plugin;
|
|
53
|
-
|
|
54
|
-
export { cleanup, coverage, library, tsconfigPaths };
|
|
55
|
-
export type { BundleOptions, CommonOptions, LibraryOptions, TSConfigPathsOptions };
|