smartbundle 0.4.2 → 0.5.1-alpha.0

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.
@@ -83,6 +83,7 @@ async function buildTypes({
83
83
  const finalPath = path__namespace.join(outDir, relativePath);
84
84
  const sourceFileName = fileName.replace(/\.d\.ts$/, ".ts");
85
85
  sourceToDtsMap.set(sourceFileName, finalPath);
86
+ fs__namespace.mkdirSync(path__namespace.dirname(finalPath), { recursive: true });
86
87
  fs__namespace.writeFileSync(finalPath, data);
87
88
  });
88
89
  return sourceToDtsMap;
@@ -41,6 +41,7 @@ async function buildTypes({
41
41
  const finalPath = path.join(outDir, relativePath);
42
42
  const sourceFileName = fileName.replace(/\.d\.ts$/, ".ts");
43
43
  sourceToDtsMap.set(sourceFileName, finalPath);
44
+ fs.mkdirSync(path.dirname(finalPath), { recursive: true });
44
45
  fs.writeFileSync(finalPath, data);
45
46
  });
46
47
  return sourceToDtsMap;
@@ -1,76 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vite = require("vite");
4
- const path = require("node:path");
5
4
  const errors = require("./errors.cjs");
6
- function mapToObject(map) {
7
- const obj = {};
8
- for (const [key, value] of map) {
9
- obj[key] = value;
10
- }
11
- return obj;
12
- }
13
5
  async function buildVite({
14
- entrypoints,
15
- packageJson,
16
- sourceDir,
17
- outDir
6
+ viteConfig
18
7
  }) {
19
- const outputs = await vite.build({
20
- publicDir: false,
21
- build: {
22
- outDir,
23
- write: true,
24
- minify: false,
25
- emptyOutDir: true,
26
- assetsInlineLimit: 0,
27
- terserOptions: {
28
- compress: false,
29
- mangle: false
30
- },
31
- lib: {
32
- entry: mapToObject(entrypoints),
33
- formats: ["es", "cjs"],
34
- fileName: (format, entryName) => {
35
- const entrypoint = entrypoints.get(entryName);
36
- if (!entrypoint) {
37
- const noExt2 = entryName.replace(/\.[^.]+$/, "");
38
- return "__do_not_import_directly__/" + noExt2 + (format === "es" ? ".js" : ".cjs");
39
- }
40
- const relativePath = path.relative(sourceDir, entrypoint);
41
- const noExt = relativePath.replace(/\.[^.]+$/, "");
42
- if (format === "es") {
43
- return `${noExt}.js`;
44
- }
45
- if (format === "cjs") {
46
- return `${noExt}.cjs`;
47
- }
48
- return noExt;
49
- }
50
- },
51
- rollupOptions: {
52
- external: (id, parentId, isResolved) => {
53
- if (id === packageJson.name) {
54
- return true;
55
- }
56
- if (id.startsWith("node:")) {
57
- return true;
58
- }
59
- if (id in (packageJson.dependencies ?? {})) {
60
- return true;
61
- }
62
- if (id in (packageJson.optionalDependencies ?? {})) {
63
- return true;
64
- }
65
- return false;
66
- },
67
- output: {
68
- exports: "named",
69
- preserveModules: true
70
- }
71
- }
72
- }
73
- });
8
+ const outputs = await vite.build(viteConfig);
74
9
  if (!Array.isArray(outputs)) {
75
10
  return {
76
11
  error: true,
@@ -1,74 +1,9 @@
1
1
  import { build } from "vite";
2
- import { relative } from "node:path";
3
2
  import { errors } from "./errors.js";
4
- function mapToObject(map) {
5
- const obj = {};
6
- for (const [key, value] of map) {
7
- obj[key] = value;
8
- }
9
- return obj;
10
- }
11
3
  async function buildVite({
12
- entrypoints,
13
- packageJson,
14
- sourceDir,
15
- outDir
4
+ viteConfig
16
5
  }) {
17
- const outputs = await build({
18
- publicDir: false,
19
- build: {
20
- outDir,
21
- write: true,
22
- minify: false,
23
- emptyOutDir: true,
24
- assetsInlineLimit: 0,
25
- terserOptions: {
26
- compress: false,
27
- mangle: false
28
- },
29
- lib: {
30
- entry: mapToObject(entrypoints),
31
- formats: ["es", "cjs"],
32
- fileName: (format, entryName) => {
33
- const entrypoint = entrypoints.get(entryName);
34
- if (!entrypoint) {
35
- const noExt2 = entryName.replace(/\.[^.]+$/, "");
36
- return "__do_not_import_directly__/" + noExt2 + (format === "es" ? ".js" : ".cjs");
37
- }
38
- const relativePath = relative(sourceDir, entrypoint);
39
- const noExt = relativePath.replace(/\.[^.]+$/, "");
40
- if (format === "es") {
41
- return `${noExt}.js`;
42
- }
43
- if (format === "cjs") {
44
- return `${noExt}.cjs`;
45
- }
46
- return noExt;
47
- }
48
- },
49
- rollupOptions: {
50
- external: (id, parentId, isResolved) => {
51
- if (id === packageJson.name) {
52
- return true;
53
- }
54
- if (id.startsWith("node:")) {
55
- return true;
56
- }
57
- if (id in (packageJson.dependencies ?? {})) {
58
- return true;
59
- }
60
- if (id in (packageJson.optionalDependencies ?? {})) {
61
- return true;
62
- }
63
- return false;
64
- },
65
- output: {
66
- exports: "named",
67
- preserveModules: true
68
- }
69
- }
70
- }
71
- });
6
+ const outputs = await build(viteConfig);
72
7
  if (!Array.isArray(outputs)) {
73
8
  return {
74
9
  error: true,
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const path = require("node:path");
4
+ const vite = require("vite");
5
+ function mapToObject(map) {
6
+ const obj = {};
7
+ for (const [key, value] of map) {
8
+ obj[key] = value;
9
+ }
10
+ return obj;
11
+ }
12
+ function createViteConfig({ dirs, packageJson }) {
13
+ const { sourceDir, outDir } = dirs;
14
+ const entrypoints = /* @__PURE__ */ new Map();
15
+ if (packageJson.exports) {
16
+ const mainEntry = path.join(sourceDir, packageJson.exports);
17
+ entrypoints.set(".", mainEntry);
18
+ }
19
+ if (packageJson.bin) {
20
+ const binEntry = path.join(sourceDir, packageJson.bin);
21
+ entrypoints.set("__bin__", binEntry);
22
+ }
23
+ const viteConfig = vite.defineConfig({
24
+ publicDir: false,
25
+ build: {
26
+ outDir,
27
+ write: true,
28
+ minify: false,
29
+ emptyOutDir: true,
30
+ assetsInlineLimit: 0,
31
+ terserOptions: {
32
+ compress: false,
33
+ mangle: false
34
+ },
35
+ lib: {
36
+ entry: mapToObject(entrypoints),
37
+ formats: ["es", "cjs"],
38
+ fileName: (format, entryName) => {
39
+ const entrypoint = entrypoints.get(entryName);
40
+ if (!entrypoint) {
41
+ const noExt2 = entryName.replace(/\.[^.]+$/, "");
42
+ return "__do_not_import_directly__/" + noExt2 + (format === "es" ? ".js" : ".cjs");
43
+ }
44
+ const relativePath = path.relative(sourceDir, entrypoint);
45
+ const noExt = relativePath.replace(/\.[^.]+$/, "");
46
+ if (format === "es") {
47
+ return `${noExt}.js`;
48
+ }
49
+ if (format === "cjs") {
50
+ return `${noExt}.cjs`;
51
+ }
52
+ return noExt;
53
+ }
54
+ },
55
+ rollupOptions: {
56
+ external: (id, parentId, isResolved) => {
57
+ if (id === packageJson.name) {
58
+ return true;
59
+ }
60
+ if (id.startsWith("node:")) {
61
+ return true;
62
+ }
63
+ if (id in (packageJson.dependencies ?? {})) {
64
+ return true;
65
+ }
66
+ if (id in (packageJson.optionalDependencies ?? {})) {
67
+ return true;
68
+ }
69
+ return false;
70
+ },
71
+ output: {
72
+ exports: "named",
73
+ preserveModules: true
74
+ }
75
+ }
76
+ }
77
+ });
78
+ return { viteConfig, entrypoints };
79
+ }
80
+ exports.createViteConfig = createViteConfig;
@@ -0,0 +1,80 @@
1
+ import { join, relative } from "node:path";
2
+ import { defineConfig } from "vite";
3
+ function mapToObject(map) {
4
+ const obj = {};
5
+ for (const [key, value] of map) {
6
+ obj[key] = value;
7
+ }
8
+ return obj;
9
+ }
10
+ function createViteConfig({ dirs, packageJson }) {
11
+ const { sourceDir, outDir } = dirs;
12
+ const entrypoints = /* @__PURE__ */ new Map();
13
+ if (packageJson.exports) {
14
+ const mainEntry = join(sourceDir, packageJson.exports);
15
+ entrypoints.set(".", mainEntry);
16
+ }
17
+ if (packageJson.bin) {
18
+ const binEntry = join(sourceDir, packageJson.bin);
19
+ entrypoints.set("__bin__", binEntry);
20
+ }
21
+ const viteConfig = defineConfig({
22
+ publicDir: false,
23
+ build: {
24
+ outDir,
25
+ write: true,
26
+ minify: false,
27
+ emptyOutDir: true,
28
+ assetsInlineLimit: 0,
29
+ terserOptions: {
30
+ compress: false,
31
+ mangle: false
32
+ },
33
+ lib: {
34
+ entry: mapToObject(entrypoints),
35
+ formats: ["es", "cjs"],
36
+ fileName: (format, entryName) => {
37
+ const entrypoint = entrypoints.get(entryName);
38
+ if (!entrypoint) {
39
+ const noExt2 = entryName.replace(/\.[^.]+$/, "");
40
+ return "__do_not_import_directly__/" + noExt2 + (format === "es" ? ".js" : ".cjs");
41
+ }
42
+ const relativePath = relative(sourceDir, entrypoint);
43
+ const noExt = relativePath.replace(/\.[^.]+$/, "");
44
+ if (format === "es") {
45
+ return `${noExt}.js`;
46
+ }
47
+ if (format === "cjs") {
48
+ return `${noExt}.cjs`;
49
+ }
50
+ return noExt;
51
+ }
52
+ },
53
+ rollupOptions: {
54
+ external: (id, parentId, isResolved) => {
55
+ if (id === packageJson.name) {
56
+ return true;
57
+ }
58
+ if (id.startsWith("node:")) {
59
+ return true;
60
+ }
61
+ if (id in (packageJson.dependencies ?? {})) {
62
+ return true;
63
+ }
64
+ if (id in (packageJson.optionalDependencies ?? {})) {
65
+ return true;
66
+ }
67
+ return false;
68
+ },
69
+ output: {
70
+ exports: "named",
71
+ preserveModules: true
72
+ }
73
+ }
74
+ }
75
+ });
76
+ return { viteConfig, entrypoints };
77
+ }
78
+ export {
79
+ createViteConfig
80
+ };
@@ -30,12 +30,8 @@ const errors = require("./errors.cjs");
30
30
  const buildTypes = require("./buildTypes.cjs");
31
31
  const buildVite = require("./buildVite.cjs");
32
32
  const copyStaticFiles = require("./copyStaticFiles.cjs");
33
- function myResolve(path1, path2) {
34
- if (path.isAbsolute(path2)) {
35
- return path2;
36
- }
37
- return path.join(path1, path2);
38
- }
33
+ const resolveDirs = require("./resolveDirs.cjs");
34
+ const createViteConfig = require("./createViteConfig.cjs");
39
35
  function reverseMap(map) {
40
36
  const reversed = /* @__PURE__ */ new Map();
41
37
  for (const [key, value] of map) {
@@ -50,12 +46,8 @@ function setExports(exportsMap, exportName, mapFn) {
50
46
  exportsMap.set(exportName, mapFn(entry));
51
47
  }
52
48
  async function run(args) {
53
- const sourceDir = myResolve(process.cwd(), args.sourceDir ?? ".");
54
- const packagePath = myResolve(
55
- sourceDir,
56
- args.packagePath ?? "./package.json"
57
- );
58
- const outDir = myResolve(process.cwd(), args.outputDir ?? "./dist");
49
+ const dirs = resolveDirs.resolveDirs(args);
50
+ const { sourceDir, outDir, packagePath } = dirs;
59
51
  await fs.rm(outDir, { recursive: true, force: true });
60
52
  await fs.mkdir(outDir, { recursive: true });
61
53
  const packageJson$1 = await packageJson.parsePackageJson({ sourceDir, packagePath });
@@ -63,21 +55,8 @@ async function run(args) {
63
55
  console.log(packageJson$1);
64
56
  return { error: true, errors: packageJson$1 };
65
57
  }
66
- const entrypoints = /* @__PURE__ */ new Map();
67
- if (packageJson$1.exports) {
68
- const mainEntry = path.join(sourceDir, packageJson$1.exports);
69
- entrypoints.set(".", mainEntry);
70
- }
71
- if (packageJson$1.bin) {
72
- const binEntry = path.join(sourceDir, packageJson$1.bin);
73
- entrypoints.set("__bin__", binEntry);
74
- }
75
- const outputs = await buildVite.buildVite({
76
- entrypoints,
77
- packageJson: packageJson$1,
78
- sourceDir,
79
- outDir
80
- });
58
+ const { viteConfig, entrypoints } = createViteConfig.createViteConfig({ dirs, packageJson: packageJson$1 });
59
+ const outputs = await buildVite.buildVite({ viteConfig });
81
60
  if (outputs.error) {
82
61
  return { error: true, errors: outputs.errors };
83
62
  }
@@ -1,4 +1,4 @@
1
- import { join, isAbsolute, relative } from "node:path";
1
+ import { relative } from "node:path";
2
2
  import { rm, mkdir } from "node:fs/promises";
3
3
  import { parsePackageJson } from "./packageJson.js";
4
4
  import { writePackageJson } from "./writePackageJson.js";
@@ -6,12 +6,8 @@ import { errors } from "./errors.js";
6
6
  import { buildTypes } from "./buildTypes.js";
7
7
  import { buildVite } from "./buildVite.js";
8
8
  import { copyStaticFiles } from "./copyStaticFiles.js";
9
- function myResolve(path1, path2) {
10
- if (isAbsolute(path2)) {
11
- return path2;
12
- }
13
- return join(path1, path2);
14
- }
9
+ import { resolveDirs } from "./resolveDirs.js";
10
+ import { createViteConfig } from "./createViteConfig.js";
15
11
  function reverseMap(map) {
16
12
  const reversed = /* @__PURE__ */ new Map();
17
13
  for (const [key, value] of map) {
@@ -26,12 +22,8 @@ function setExports(exportsMap, exportName, mapFn) {
26
22
  exportsMap.set(exportName, mapFn(entry));
27
23
  }
28
24
  async function run(args) {
29
- const sourceDir = myResolve(process.cwd(), args.sourceDir ?? ".");
30
- const packagePath = myResolve(
31
- sourceDir,
32
- args.packagePath ?? "./package.json"
33
- );
34
- const outDir = myResolve(process.cwd(), args.outputDir ?? "./dist");
25
+ const dirs = resolveDirs(args);
26
+ const { sourceDir, outDir, packagePath } = dirs;
35
27
  await rm(outDir, { recursive: true, force: true });
36
28
  await mkdir(outDir, { recursive: true });
37
29
  const packageJson = await parsePackageJson({ sourceDir, packagePath });
@@ -39,21 +31,8 @@ async function run(args) {
39
31
  console.log(packageJson);
40
32
  return { error: true, errors: packageJson };
41
33
  }
42
- const entrypoints = /* @__PURE__ */ new Map();
43
- if (packageJson.exports) {
44
- const mainEntry = join(sourceDir, packageJson.exports);
45
- entrypoints.set(".", mainEntry);
46
- }
47
- if (packageJson.bin) {
48
- const binEntry = join(sourceDir, packageJson.bin);
49
- entrypoints.set("__bin__", binEntry);
50
- }
51
- const outputs = await buildVite({
52
- entrypoints,
53
- packageJson,
54
- sourceDir,
55
- outDir
56
- });
34
+ const { viteConfig, entrypoints } = createViteConfig({ dirs, packageJson });
35
+ const outputs = await buildVite({ viteConfig });
57
36
  if (outputs.error) {
58
37
  return { error: true, errors: outputs.errors };
59
38
  }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const path = require("node:path");
4
+ function myResolve(path1, path2) {
5
+ if (path.isAbsolute(path2)) {
6
+ return path2;
7
+ }
8
+ return path.join(path1, path2);
9
+ }
10
+ function resolveDirs(args) {
11
+ const sourceDir = myResolve(process.cwd(), args.sourceDir ?? ".");
12
+ const packagePath = myResolve(
13
+ sourceDir,
14
+ args.packagePath ?? "./package.json"
15
+ );
16
+ const outDir = myResolve(process.cwd(), args.outputDir ?? "./dist");
17
+ return { sourceDir, packagePath, outDir };
18
+ }
19
+ exports.resolveDirs = resolveDirs;
@@ -0,0 +1,19 @@
1
+ import { isAbsolute, join } from "node:path";
2
+ function myResolve(path1, path2) {
3
+ if (isAbsolute(path2)) {
4
+ return path2;
5
+ }
6
+ return join(path1, path2);
7
+ }
8
+ function resolveDirs(args) {
9
+ const sourceDir = myResolve(process.cwd(), args.sourceDir ?? ".");
10
+ const packagePath = myResolve(
11
+ sourceDir,
12
+ args.packagePath ?? "./package.json"
13
+ );
14
+ const outDir = myResolve(process.cwd(), args.outputDir ?? "./dist");
15
+ return { sourceDir, packagePath, outDir };
16
+ }
17
+ export {
18
+ resolveDirs
19
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "smartbundle",
3
3
  "type": "module",
4
- "version": "0.4.2",
4
+ "version": "0.5.1-alpha.0",
5
5
  "bin": "./src/bin.js",
6
6
  "types": "./src/run.d.ts",
7
7
  "module": "./src/run.js",
@@ -1,10 +1,7 @@
1
- import { PackageJson } from "./packageJson.js";
1
+ import { UserConfig } from "vite";
2
2
  import { Rollup } from "vite";
3
3
  type BuildViteOptions = {
4
- sourceDir: string;
5
- packageJson: PackageJson;
6
- entrypoints: Map<string, string>;
7
- outDir: string;
4
+ viteConfig: UserConfig;
8
5
  };
9
6
  type BuildSuccess = {
10
7
  error: false;
@@ -15,5 +12,5 @@ type BuildError = {
15
12
  errors: Array<string>;
16
13
  };
17
14
  type BuildResult = BuildSuccess | BuildError;
18
- export declare function buildVite({ entrypoints, packageJson, sourceDir, outDir, }: BuildViteOptions): Promise<BuildResult>;
15
+ export declare function buildVite({ viteConfig, }: BuildViteOptions): Promise<BuildResult>;
19
16
  export {};
@@ -0,0 +1,11 @@
1
+ import { type Dirs } from "./resolveDirs.js";
2
+ import { type PackageJson } from "./packageJson.js";
3
+ type CreateViteConfigParam = {
4
+ dirs: Dirs;
5
+ packageJson: PackageJson;
6
+ };
7
+ export declare function createViteConfig({ dirs, packageJson }: CreateViteConfigParam): {
8
+ viteConfig: import("vite").UserConfig;
9
+ entrypoints: Map<string, string>;
10
+ };
11
+ export {};
package/src/index.d.ts CHANGED
@@ -1,8 +1,5 @@
1
- type Args = {
2
- sourceDir?: string;
3
- packagePath?: string;
4
- outputDir?: string;
5
- };
1
+ import { type Args } from "./resolveDirs.js";
2
+ export declare function defineViteConfig(args?: Args): Promise<import("vite").UserConfig>;
6
3
  export declare function run(args: Args): Promise<{
7
4
  error: boolean;
8
5
  errors: string[];
@@ -10,4 +7,3 @@ export declare function run(args: Args): Promise<{
10
7
  error: boolean;
11
8
  errors?: undefined;
12
9
  }>;
13
- export {};
@@ -0,0 +1,11 @@
1
+ export type Args = {
2
+ sourceDir?: string;
3
+ packagePath?: string;
4
+ outputDir?: string;
5
+ };
6
+ export declare function resolveDirs(args: Args): {
7
+ sourceDir: string;
8
+ packagePath: string;
9
+ outDir: string;
10
+ };
11
+ export type Dirs = ReturnType<typeof resolveDirs>;