@evjs/webpack-plugin 0.0.1-alpha.5 → 0.0.1-alpha.6

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
@@ -5,11 +5,12 @@ Build-time integration for React Server Functions in the **ev** framework.
5
5
  ## Features
6
6
 
7
7
  - **`EvWebpackPlugin`**: Zero-config plugin that:
8
- - Auto-discovers `"use server"` files on server builds (`target: "node"`).
9
- - Emits a versioned `manifest.json` mapping function IDs to source locations.
8
+ - Spawns a Node-targeted **Child Compiler** for server-side code.
9
+ - **Auto-discovers** `"use server"` files in `src/` dynamically.
10
+ - Watches for new files during development and triggers server rebuilds.
11
+ - Emits a versioned `manifest.json` mapping function IDs.
10
12
  - **`server-fn-loader`**: Transforms files marked with `"use server"`.
11
- - On the **server**: Keeps source code and registers the function.
12
- - On the **client**: Replaces the implementation with an RPC stub.
13
+ - Automatically detects if it is running in a client or server compiler context.
13
14
 
14
15
  ## Usage
15
16
 
@@ -18,7 +19,7 @@ const { EvWebpackPlugin } = require("@evjs/webpack-plugin");
18
19
 
19
20
  module.exports = {
20
21
  plugins: [
21
- new EvWebpackPlugin()
22
+ new EvWebpackPlugin() // Handles both client and server discovery
22
23
  ],
23
24
  module: {
24
25
  rules: [
@@ -26,11 +27,8 @@ module.exports = {
26
27
  test: /\.tsx?$/,
27
28
  exclude: /node_modules/,
28
29
  use: [
29
- { loader: "swc-loader", /* ... */ },
30
- {
31
- loader: "@evjs/webpack-plugin/server-fn-loader",
32
- options: { isServer: false }
33
- }
30
+ { loader: "swc-loader" },
31
+ { loader: "@evjs/webpack-plugin/server-fn-loader" }
34
32
  ]
35
33
  }
36
34
  ]
@@ -38,4 +36,4 @@ module.exports = {
38
36
  };
39
37
  ```
40
38
 
41
- On server builds, `EvWebpackPlugin` automatically discovers all `"use server"` files under `./src/` and injects them as Webpack entries no manual imports needed.
39
+ `EvWebpackPlugin` handles the heavy lifting of entry generation and child-compiler orchestration, allowing you to focus on writing your application logic.
package/esm/index.d.ts CHANGED
@@ -2,9 +2,8 @@ import type { Compiler } from "webpack";
2
2
  /**
3
3
  * Webpack plugin for the ev framework.
4
4
  *
5
- * On server builds (target: "node"), automatically discovers files with
6
- * the "use server" directive and adds them as entries.
7
- * On all builds, emits the `manifest.json` mapping function IDs to assets.
5
+ * Automatically discovers files with the "use server" directive based on the client dependencies
6
+ * and manages the server-side build via a child compiler.
8
7
  */
9
8
  export declare class EvWebpackPlugin {
10
9
  apply(compiler: Compiler): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AA+BxC;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,KAAK,CAAC,QAAQ,EAAE,QAAQ;CAqEzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAmBxC;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,KAAK,CAAC,QAAQ,EAAE,QAAQ;CA+KzB"}
package/esm/index.js CHANGED
@@ -1,93 +1,143 @@
1
1
  import fs from "node:fs";
2
- import path from "node:path";
3
- import { glob } from "node:fs";
4
2
  class ManifestCollector {
5
- serverFunctions = {};
3
+ serverFns = {};
6
4
  addServerFn(id, meta) {
7
- this.serverFunctions[id] = meta;
5
+ this.serverFns[id] = meta;
8
6
  }
9
7
  getManifest() {
10
8
  return {
11
9
  version: 1,
12
- serverFunctions: this.serverFunctions,
10
+ serverFns: this.serverFns,
13
11
  };
14
12
  }
15
13
  }
16
- /**
17
- * Check if a file starts with the "use server" directive.
18
- */
19
- function hasUseServerDirective(filePath) {
20
- try {
21
- const content = fs.readFileSync(filePath, "utf-8");
22
- const firstLine = content.trimStart().split("\n")[0];
23
- return /^["']use server["'];?\s*$/.test(firstLine.trim());
24
- }
25
- catch {
26
- return false;
27
- }
28
- }
29
14
  /**
30
15
  * Webpack plugin for the ev framework.
31
16
  *
32
- * On server builds (target: "node"), automatically discovers files with
33
- * the "use server" directive and adds them as entries.
34
- * On all builds, emits the `manifest.json` mapping function IDs to assets.
17
+ * Automatically discovers files with the "use server" directive based on the client dependencies
18
+ * and manages the server-side build via a child compiler.
35
19
  */
36
20
  export class EvWebpackPlugin {
37
21
  apply(compiler) {
38
22
  const collector = new ManifestCollector();
39
23
  // Attach collector to compiler so the loader can access it
40
24
  compiler._ev_manifest_collector = collector;
41
- // Auto-discover server function files on server builds
42
- const isServer = compiler.options.target === "node" ||
43
- (Array.isArray(compiler.options.target) &&
44
- compiler.options.target.includes("node"));
45
- if (isServer) {
46
- const context = compiler.context;
47
- compiler.hooks.make.tapAsync("EvWebpackPlugin", (compilation, callback) => {
48
- // Scan all .ts/.tsx files under src/ for "use server" directive
49
- glob("./src/**/*.{ts,tsx}", { cwd: context }, (err, files) => {
50
- if (err) {
51
- callback(err);
52
- return;
53
- }
54
- const serverFiles = files.filter((f) => hasUseServerDirective(path.resolve(context, f)));
55
- if (serverFiles.length === 0) {
56
- callback();
57
- return;
58
- }
59
- const webpack = compiler.webpack;
60
- let pending = serverFiles.length;
61
- for (const file of serverFiles) {
62
- const absolutePath = path.resolve(context, file);
63
- const dep = webpack.EntryPlugin.createDependency(absolutePath, {
64
- name: undefined,
65
- });
66
- compilation.addEntry(context, dep, { name: undefined }, (addErr) => {
67
- if (addErr) {
68
- callback(addErr);
69
- return;
70
- }
71
- pending--;
72
- if (pending === 0) {
73
- callback();
25
+ // Check if the current compiler is already the Node Child Compiler
26
+ const isServer = compiler.options.name === "evServer" ||
27
+ compiler.options.target === "node";
28
+ if (!isServer) {
29
+ // We are in the Client compiler.
30
+ compiler.hooks.make.tapAsync("EvWebpackPlugin", async (compilation, callback) => {
31
+ // In Webpack 5, we can use the finishModules hook to inspect all parsed modules
32
+ compilation.hooks.finishModules.tapAsync("EvWebpackPlugin", (modules, finishCallback) => {
33
+ let hasServer = false;
34
+ const imports = [];
35
+ imports.push(`import { createServer } from "@evjs/runtime/server";`);
36
+ let id = 0;
37
+ for (const module of modules) {
38
+ // Determine if this is a NormalModule with a resource path
39
+ const resource = "resource" in module ? module.resource : null;
40
+ if (!resource || typeof resource !== "string")
41
+ continue;
42
+ // Ensure it's a source file (not a node_module or internal webpack file)
43
+ if (resource.includes("node_modules") ||
44
+ !/\.(ts|tsx|js|jsx)$/.test(resource)) {
45
+ continue;
46
+ }
47
+ try {
48
+ const content = fs.readFileSync(resource, "utf-8");
49
+ const firstLine = content.trimStart().split("\n")[0];
50
+ const isServerFile = /^["']use server["'];?\s*$/.test(firstLine.trim());
51
+ if (isServerFile) {
52
+ hasServer = true;
53
+ // Compute a relative path from the compiler context (or just use absolute path)
54
+ // But using absolute path avoids relative resolution issues completely.
55
+ imports.push(`import * as _fns_${id++} from ${JSON.stringify(resource)};`);
74
56
  }
75
- });
57
+ }
58
+ catch (_err) {
59
+ // Ignore read errors for dynamically generated Webpack modules
60
+ }
76
61
  }
62
+ if (!hasServer) {
63
+ return finishCallback();
64
+ }
65
+ imports.push(`createServer();`);
66
+ const serverEntryContent = imports.join("\n");
67
+ // Use a Data URI as a virtual entry point
68
+ const serverEntryPath = `data:text/javascript,${encodeURIComponent(serverEntryContent)}`;
69
+ // 3. Spawn the Node Server compiler.
70
+ const outputOptions = {
71
+ filename: "../server/index.js",
72
+ library: { type: "commonjs", name: "evServer" },
73
+ chunkFormat: "commonjs",
74
+ };
75
+ const childCompiler = compilation.createChildCompiler("evServer", outputOptions, [
76
+ new compiler.webpack.node.NodeTemplatePlugin({
77
+ asyncChunkLoading: false,
78
+ }),
79
+ new compiler.webpack.node.NodeTargetPlugin(),
80
+ new compiler.webpack.ExternalsPlugin("commonjs", [
81
+ ({ request }, cb) => {
82
+ if (request &&
83
+ typeof request === "string" &&
84
+ (request.startsWith("node:") ||
85
+ [
86
+ "http",
87
+ "https",
88
+ "http2",
89
+ "fs",
90
+ "path",
91
+ "crypto",
92
+ "stream",
93
+ "os",
94
+ "assert",
95
+ "util",
96
+ "events",
97
+ "url",
98
+ "buffer",
99
+ "zlib",
100
+ "child_process",
101
+ "net",
102
+ "tls",
103
+ "querystring",
104
+ "worker_threads",
105
+ ].includes(request))) {
106
+ return cb(null, request);
107
+ }
108
+ cb();
109
+ },
110
+ ]),
111
+ new compiler.webpack.EntryPlugin(compiler.context, serverEntryPath, { name: "main" }),
112
+ ]);
113
+ childCompiler._ev_manifest_collector = collector;
114
+ childCompiler.runAsChild((err, _entries, childCompilation) => {
115
+ if (err)
116
+ return finishCallback(err);
117
+ if (childCompilation?.errors &&
118
+ childCompilation.errors.length > 0) {
119
+ return finishCallback(childCompilation.errors[0]);
120
+ }
121
+ finishCallback();
122
+ });
77
123
  });
124
+ callback();
78
125
  });
79
126
  }
80
- // Emit manifest
81
- compiler.hooks.emit.tap("EvWebpackPlugin", (compilation) => {
82
- const manifest = collector.getManifest();
83
- if (Object.keys(manifest.serverFunctions).length === 0) {
84
- return;
85
- }
86
- const content = JSON.stringify(manifest, null, 2);
87
- compilation.assets["manifest.json"] = {
88
- source: () => content,
89
- size: () => content.length,
90
- };
127
+ // Emit manifest using modern processAssets hook to avoid deprecation warnings
128
+ compiler.hooks.thisCompilation.tap("EvWebpackPlugin", (compilation) => {
129
+ compilation.hooks.processAssets.tap({
130
+ name: "EvWebpackPlugin",
131
+ stage: compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS,
132
+ }, () => {
133
+ const manifest = collector.getManifest();
134
+ if (Object.keys(manifest.serverFns).length === 0) {
135
+ return;
136
+ }
137
+ const content = JSON.stringify(manifest, null, 2);
138
+ // We place the manifest in the server folder (relative to parent output dist/client)
139
+ compilation.emitAsset("../server/manifest.json", new compiler.webpack.sources.RawSource(content));
140
+ });
91
141
  });
92
142
  }
93
143
  }
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,18 @@
1
+ import type { Compiler } from "webpack";
1
2
  interface LoaderContext {
2
3
  getOptions(): {
3
4
  isServer?: boolean;
4
5
  };
5
6
  resourcePath: string;
6
7
  rootContext: string;
8
+ _compiler?: Compiler & {
9
+ _ev_manifest_collector?: {
10
+ addServerFn(id: string, meta: {
11
+ moduleId: string;
12
+ export: string;
13
+ }): void;
14
+ };
15
+ };
7
16
  }
8
17
  export default function serverFnLoader(this: LoaderContext, source: string): Promise<string>;
9
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"server-fn-loader.d.ts","sourceRoot":"","sources":["../src/server-fn-loader.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,UAAU,IAAI;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAuBD,wBAA8B,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiFjG"}
1
+ {"version":3,"file":"server-fn-loader.d.ts","sourceRoot":"","sources":["../src/server-fn-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,UAAU,aAAa;IACrB,UAAU,IAAI;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,QAAQ,GAAG;QACrB,sBAAsB,CAAC,EAAE;YACvB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAC;SAC3E,CAAC;KACH,CAAC;CACH;AA2BD,wBAA8B,cAAc,CAC1C,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA2FjB"}
@@ -22,7 +22,14 @@ export default async function serverFnLoader(source) {
22
22
  if (!hasUseServerDirective(source)) {
23
23
  return source;
24
24
  }
25
- const { isServer = false } = this.getOptions();
25
+ // Adaptively check if we are building the server (Child Compiler) or client
26
+ const explicitOptions = this.getOptions() || {};
27
+ let isServer = explicitOptions.isServer;
28
+ if (typeof isServer === "undefined") {
29
+ const compilerName = this._compiler?.name;
30
+ const target = this._compiler?.options?.target;
31
+ isServer = compilerName === "evServer" || target === "node";
32
+ }
26
33
  // Parse the source into an AST
27
34
  const program = await parse(source, {
28
35
  syntax: "typescript",
@@ -89,7 +96,7 @@ export default async function serverFnLoader(source) {
89
96
  const stubCode = exportNames
90
97
  .map((name) => {
91
98
  const fnId = makeFnId(this.rootContext, this.resourcePath, name);
92
- return `export function ${name}(...args) {\n return __ev_rpc("${fnId}", args);\n}`;
99
+ return `export function ${name}(...args) {\n return __ev_rpc("${fnId}", args);\n}\n${name}.evId = "${fnId}";`;
93
100
  })
94
101
  .join("\n\n");
95
102
  return `import { __ev_rpc } from "@evjs/runtime/client";\n\n${stubCode}\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"server-fn-loader.js","sourceRoot":"","sources":["../src/server-fn-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-fn-loader.js","sourceRoot":"","sources":["../src/server-fn-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAclC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;GAEG;AACH,SAAS,QAAQ,CACf,WAAmB,EACnB,YAAoB,EACpB,UAAkB;IAElB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC9D,OAAO,UAAU,CAAC,QAAQ,CAAC;SACxB,MAAM,CAAC,GAAG,YAAY,IAAI,UAAU,EAAE,CAAC;SACvC,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,MAAc;IAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,cAAc,CAE1C,MAAc;IAEd,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,4EAA4E;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC;IACxC,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;QAC/C,QAAQ,GAAG,YAAY,KAAK,UAAU,IAAI,MAAM,KAAK,MAAM,CAAC;IAC9D,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;QAClC,MAAM,EAAE,YAAY;QACpB,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,+CAA+C;IAC/C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;YAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK;oBAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACrE,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBAC/C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC/B,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;YAClD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACzC,IAAI,SAAS,CAAC,QAAQ,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC9C,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC7C,CAAC;yBAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAChD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACzC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAEjE,IAAI,QAAQ,EAAE,CAAC;QACb,yCAAyC;QACzC,MAAM,aAAa,GAAG,WAAW;aAC9B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACjE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAChC,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,YAAY,CAClB,CAAC;gBACF,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;qBAClC,MAAM,CAAC,YAAY,CAAC;qBACpB,MAAM,CAAC,KAAK,CAAC;qBACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAChB,iBAAiB,CAAC,WAAW,CAAC,IAAI,EAAE;oBAClC,QAAQ;oBACR,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;YACL,CAAC;YACD,OAAO,qBAAqB,IAAI,MAAM,IAAI,IAAI,CAAC;QACjD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,OAAO,6DAA6D,MAAM,KAAK,aAAa,IAAI,CAAC;IACnG,CAAC;IAED,uCAAuC;IACvC,MAAM,QAAQ,GAAG,WAAW;SACzB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACjE,OAAO,mBAAmB,IAAI,mCAAmC,IAAI,iBAAiB,IAAI,YAAY,IAAI,IAAI,CAAC;IACjH,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAC;IAEhB,OAAO,uDAAuD,QAAQ,IAAI,CAAC;AAC7E,CAAC"}
package/esm/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.0.1-alpha.5";
1
+ export declare const VERSION = "0.0.1-alpha.6";
2
2
  //# sourceMappingURL=version.d.ts.map
package/esm/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.0.1-alpha.5";
1
+ export const VERSION = "0.0.1-alpha.6";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evjs/webpack-plugin",
3
- "version": "0.0.1-alpha.5",
3
+ "version": "0.0.1-alpha.6",
4
4
  "description": "Webpack plugin and loaders for the ev framework",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -35,8 +35,9 @@
35
35
  "author": "xusd320",
36
36
  "license": "MIT",
37
37
  "dependencies": {
38
- "@evjs/manifest": "0.0.1-alpha.5",
39
- "@swc/core": "^1.15.18"
38
+ "@evjs/manifest": "0.0.1-alpha.6",
39
+ "@swc/core": "^1.15.18",
40
+ "glob": "^13.0.6"
40
41
  },
41
42
  "devDependencies": {
42
43
  "typescript": "^5.7.3",