feat(bundle): add configurable bundle output modes and bundler options (support base64ts, production builds, includeFiles, maxLineLength) and route non-default outputs to a CustomBundleHandler
This commit is contained in:
@@ -1,5 +1,13 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 2026-02-24 - 3.2.0 - feat(bundle)
|
||||||
|
add configurable bundle output modes and bundler options (support base64ts, production builds, includeFiles, maxLineLength) and route non-default outputs to a CustomBundleHandler
|
||||||
|
|
||||||
|
- Added new ITswatchConfig fields: outputMode, bundler, production, includeFiles, maxLineLength
|
||||||
|
- tswatch now creates a CustomBundleHandler and uses it when outputMode is not 'bundle' (e.g. base64ts)
|
||||||
|
- Default bundling path now reads bundler and production from bundleConfig (defaults to 'esbuild' and false)
|
||||||
|
- Bumped dependency @git.zone/tsbundle to ^2.9.0
|
||||||
|
|
||||||
## 2026-02-05 - 3.1.0 - feat(dev-server)
|
## 2026-02-05 - 3.1.0 - feat(dev-server)
|
||||||
add no-cache headers to built-in development server; update docs and bump dependencies
|
add no-cache headers to built-in development server; update docs and bump dependencies
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@api.global/typedserver": "^8.3.0",
|
"@api.global/typedserver": "^8.3.0",
|
||||||
"@git.zone/tsbundle": "^2.8.3",
|
"@git.zone/tsbundle": "^2.9.0",
|
||||||
"@git.zone/tsrun": "^2.0.1",
|
"@git.zone/tsrun": "^2.0.1",
|
||||||
"@push.rocks/early": "^4.0.4",
|
"@push.rocks/early": "^4.0.4",
|
||||||
"@push.rocks/lik": "^6.2.2",
|
"@push.rocks/lik": "^6.2.2",
|
||||||
|
|||||||
12
pnpm-lock.yaml
generated
12
pnpm-lock.yaml
generated
@@ -12,8 +12,8 @@ importers:
|
|||||||
specifier: ^8.3.0
|
specifier: ^8.3.0
|
||||||
version: 8.3.0(@tiptap/pm@2.27.2)
|
version: 8.3.0(@tiptap/pm@2.27.2)
|
||||||
'@git.zone/tsbundle':
|
'@git.zone/tsbundle':
|
||||||
specifier: ^2.8.3
|
specifier: ^2.9.0
|
||||||
version: 2.8.3
|
version: 2.9.0
|
||||||
'@git.zone/tsrun':
|
'@git.zone/tsrun':
|
||||||
specifier: ^2.0.1
|
specifier: ^2.0.1
|
||||||
version: 2.0.1
|
version: 2.0.1
|
||||||
@@ -630,8 +630,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-S518ulKveO76pS6jrAELrnFaCw5nDAIZD9j6QzVmLYDiZuJmlRwPK3/2E8ugQ+b7ffpkwJ9MT685ooEGDcWQ4Q==}
|
resolution: {integrity: sha512-S518ulKveO76pS6jrAELrnFaCw5nDAIZD9j6QzVmLYDiZuJmlRwPK3/2E8ugQ+b7ffpkwJ9MT685ooEGDcWQ4Q==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
'@git.zone/tsbundle@2.8.3':
|
'@git.zone/tsbundle@2.9.0':
|
||||||
resolution: {integrity: sha512-9q+KbVGKUTDNND+jDiJuk4bPH/mtiA2B0EWtV+/NyvgZfIbpe/ItHemyIvXB4RAqncMdBhzXquCFCvGjAhwVIQ==}
|
resolution: {integrity: sha512-itXX/oiJjrRHUlIGTHUEqSwPuGwsG4Cq8kh7aqFOm8mYzJwtXYE1gBqLJTWZma6gI5n+xAk5qTxTyfikuPgWQA==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
'@git.zone/tspublish@1.11.0':
|
'@git.zone/tspublish@1.11.0':
|
||||||
@@ -5589,7 +5589,7 @@ snapshots:
|
|||||||
- supports-color
|
- supports-color
|
||||||
- vue
|
- vue
|
||||||
|
|
||||||
'@git.zone/tsbundle@2.8.3':
|
'@git.zone/tsbundle@2.9.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@push.rocks/early': 4.0.4
|
'@push.rocks/early': 4.0.4
|
||||||
'@push.rocks/npmextra': 5.3.3
|
'@push.rocks/npmextra': 5.3.3
|
||||||
@@ -5646,7 +5646,7 @@ snapshots:
|
|||||||
'@git.zone/tstest@3.1.8(@aws-sdk/credential-providers@3.855.0)(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3)':
|
'@git.zone/tstest@3.1.8(@aws-sdk/credential-providers@3.855.0)(@push.rocks/smartserve@2.0.1)(socks@2.8.7)(typescript@5.9.3)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@api.global/typedserver': 3.0.80(@push.rocks/smartserve@2.0.1)
|
'@api.global/typedserver': 3.0.80(@push.rocks/smartserve@2.0.1)
|
||||||
'@git.zone/tsbundle': 2.8.3
|
'@git.zone/tsbundle': 2.9.0
|
||||||
'@git.zone/tsrun': 2.0.1
|
'@git.zone/tsrun': 2.0.1
|
||||||
'@push.rocks/consolecolor': 2.0.3
|
'@push.rocks/consolecolor': 2.0.3
|
||||||
'@push.rocks/qenv': 6.1.3
|
'@push.rocks/qenv': 6.1.3
|
||||||
|
|||||||
@@ -3,6 +3,6 @@
|
|||||||
*/
|
*/
|
||||||
export const commitinfo = {
|
export const commitinfo = {
|
||||||
name: '@git.zone/tswatch',
|
name: '@git.zone/tswatch',
|
||||||
version: '3.1.0',
|
version: '3.2.0',
|
||||||
description: 'A development tool for automatically watching and re-compiling TypeScript projects upon detecting file changes, enhancing developer workflows.'
|
description: 'A development tool for automatically watching and re-compiling TypeScript projects upon detecting file changes, enhancing developer workflows.'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,6 +44,16 @@ export interface IBundleConfig {
|
|||||||
watchPatterns?: string[];
|
watchPatterns?: string[];
|
||||||
/** If true, trigger server reload after bundling (default: true) */
|
/** If true, trigger server reload after bundling (default: true) */
|
||||||
triggerReload?: boolean;
|
triggerReload?: boolean;
|
||||||
|
/** Output mode: 'bundle' writes JS, 'base64ts' writes base64-encoded TS (default: 'bundle') */
|
||||||
|
outputMode?: 'bundle' | 'base64ts';
|
||||||
|
/** Bundler to use (default: 'esbuild') */
|
||||||
|
bundler?: 'esbuild' | 'rolldown' | 'rspack';
|
||||||
|
/** Whether to produce a production build (default: false) */
|
||||||
|
production?: boolean;
|
||||||
|
/** Files to include alongside the bundle */
|
||||||
|
includeFiles?: (string | { from: string; to: string })[];
|
||||||
|
/** Max chars per line for base64ts output. 0 or undefined = unlimited */
|
||||||
|
maxLineLength?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ export class TsWatch {
|
|||||||
public typedserver: plugins.typedserver.TypedServer | null = null;
|
public typedserver: plugins.typedserver.TypedServer | null = null;
|
||||||
|
|
||||||
private tsbundle = new plugins.tsbundle.TsBundle();
|
private tsbundle = new plugins.tsbundle.TsBundle();
|
||||||
|
private customBundleHandler = new plugins.tsbundle.CustomBundleHandler();
|
||||||
private htmlHandler = new plugins.tsbundle.HtmlHandler();
|
private htmlHandler = new plugins.tsbundle.HtmlHandler();
|
||||||
private assetsHandler = new plugins.tsbundle.AssetsHandler();
|
private assetsHandler = new plugins.tsbundle.AssetsHandler();
|
||||||
|
|
||||||
@@ -128,10 +129,22 @@ export class TsWatch {
|
|||||||
} else if (fromPath.endsWith('/') || !fromPath.includes('.')) {
|
} else if (fromPath.endsWith('/') || !fromPath.includes('.')) {
|
||||||
// Assets directory copy
|
// Assets directory copy
|
||||||
await this.assetsHandler.processAssets();
|
await this.assetsHandler.processAssets();
|
||||||
|
} else if (bundleConfig.outputMode && bundleConfig.outputMode !== 'bundle') {
|
||||||
|
// Non-default outputMode (e.g. base64ts) — use CustomBundleHandler
|
||||||
|
await this.customBundleHandler.processSingleBundle({
|
||||||
|
from: bundleConfig.from,
|
||||||
|
to: bundleConfig.to,
|
||||||
|
outputMode: bundleConfig.outputMode,
|
||||||
|
bundler: bundleConfig.bundler || 'esbuild',
|
||||||
|
production: bundleConfig.production || false,
|
||||||
|
includeFiles: bundleConfig.includeFiles,
|
||||||
|
maxLineLength: bundleConfig.maxLineLength,
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
// TypeScript bundling
|
// Standard TypeScript bundling (default)
|
||||||
await this.tsbundle.build(paths.cwd, fromPath, toPath, {
|
await this.tsbundle.build(paths.cwd, fromPath, toPath, {
|
||||||
bundler: 'esbuild',
|
bundler: bundleConfig.bundler || 'esbuild',
|
||||||
|
production: bundleConfig.production || false,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user