@shardev/vite-plugin-modular 1.2.0 → 1.2.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.cjs CHANGED
@@ -43,7 +43,8 @@ function laravelModule(options) {
43
43
  name,
44
44
  vendor = "shardevcom",
45
45
  srcDir = "resources/react/src",
46
- inputs = ["main.tsx"],
46
+ input,
47
+ inputs,
47
48
  buildDir = `build/${vendor}/${name}`,
48
49
  publishedDir = `resources/react/${vendor}/${name}`
49
50
  } = options;
@@ -51,17 +52,24 @@ function laravelModule(options) {
51
52
  const moduleRoot = import_path.default.resolve(root, "packages", vendor, name);
52
53
  const relative = import_path.default.relative(moduleRoot, root);
53
54
  const isModuleRoot = !relative || relative === "." || !relative.startsWith("..");
54
- const inputPaths = {};
55
- inputs.forEach((file) => {
56
- const key = import_path.default.parse(file).name;
57
- inputPaths[key] = import_path.default.resolve(moduleRoot, srcDir, file);
58
- });
55
+ let normalizedInput = {};
56
+ if (input && Object.keys(input).length > 0) {
57
+ for (const [key, file] of Object.entries(input)) {
58
+ normalizedInput[key] = import_path.default.resolve(moduleRoot, file);
59
+ }
60
+ } else {
61
+ const legacyInputs = inputs ?? ["main.tsx"];
62
+ legacyInputs.forEach((file) => {
63
+ const key = import_path.default.parse(file).name;
64
+ normalizedInput[key] = import_path.default.resolve(moduleRoot, srcDir, file);
65
+ });
66
+ }
59
67
  const publishedPath = import_path.default.resolve(root, publishedDir);
60
68
  const isPublished = import_fs.default.existsSync(publishedPath);
61
69
  const aliasPath = isPublished ? publishedPath : import_path.default.resolve(moduleRoot, srcDir);
62
70
  const meta = {
63
71
  name,
64
- input: inputPaths,
72
+ input: normalizedInput,
65
73
  buildDir,
66
74
  alias: {
67
75
  [`@${vendor}/${name}`]: aliasPath
@@ -70,7 +78,7 @@ function laravelModule(options) {
70
78
  };
71
79
  return {
72
80
  name: `vite-plugin-laravel-module:${name}`,
73
- // 🔥 Metadata directa para el root plugin
81
+ // 🔥 Metadata consumida por laravelModules()
74
82
  shardevMeta: meta,
75
83
  config() {
76
84
  if (isModuleRoot) {
@@ -79,7 +87,7 @@ function laravelModule(options) {
79
87
  outDir: buildDir,
80
88
  emptyOutDir: true,
81
89
  rollupOptions: {
82
- input: inputPaths
90
+ input: normalizedInput
83
91
  }
84
92
  },
85
93
  resolve: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/laravelModule.ts","../src/laravelModules.ts"],"sourcesContent":["export { default as laravelModule } from './laravelModule';\r\nexport { default as laravelModules } from './laravelModules';","import fs from 'fs'\nimport path from 'path'\nimport type { PluginOption } from 'vite'\n\nexport interface ModuleOptions {\n name: string\n vendor?: string\n srcDir?: string\n inputs?: string[]\n buildDir?: string\n publishedDir?: string\n}\n\nexport interface ShardevModuleMeta {\n name: string\n input: Record<string, string>\n buildDir: string\n alias: Record<string, string>\n usePublished: boolean\n}\n\nexport default function laravelModule(options: ModuleOptions): PluginOption {\n const {\n name,\n vendor = 'shardevcom',\n srcDir = 'resources/react/src',\n inputs = ['main.tsx'],\n buildDir = `build/${vendor}/${name}`,\n publishedDir = `resources/react/${vendor}/${name}`\n } = options\n\n const root = process.cwd()\n const moduleRoot = path.resolve(root, 'packages', vendor, name)\n\n const relative = path.relative(moduleRoot, root)\n const isModuleRoot = !relative || relative === '.' || !relative.startsWith('..')\n\n const inputPaths: Record<string, string> = {}\n inputs.forEach(file => {\n const key = path.parse(file).name\n inputPaths[key] = path.resolve(moduleRoot, srcDir, file)\n })\n\n const publishedPath = path.resolve(root, publishedDir)\n const isPublished = fs.existsSync(publishedPath)\n\n const aliasPath = isPublished\n ? publishedPath\n : path.resolve(moduleRoot, srcDir)\n\n const meta: ShardevModuleMeta = {\n name,\n input: inputPaths,\n buildDir,\n alias: {\n [`@${vendor}/${name}`]: aliasPath\n },\n usePublished: isPublished\n }\n\n return {\n name: `vite-plugin-laravel-module:${name}`,\n\n // 🔥 Metadata directa para el root plugin\n shardevMeta: meta,\n\n config() {\n // 🔹 Standalone build\n if (isModuleRoot) {\n return {\n build: {\n outDir: buildDir,\n emptyOutDir: true,\n rollupOptions: {\n input: inputPaths\n }\n },\n resolve: {\n alias: meta.alias\n }\n }\n }\n\n // 🔹 Integrated mode (root controla el build)\n return {\n resolve: {\n alias: meta.alias\n }\n }\n }\n\n } as PluginOption\n}","import type { Plugin, UserConfig, ConfigEnv, ViteDevServer, ModuleNode } from 'vite'\nimport { mergeConfig, createServer } from 'vite'\nimport path from 'path'\nimport fs from 'fs'\n\ninterface LaravelModulesOptions {\n modulesDir?: string\n statusesFile?: string\n debug?: boolean\n useMetaCache?: boolean\n}\n\ninterface ShardevModuleMeta {\n name: string\n input: Record<string, string>\n buildDir: string\n alias: Record<string, string>\n usePublished: boolean\n srcDir: string\n publishedDir?: string\n}\n\nexport default function laravelModules(\n options: LaravelModulesOptions = {}\n): Plugin {\n\n const {\n modulesDir = 'packages',\n statusesFile = 'modules.json',\n debug = false,\n useMetaCache = true\n } = options\n\n const root = process.cwd()\n const modulesPath = path.resolve(root, modulesDir)\n const statusesPath = path.resolve(root, statusesFile)\n\n let cachedMetas: ShardevModuleMeta[] = []\n let metaCacheLoaded = false\n\n const log = (...args: any[]) => {\n if (debug) console.log('[laravel-modules]', ...args)\n }\n\n const loadStatuses = (): Record<string, boolean> => {\n if (!fs.existsSync(statusesPath)) return {}\n try {\n return JSON.parse(fs.readFileSync(statusesPath, 'utf-8'))\n } catch {\n return {}\n }\n }\n\n const validateMeta = (meta: ShardevModuleMeta) => {\n if (!meta.name) throw new Error('Module meta missing name')\n if (!meta.srcDir) throw new Error(`Module ${meta.name} missing srcDir`)\n if (!meta.input) throw new Error(`Module ${meta.name} missing input`)\n }\n\n const discoverModules = async (): Promise<ShardevModuleMeta[]> => {\n\n if (useMetaCache && metaCacheLoaded) {\n log('Using cached module metas')\n return cachedMetas\n }\n\n if (!fs.existsSync(modulesPath)) return []\n\n const statuses = loadStatuses()\n const metas: ShardevModuleMeta[] = []\n\n const vendors = fs.readdirSync(modulesPath, { withFileTypes: true })\n .filter(d => d.isDirectory())\n\n for (const vendor of vendors) {\n const vendorPath = path.join(modulesPath, vendor.name)\n\n const packages = fs.readdirSync(vendorPath, { withFileTypes: true })\n .filter(d => d.isDirectory() && statuses[d.name] !== false)\n\n for (const pkg of packages) {\n\n const pkgPath = path.join(vendorPath, pkg.name)\n const viteConfigPath = path.join(pkgPath, 'vite.config.ts')\n\n if (!fs.existsSync(viteConfigPath)) continue\n\n const server = await createServer({\n configFile: viteConfigPath,\n logLevel: 'silent'\n })\n\n const plugins = (server.config.plugins || []) as Plugin[]\n\n for (const plugin of plugins) {\n if (plugin?.name?.startsWith('vite-plugin-laravel-module:')) {\n const meta = (plugin as any).shardevMeta as ShardevModuleMeta\n if (meta) {\n validateMeta(meta)\n metas.push(meta)\n }\n }\n }\n\n await server.close()\n }\n }\n\n cachedMetas = metas\n metaCacheLoaded = true\n\n log('Discovered modules:', metas.map(m => m.name))\n\n return metas\n }\n\n const generateInputs = (metas: ShardevModuleMeta[]) => {\n const inputs: Record<string, string> = {}\n metas.forEach(meta => {\n Object.entries(meta.input).forEach(([key, value]) => {\n inputs[`${meta.name}-${key}`] = value\n })\n })\n return inputs\n }\n\n const resolveWatchPath = (meta: ShardevModuleMeta): string | null => {\n const base = meta.usePublished && meta.publishedDir\n ? meta.publishedDir\n : meta.srcDir\n\n if (!base) return null\n\n return path.isAbsolute(base)\n ? base\n : path.resolve(root, base)\n }\n\n const handleHMR = (\n server: ViteDevServer,\n file: string\n ) => {\n\n const module = server.moduleGraph.getModuleById(file)\n\n if (!module) return\n\n log('HMR update:', file)\n\n const updates = [{\n type: 'js-update',\n path: module.url,\n acceptedPath: module.url,\n timestamp: Date.now()\n }]\n\n server.moduleGraph.invalidateModule(module)\n\n server.ws.send({\n type: 'update',\n updates\n })\n }\n\n return {\n name: 'laravel-modules',\n\n async config(config: UserConfig, env: ConfigEnv) {\n\n const metas = await discoverModules()\n\n const aliases: Record<string, string> = {}\n metas.forEach(meta => Object.assign(aliases, meta.alias))\n\n const rollupInputs = generateInputs(metas)\n\n return mergeConfig(config, {\n resolve: { alias: aliases },\n build: {\n rollupOptions: { input: rollupInputs }\n }\n })\n },\n\n async configureServer(server: ViteDevServer) {\n\n const metas = await discoverModules()\n\n for (const meta of metas) {\n const watchPath = resolveWatchPath(meta)\n if (watchPath && fs.existsSync(watchPath)) {\n server.watcher.add(watchPath)\n log('Watching:', watchPath)\n }\n }\n\n server.watcher.on('change', (file) => {\n\n const matched = metas.some(meta => {\n const watchPath = resolveWatchPath(meta)\n return watchPath && file.startsWith(watchPath)\n })\n\n if (!matched) return\n\n handleHMR(server, file)\n })\n }\n }\n}"],"mappings":"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","names":["path","fs","import_path","import_fs","path","fs","module"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/laravelModule.ts","../src/laravelModules.ts"],"sourcesContent":["export { laravelModule } from './laravelModule'\r\nexport { laravelModules } from './laravelModules'","import fs from 'fs'\nimport path from 'path'\nimport type { PluginOption } from 'vite'\n\nexport interface ModuleOptions {\n name: string\n vendor?: string\n srcDir?: string\n\n // ✅ Nuevo formato recomendado\n input?: Record<string, string>\n\n // ⚠ Backward compatibility\n inputs?: string[]\n\n buildDir?: string\n publishedDir?: string\n}\n\nexport interface ShardevModuleMeta {\n name: string\n input: Record<string, string>\n buildDir: string\n alias: Record<string, string>\n usePublished: boolean\n}\n\nexport function laravelModule(options: ModuleOptions): PluginOption {\n\n const {\n name,\n vendor = 'shardevcom',\n srcDir = 'resources/react/src',\n input,\n inputs,\n buildDir = `build/${vendor}/${name}`,\n publishedDir = `resources/react/${vendor}/${name}`\n } = options\n\n const root = process.cwd()\n const moduleRoot = path.resolve(root, 'packages', vendor, name)\n\n const relative = path.relative(moduleRoot, root)\n const isModuleRoot =\n !relative || relative === '.' || !relative.startsWith('..')\n\n // ---------------------------------------------------\n // 🔥 Normalización inteligente de inputs\n // ---------------------------------------------------\n\n let normalizedInput: Record<string, string> = {}\n\n if (input && Object.keys(input).length > 0) {\n // Nuevo formato recomendado\n for (const [key, file] of Object.entries(input)) {\n normalizedInput[key] = path.resolve(moduleRoot, file)\n }\n } else {\n // Backward compatibility con inputs: []\n const legacyInputs = inputs ?? ['main.tsx']\n\n legacyInputs.forEach(file => {\n const key = path.parse(file).name\n normalizedInput[key] = path.resolve(moduleRoot, srcDir, file)\n })\n }\n\n // ---------------------------------------------------\n // Published detection\n // ---------------------------------------------------\n\n const publishedPath = path.resolve(root, publishedDir)\n const isPublished = fs.existsSync(publishedPath)\n\n const aliasPath = isPublished\n ? publishedPath\n : path.resolve(moduleRoot, srcDir)\n\n const meta: ShardevModuleMeta = {\n name,\n input: normalizedInput,\n buildDir,\n alias: {\n [`@${vendor}/${name}`]: aliasPath\n },\n usePublished: isPublished\n }\n\n return {\n name: `vite-plugin-laravel-module:${name}`,\n\n // 🔥 Metadata consumida por laravelModules()\n shardevMeta: meta,\n\n config() {\n\n // 🔹 Standalone build\n if (isModuleRoot) {\n return {\n build: {\n outDir: buildDir,\n emptyOutDir: true,\n rollupOptions: {\n input: normalizedInput\n }\n },\n resolve: {\n alias: meta.alias\n }\n }\n }\n\n // 🔹 Integrated mode\n return {\n resolve: {\n alias: meta.alias\n }\n }\n }\n\n } as PluginOption\n}","import type { Plugin, UserConfig, ConfigEnv, ViteDevServer, ModuleNode } from 'vite'\nimport { mergeConfig, createServer } from 'vite'\nimport path from 'path'\nimport fs from 'fs'\n\ninterface LaravelModulesOptions {\n modulesDir?: string\n statusesFile?: string\n debug?: boolean\n useMetaCache?: boolean\n}\n\ninterface ShardevModuleMeta {\n name: string\n input: Record<string, string>\n buildDir: string\n alias: Record<string, string>\n usePublished: boolean\n srcDir: string\n publishedDir?: string\n}\n\nexport function laravelModules(\n options: LaravelModulesOptions = {}\n): Plugin {\n\n const {\n modulesDir = 'packages',\n statusesFile = 'modules.json',\n debug = false,\n useMetaCache = true\n } = options\n\n const root = process.cwd()\n const modulesPath = path.resolve(root, modulesDir)\n const statusesPath = path.resolve(root, statusesFile)\n\n let cachedMetas: ShardevModuleMeta[] = []\n let metaCacheLoaded = false\n\n const log = (...args: any[]) => {\n if (debug) console.log('[laravel-modules]', ...args)\n }\n\n const loadStatuses = (): Record<string, boolean> => {\n if (!fs.existsSync(statusesPath)) return {}\n try {\n return JSON.parse(fs.readFileSync(statusesPath, 'utf-8'))\n } catch {\n return {}\n }\n }\n\n const validateMeta = (meta: ShardevModuleMeta) => {\n if (!meta.name) throw new Error('Module meta missing name')\n if (!meta.srcDir) throw new Error(`Module ${meta.name} missing srcDir`)\n if (!meta.input) throw new Error(`Module ${meta.name} missing input`)\n }\n\n const discoverModules = async (): Promise<ShardevModuleMeta[]> => {\n\n if (useMetaCache && metaCacheLoaded) {\n log('Using cached module metas')\n return cachedMetas\n }\n\n if (!fs.existsSync(modulesPath)) return []\n\n const statuses = loadStatuses()\n const metas: ShardevModuleMeta[] = []\n\n const vendors = fs.readdirSync(modulesPath, { withFileTypes: true })\n .filter(d => d.isDirectory())\n\n for (const vendor of vendors) {\n const vendorPath = path.join(modulesPath, vendor.name)\n\n const packages = fs.readdirSync(vendorPath, { withFileTypes: true })\n .filter(d => d.isDirectory() && statuses[d.name] !== false)\n\n for (const pkg of packages) {\n\n const pkgPath = path.join(vendorPath, pkg.name)\n const viteConfigPath = path.join(pkgPath, 'vite.config.ts')\n\n if (!fs.existsSync(viteConfigPath)) continue\n\n const server = await createServer({\n configFile: viteConfigPath,\n logLevel: 'silent'\n })\n\n const plugins = (server.config.plugins || []) as Plugin[]\n\n for (const plugin of plugins) {\n if (plugin?.name?.startsWith('vite-plugin-laravel-module:')) {\n const meta = (plugin as any).shardevMeta as ShardevModuleMeta\n if (meta) {\n validateMeta(meta)\n metas.push(meta)\n }\n }\n }\n\n await server.close()\n }\n }\n\n cachedMetas = metas\n metaCacheLoaded = true\n\n log('Discovered modules:', metas.map(m => m.name))\n\n return metas\n }\n\n const generateInputs = (metas: ShardevModuleMeta[]) => {\n const inputs: Record<string, string> = {}\n metas.forEach(meta => {\n Object.entries(meta.input).forEach(([key, value]) => {\n inputs[`${meta.name}-${key}`] = value\n })\n })\n return inputs\n }\n\n const resolveWatchPath = (meta: ShardevModuleMeta): string | null => {\n const base = meta.usePublished && meta.publishedDir\n ? meta.publishedDir\n : meta.srcDir\n\n if (!base) return null\n\n return path.isAbsolute(base)\n ? base\n : path.resolve(root, base)\n }\n\n const handleHMR = (\n server: ViteDevServer,\n file: string\n ) => {\n\n const module = server.moduleGraph.getModuleById(file)\n\n if (!module) return\n\n log('HMR update:', file)\n\n const updates = [{\n type: 'js-update',\n path: module.url,\n acceptedPath: module.url,\n timestamp: Date.now()\n }]\n\n server.moduleGraph.invalidateModule(module)\n\n server.ws.send({\n type: 'update',\n updates\n })\n }\n\n return {\n name: 'laravel-modules',\n\n async config(config: UserConfig, env: ConfigEnv) {\n\n const metas = await discoverModules()\n\n const aliases: Record<string, string> = {}\n metas.forEach(meta => Object.assign(aliases, meta.alias))\n\n const rollupInputs = generateInputs(metas)\n\n return mergeConfig(config, {\n resolve: { alias: aliases },\n build: {\n rollupOptions: { input: rollupInputs }\n }\n })\n },\n\n async configureServer(server: ViteDevServer) {\n\n const metas = await discoverModules()\n\n for (const meta of metas) {\n const watchPath = resolveWatchPath(meta)\n if (watchPath && fs.existsSync(watchPath)) {\n server.watcher.add(watchPath)\n log('Watching:', watchPath)\n }\n }\n\n server.watcher.on('change', (file) => {\n\n const matched = metas.some(meta => {\n const watchPath = resolveWatchPath(meta)\n return watchPath && file.startsWith(watchPath)\n })\n\n if (!matched) return\n\n handleHMR(server, file)\n })\n }\n }\n}"],"mappings":"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","names":["path","fs","import_path","import_fs","path","fs","module"]}
package/dist/index.d.cts CHANGED
@@ -4,6 +4,7 @@ interface ModuleOptions {
4
4
  name: string;
5
5
  vendor?: string;
6
6
  srcDir?: string;
7
+ input?: Record<string, string>;
7
8
  inputs?: string[];
8
9
  buildDir?: string;
9
10
  publishedDir?: string;
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ interface ModuleOptions {
4
4
  name: string;
5
5
  vendor?: string;
6
6
  srcDir?: string;
7
+ input?: Record<string, string>;
7
8
  inputs?: string[];
8
9
  buildDir?: string;
9
10
  publishedDir?: string;
package/dist/index.js CHANGED
@@ -6,7 +6,8 @@ function laravelModule(options) {
6
6
  name,
7
7
  vendor = "shardevcom",
8
8
  srcDir = "resources/react/src",
9
- inputs = ["main.tsx"],
9
+ input,
10
+ inputs,
10
11
  buildDir = `build/${vendor}/${name}`,
11
12
  publishedDir = `resources/react/${vendor}/${name}`
12
13
  } = options;
@@ -14,17 +15,24 @@ function laravelModule(options) {
14
15
  const moduleRoot = path.resolve(root, "packages", vendor, name);
15
16
  const relative = path.relative(moduleRoot, root);
16
17
  const isModuleRoot = !relative || relative === "." || !relative.startsWith("..");
17
- const inputPaths = {};
18
- inputs.forEach((file) => {
19
- const key = path.parse(file).name;
20
- inputPaths[key] = path.resolve(moduleRoot, srcDir, file);
21
- });
18
+ let normalizedInput = {};
19
+ if (input && Object.keys(input).length > 0) {
20
+ for (const [key, file] of Object.entries(input)) {
21
+ normalizedInput[key] = path.resolve(moduleRoot, file);
22
+ }
23
+ } else {
24
+ const legacyInputs = inputs ?? ["main.tsx"];
25
+ legacyInputs.forEach((file) => {
26
+ const key = path.parse(file).name;
27
+ normalizedInput[key] = path.resolve(moduleRoot, srcDir, file);
28
+ });
29
+ }
22
30
  const publishedPath = path.resolve(root, publishedDir);
23
31
  const isPublished = fs.existsSync(publishedPath);
24
32
  const aliasPath = isPublished ? publishedPath : path.resolve(moduleRoot, srcDir);
25
33
  const meta = {
26
34
  name,
27
- input: inputPaths,
35
+ input: normalizedInput,
28
36
  buildDir,
29
37
  alias: {
30
38
  [`@${vendor}/${name}`]: aliasPath
@@ -33,7 +41,7 @@ function laravelModule(options) {
33
41
  };
34
42
  return {
35
43
  name: `vite-plugin-laravel-module:${name}`,
36
- // 🔥 Metadata directa para el root plugin
44
+ // 🔥 Metadata consumida por laravelModules()
37
45
  shardevMeta: meta,
38
46
  config() {
39
47
  if (isModuleRoot) {
@@ -42,7 +50,7 @@ function laravelModule(options) {
42
50
  outDir: buildDir,
43
51
  emptyOutDir: true,
44
52
  rollupOptions: {
45
- input: inputPaths
53
+ input: normalizedInput
46
54
  }
47
55
  },
48
56
  resolve: {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/laravelModule.ts","../src/laravelModules.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport type { PluginOption } from 'vite'\n\nexport interface ModuleOptions {\n name: string\n vendor?: string\n srcDir?: string\n inputs?: string[]\n buildDir?: string\n publishedDir?: string\n}\n\nexport interface ShardevModuleMeta {\n name: string\n input: Record<string, string>\n buildDir: string\n alias: Record<string, string>\n usePublished: boolean\n}\n\nexport default function laravelModule(options: ModuleOptions): PluginOption {\n const {\n name,\n vendor = 'shardevcom',\n srcDir = 'resources/react/src',\n inputs = ['main.tsx'],\n buildDir = `build/${vendor}/${name}`,\n publishedDir = `resources/react/${vendor}/${name}`\n } = options\n\n const root = process.cwd()\n const moduleRoot = path.resolve(root, 'packages', vendor, name)\n\n const relative = path.relative(moduleRoot, root)\n const isModuleRoot = !relative || relative === '.' || !relative.startsWith('..')\n\n const inputPaths: Record<string, string> = {}\n inputs.forEach(file => {\n const key = path.parse(file).name\n inputPaths[key] = path.resolve(moduleRoot, srcDir, file)\n })\n\n const publishedPath = path.resolve(root, publishedDir)\n const isPublished = fs.existsSync(publishedPath)\n\n const aliasPath = isPublished\n ? publishedPath\n : path.resolve(moduleRoot, srcDir)\n\n const meta: ShardevModuleMeta = {\n name,\n input: inputPaths,\n buildDir,\n alias: {\n [`@${vendor}/${name}`]: aliasPath\n },\n usePublished: isPublished\n }\n\n return {\n name: `vite-plugin-laravel-module:${name}`,\n\n // 🔥 Metadata directa para el root plugin\n shardevMeta: meta,\n\n config() {\n // 🔹 Standalone build\n if (isModuleRoot) {\n return {\n build: {\n outDir: buildDir,\n emptyOutDir: true,\n rollupOptions: {\n input: inputPaths\n }\n },\n resolve: {\n alias: meta.alias\n }\n }\n }\n\n // 🔹 Integrated mode (root controla el build)\n return {\n resolve: {\n alias: meta.alias\n }\n }\n }\n\n } as PluginOption\n}","import type { Plugin, UserConfig, ConfigEnv, ViteDevServer, ModuleNode } from 'vite'\nimport { mergeConfig, createServer } from 'vite'\nimport path from 'path'\nimport fs from 'fs'\n\ninterface LaravelModulesOptions {\n modulesDir?: string\n statusesFile?: string\n debug?: boolean\n useMetaCache?: boolean\n}\n\ninterface ShardevModuleMeta {\n name: string\n input: Record<string, string>\n buildDir: string\n alias: Record<string, string>\n usePublished: boolean\n srcDir: string\n publishedDir?: string\n}\n\nexport default function laravelModules(\n options: LaravelModulesOptions = {}\n): Plugin {\n\n const {\n modulesDir = 'packages',\n statusesFile = 'modules.json',\n debug = false,\n useMetaCache = true\n } = options\n\n const root = process.cwd()\n const modulesPath = path.resolve(root, modulesDir)\n const statusesPath = path.resolve(root, statusesFile)\n\n let cachedMetas: ShardevModuleMeta[] = []\n let metaCacheLoaded = false\n\n const log = (...args: any[]) => {\n if (debug) console.log('[laravel-modules]', ...args)\n }\n\n const loadStatuses = (): Record<string, boolean> => {\n if (!fs.existsSync(statusesPath)) return {}\n try {\n return JSON.parse(fs.readFileSync(statusesPath, 'utf-8'))\n } catch {\n return {}\n }\n }\n\n const validateMeta = (meta: ShardevModuleMeta) => {\n if (!meta.name) throw new Error('Module meta missing name')\n if (!meta.srcDir) throw new Error(`Module ${meta.name} missing srcDir`)\n if (!meta.input) throw new Error(`Module ${meta.name} missing input`)\n }\n\n const discoverModules = async (): Promise<ShardevModuleMeta[]> => {\n\n if (useMetaCache && metaCacheLoaded) {\n log('Using cached module metas')\n return cachedMetas\n }\n\n if (!fs.existsSync(modulesPath)) return []\n\n const statuses = loadStatuses()\n const metas: ShardevModuleMeta[] = []\n\n const vendors = fs.readdirSync(modulesPath, { withFileTypes: true })\n .filter(d => d.isDirectory())\n\n for (const vendor of vendors) {\n const vendorPath = path.join(modulesPath, vendor.name)\n\n const packages = fs.readdirSync(vendorPath, { withFileTypes: true })\n .filter(d => d.isDirectory() && statuses[d.name] !== false)\n\n for (const pkg of packages) {\n\n const pkgPath = path.join(vendorPath, pkg.name)\n const viteConfigPath = path.join(pkgPath, 'vite.config.ts')\n\n if (!fs.existsSync(viteConfigPath)) continue\n\n const server = await createServer({\n configFile: viteConfigPath,\n logLevel: 'silent'\n })\n\n const plugins = (server.config.plugins || []) as Plugin[]\n\n for (const plugin of plugins) {\n if (plugin?.name?.startsWith('vite-plugin-laravel-module:')) {\n const meta = (plugin as any).shardevMeta as ShardevModuleMeta\n if (meta) {\n validateMeta(meta)\n metas.push(meta)\n }\n }\n }\n\n await server.close()\n }\n }\n\n cachedMetas = metas\n metaCacheLoaded = true\n\n log('Discovered modules:', metas.map(m => m.name))\n\n return metas\n }\n\n const generateInputs = (metas: ShardevModuleMeta[]) => {\n const inputs: Record<string, string> = {}\n metas.forEach(meta => {\n Object.entries(meta.input).forEach(([key, value]) => {\n inputs[`${meta.name}-${key}`] = value\n })\n })\n return inputs\n }\n\n const resolveWatchPath = (meta: ShardevModuleMeta): string | null => {\n const base = meta.usePublished && meta.publishedDir\n ? meta.publishedDir\n : meta.srcDir\n\n if (!base) return null\n\n return path.isAbsolute(base)\n ? base\n : path.resolve(root, base)\n }\n\n const handleHMR = (\n server: ViteDevServer,\n file: string\n ) => {\n\n const module = server.moduleGraph.getModuleById(file)\n\n if (!module) return\n\n log('HMR update:', file)\n\n const updates = [{\n type: 'js-update',\n path: module.url,\n acceptedPath: module.url,\n timestamp: Date.now()\n }]\n\n server.moduleGraph.invalidateModule(module)\n\n server.ws.send({\n type: 'update',\n updates\n })\n }\n\n return {\n name: 'laravel-modules',\n\n async config(config: UserConfig, env: ConfigEnv) {\n\n const metas = await discoverModules()\n\n const aliases: Record<string, string> = {}\n metas.forEach(meta => Object.assign(aliases, meta.alias))\n\n const rollupInputs = generateInputs(metas)\n\n return mergeConfig(config, {\n resolve: { alias: aliases },\n build: {\n rollupOptions: { input: rollupInputs }\n }\n })\n },\n\n async configureServer(server: ViteDevServer) {\n\n const metas = await discoverModules()\n\n for (const meta of metas) {\n const watchPath = resolveWatchPath(meta)\n if (watchPath && fs.existsSync(watchPath)) {\n server.watcher.add(watchPath)\n log('Watching:', watchPath)\n }\n }\n\n server.watcher.on('change', (file) => {\n\n const matched = metas.some(meta => {\n const watchPath = resolveWatchPath(meta)\n return watchPath && file.startsWith(watchPath)\n })\n\n if (!matched) return\n\n handleHMR(server, file)\n })\n }\n }\n}"],"mappings":"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","names":["path","fs"]}
1
+ {"version":3,"sources":["../src/laravelModule.ts","../src/laravelModules.ts"],"sourcesContent":["import fs from 'fs'\nimport path from 'path'\nimport type { PluginOption } from 'vite'\n\nexport interface ModuleOptions {\n name: string\n vendor?: string\n srcDir?: string\n\n // ✅ Nuevo formato recomendado\n input?: Record<string, string>\n\n // ⚠ Backward compatibility\n inputs?: string[]\n\n buildDir?: string\n publishedDir?: string\n}\n\nexport interface ShardevModuleMeta {\n name: string\n input: Record<string, string>\n buildDir: string\n alias: Record<string, string>\n usePublished: boolean\n}\n\nexport function laravelModule(options: ModuleOptions): PluginOption {\n\n const {\n name,\n vendor = 'shardevcom',\n srcDir = 'resources/react/src',\n input,\n inputs,\n buildDir = `build/${vendor}/${name}`,\n publishedDir = `resources/react/${vendor}/${name}`\n } = options\n\n const root = process.cwd()\n const moduleRoot = path.resolve(root, 'packages', vendor, name)\n\n const relative = path.relative(moduleRoot, root)\n const isModuleRoot =\n !relative || relative === '.' || !relative.startsWith('..')\n\n // ---------------------------------------------------\n // 🔥 Normalización inteligente de inputs\n // ---------------------------------------------------\n\n let normalizedInput: Record<string, string> = {}\n\n if (input && Object.keys(input).length > 0) {\n // Nuevo formato recomendado\n for (const [key, file] of Object.entries(input)) {\n normalizedInput[key] = path.resolve(moduleRoot, file)\n }\n } else {\n // Backward compatibility con inputs: []\n const legacyInputs = inputs ?? ['main.tsx']\n\n legacyInputs.forEach(file => {\n const key = path.parse(file).name\n normalizedInput[key] = path.resolve(moduleRoot, srcDir, file)\n })\n }\n\n // ---------------------------------------------------\n // Published detection\n // ---------------------------------------------------\n\n const publishedPath = path.resolve(root, publishedDir)\n const isPublished = fs.existsSync(publishedPath)\n\n const aliasPath = isPublished\n ? publishedPath\n : path.resolve(moduleRoot, srcDir)\n\n const meta: ShardevModuleMeta = {\n name,\n input: normalizedInput,\n buildDir,\n alias: {\n [`@${vendor}/${name}`]: aliasPath\n },\n usePublished: isPublished\n }\n\n return {\n name: `vite-plugin-laravel-module:${name}`,\n\n // 🔥 Metadata consumida por laravelModules()\n shardevMeta: meta,\n\n config() {\n\n // 🔹 Standalone build\n if (isModuleRoot) {\n return {\n build: {\n outDir: buildDir,\n emptyOutDir: true,\n rollupOptions: {\n input: normalizedInput\n }\n },\n resolve: {\n alias: meta.alias\n }\n }\n }\n\n // 🔹 Integrated mode\n return {\n resolve: {\n alias: meta.alias\n }\n }\n }\n\n } as PluginOption\n}","import type { Plugin, UserConfig, ConfigEnv, ViteDevServer, ModuleNode } from 'vite'\nimport { mergeConfig, createServer } from 'vite'\nimport path from 'path'\nimport fs from 'fs'\n\ninterface LaravelModulesOptions {\n modulesDir?: string\n statusesFile?: string\n debug?: boolean\n useMetaCache?: boolean\n}\n\ninterface ShardevModuleMeta {\n name: string\n input: Record<string, string>\n buildDir: string\n alias: Record<string, string>\n usePublished: boolean\n srcDir: string\n publishedDir?: string\n}\n\nexport function laravelModules(\n options: LaravelModulesOptions = {}\n): Plugin {\n\n const {\n modulesDir = 'packages',\n statusesFile = 'modules.json',\n debug = false,\n useMetaCache = true\n } = options\n\n const root = process.cwd()\n const modulesPath = path.resolve(root, modulesDir)\n const statusesPath = path.resolve(root, statusesFile)\n\n let cachedMetas: ShardevModuleMeta[] = []\n let metaCacheLoaded = false\n\n const log = (...args: any[]) => {\n if (debug) console.log('[laravel-modules]', ...args)\n }\n\n const loadStatuses = (): Record<string, boolean> => {\n if (!fs.existsSync(statusesPath)) return {}\n try {\n return JSON.parse(fs.readFileSync(statusesPath, 'utf-8'))\n } catch {\n return {}\n }\n }\n\n const validateMeta = (meta: ShardevModuleMeta) => {\n if (!meta.name) throw new Error('Module meta missing name')\n if (!meta.srcDir) throw new Error(`Module ${meta.name} missing srcDir`)\n if (!meta.input) throw new Error(`Module ${meta.name} missing input`)\n }\n\n const discoverModules = async (): Promise<ShardevModuleMeta[]> => {\n\n if (useMetaCache && metaCacheLoaded) {\n log('Using cached module metas')\n return cachedMetas\n }\n\n if (!fs.existsSync(modulesPath)) return []\n\n const statuses = loadStatuses()\n const metas: ShardevModuleMeta[] = []\n\n const vendors = fs.readdirSync(modulesPath, { withFileTypes: true })\n .filter(d => d.isDirectory())\n\n for (const vendor of vendors) {\n const vendorPath = path.join(modulesPath, vendor.name)\n\n const packages = fs.readdirSync(vendorPath, { withFileTypes: true })\n .filter(d => d.isDirectory() && statuses[d.name] !== false)\n\n for (const pkg of packages) {\n\n const pkgPath = path.join(vendorPath, pkg.name)\n const viteConfigPath = path.join(pkgPath, 'vite.config.ts')\n\n if (!fs.existsSync(viteConfigPath)) continue\n\n const server = await createServer({\n configFile: viteConfigPath,\n logLevel: 'silent'\n })\n\n const plugins = (server.config.plugins || []) as Plugin[]\n\n for (const plugin of plugins) {\n if (plugin?.name?.startsWith('vite-plugin-laravel-module:')) {\n const meta = (plugin as any).shardevMeta as ShardevModuleMeta\n if (meta) {\n validateMeta(meta)\n metas.push(meta)\n }\n }\n }\n\n await server.close()\n }\n }\n\n cachedMetas = metas\n metaCacheLoaded = true\n\n log('Discovered modules:', metas.map(m => m.name))\n\n return metas\n }\n\n const generateInputs = (metas: ShardevModuleMeta[]) => {\n const inputs: Record<string, string> = {}\n metas.forEach(meta => {\n Object.entries(meta.input).forEach(([key, value]) => {\n inputs[`${meta.name}-${key}`] = value\n })\n })\n return inputs\n }\n\n const resolveWatchPath = (meta: ShardevModuleMeta): string | null => {\n const base = meta.usePublished && meta.publishedDir\n ? meta.publishedDir\n : meta.srcDir\n\n if (!base) return null\n\n return path.isAbsolute(base)\n ? base\n : path.resolve(root, base)\n }\n\n const handleHMR = (\n server: ViteDevServer,\n file: string\n ) => {\n\n const module = server.moduleGraph.getModuleById(file)\n\n if (!module) return\n\n log('HMR update:', file)\n\n const updates = [{\n type: 'js-update',\n path: module.url,\n acceptedPath: module.url,\n timestamp: Date.now()\n }]\n\n server.moduleGraph.invalidateModule(module)\n\n server.ws.send({\n type: 'update',\n updates\n })\n }\n\n return {\n name: 'laravel-modules',\n\n async config(config: UserConfig, env: ConfigEnv) {\n\n const metas = await discoverModules()\n\n const aliases: Record<string, string> = {}\n metas.forEach(meta => Object.assign(aliases, meta.alias))\n\n const rollupInputs = generateInputs(metas)\n\n return mergeConfig(config, {\n resolve: { alias: aliases },\n build: {\n rollupOptions: { input: rollupInputs }\n }\n })\n },\n\n async configureServer(server: ViteDevServer) {\n\n const metas = await discoverModules()\n\n for (const meta of metas) {\n const watchPath = resolveWatchPath(meta)\n if (watchPath && fs.existsSync(watchPath)) {\n server.watcher.add(watchPath)\n log('Watching:', watchPath)\n }\n }\n\n server.watcher.on('change', (file) => {\n\n const matched = metas.some(meta => {\n const watchPath = resolveWatchPath(meta)\n return watchPath && file.startsWith(watchPath)\n })\n\n if (!matched) return\n\n handleHMR(server, file)\n })\n }\n }\n}"],"mappings":"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","names":["path","fs"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shardev/vite-plugin-modular",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "author": "Elbert Tous",
5
5
  "description": "Advanced Laravel Modules support for Vite (monorepo + namespace resolver)",
6
6
  "license": "MIT",