Compare commits

..

15 Commits

8 changed files with 2211 additions and 1587 deletions

View File

@ -1,5 +1,38 @@
# Changelog # Changelog
## 2025-01-29 - 2.2.5 - fix(mod_assets)
Fix async handling in asset processing
- Ensured that the empty directory operation is awaited in the asset processing workflow.
## 2025-01-29 - 2.2.4 - fix(mod_assets)
Fix logging message in ensureAssetsDir to correctly state when directory is created
- Corrected logging output in ensureAssetsDir method to indicate directory creation.
## 2025-01-29 - 2.2.3 - fix(mod_assets)
Fix issue with asset directory copy
- Updated dependency '@push.rocks/smartfile' to version '^11.2.0'
- Ensure target directory is properly replaced when copying assets
## 2025-01-29 - 2.2.2 - fix(dependencies)
Update smartfile dependency and fix spacing issue in assets module
- Updated @push.rocks/smartfile from ^11.1.6 to ^11.1.8
- Fixed a spacing issue in the processAssets function within the assets module
## 2025-01-29 - 2.2.1 - fix(index)
Export mod_assets for programmatic use
- Added export for mod_assets/index in ts/index.ts to make it usable programmatically.
## 2025-01-29 - 2.2.0 - feat(AssetsHandler)
Add asset handling to the CLI workflow
- Introduced AssetsHandler class for managing asset directories and files.
- Updated tsbundle.cli.ts to include asset processing in the 'website' command.
## 2025-01-28 - 2.1.1 - fix(core) ## 2025-01-28 - 2.1.1 - fix(core)
Update dependencies and remove GitLab CI configuration. Update dependencies and remove GitLab CI configuration.

View File

@ -1,6 +1,6 @@
{ {
"name": "@git.zone/tsbundle", "name": "@git.zone/tsbundle",
"version": "2.1.1", "version": "2.2.7",
"private": false, "private": false,
"description": "a bundler using rollup for painless bundling of web projects", "description": "a bundler using rollup for painless bundling of web projects",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
@ -16,26 +16,26 @@
"tsbundle": "cli.js" "tsbundle": "cli.js"
}, },
"devDependencies": { "devDependencies": {
"@git.zone/tsbuild": "^2.2.1", "@git.zone/tsbuild": "^2.6.4",
"@git.zone/tsrun": "^1.3.3", "@git.zone/tsrun": "^1.3.3",
"@git.zone/tstest": "^1.0.96", "@git.zone/tstest": "^2.3.1",
"@push.rocks/tapbundle": "^5.5.6", "@push.rocks/tapbundle": "^6.0.3",
"@types/node": "^22.12.0" "@types/node": "^22.12.0"
}, },
"dependencies": { "dependencies": {
"@push.rocks/early": "^4.0.4", "@push.rocks/early": "^4.0.4",
"@push.rocks/smartcli": "^4.0.11", "@push.rocks/smartcli": "^4.0.11",
"@push.rocks/smartdelay": "^3.0.5", "@push.rocks/smartdelay": "^3.0.5",
"@push.rocks/smartfile": "^11.1.5", "@push.rocks/smartfile": "^11.2.5",
"@push.rocks/smartlog": "^3.0.7", "@push.rocks/smartlog": "^3.1.8",
"@push.rocks/smartlog-destination-local": "^9.0.2", "@push.rocks/smartlog-destination-local": "^9.0.2",
"@push.rocks/smartpath": "^5.0.18", "@push.rocks/smartpath": "^5.0.18",
"@push.rocks/smartpromise": "^4.2.2", "@push.rocks/smartpromise": "^4.2.3",
"@push.rocks/smartspawn": "^3.0.3", "@push.rocks/smartspawn": "^3.0.3",
"@types/html-minifier": "^4.0.5", "@types/html-minifier": "^4.0.5",
"esbuild": "^0.24.2", "esbuild": "^0.25.5",
"html-minifier": "^4.0.0", "html-minifier": "^4.0.0",
"typescript": "5.7.3" "typescript": "5.8.3"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",
@ -51,5 +51,6 @@
], ],
"browserslist": [ "browserslist": [
"last 1 chrome versions" "last 1 chrome versions"
] ],
"packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
} }

3693
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@git.zone/tsbundle', name: '@git.zone/tsbundle',
version: '2.1.1', version: '2.2.5',
description: 'a bundler using rollup for painless bundling of web projects' description: 'a bundler using rollup for painless bundling of web projects'
} }

View File

@ -9,5 +9,6 @@ early.stop();
// lets make this usable programmatically // lets make this usable programmatically
export * from './tsbundle.class.tsbundle.js'; export * from './tsbundle.class.tsbundle.js';
export * from './mod_assets/index.js';
export * from './mod_html/index.js'; export * from './mod_html/index.js';
export { runCli }; export { runCli };

40
ts/mod_assets/index.ts Normal file
View File

@ -0,0 +1,40 @@
import * as plugins from './plugins.js';
import * as paths from '../paths.js';
export class AssetsHandler {
public defaultFromDirPath: string = plugins.path.join(paths.cwd, './assets');
public defaultToDirPath: string = plugins.path.join(paths.cwd, './dist_serve/assets');
public async ensureAssetsDir() {
const assetsDirExists = await plugins.smartfile.fs.isDirectory(this.defaultFromDirPath);
if (!assetsDirExists) {
await plugins.smartfile.fs.ensureDir(this.defaultFromDirPath);
console.log(`created assets directory at ${this.defaultFromDirPath}`);
}
}
// copies the html
public async processAssets(optionsArg?: {
from?: string;
to?: string;
}) {
// lets assemble the options
optionsArg = {
... {
from: this.defaultFromDirPath,
to: this.defaultToDirPath,
},
...(optionsArg || {})
}
await this.ensureAssetsDir()
optionsArg.from = plugins.smartpath.transform.toAbsolute(optionsArg.from, paths.cwd) as string;
optionsArg.to = plugins.smartpath.transform.toAbsolute(optionsArg.to, paths.cwd) as string;
// lets clean theh target directory
await plugins.smartfile.fs.ensureEmptyDir(optionsArg.to);
plugins.smartfile.fs.copySync(optionsArg.from, optionsArg.to, {
replaceTargetDir: true,
});
}
}

1
ts/mod_assets/plugins.ts Normal file
View File

@ -0,0 +1 @@
export * from '../plugins.js';

View File

@ -2,6 +2,7 @@ import * as plugins from './plugins.js';
import { TsBundle } from './tsbundle.class.tsbundle.js'; import { TsBundle } from './tsbundle.class.tsbundle.js';
import { HtmlHandler } from './mod_html/index.js'; import { HtmlHandler } from './mod_html/index.js';
import { logger } from './tsbundle.logging.js'; import { logger } from './tsbundle.logging.js';
import { AssetsHandler } from './mod_assets/index.js';
export const runCli = async () => { export const runCli = async () => {
const tsBundleCli = new plugins.smartcli.Smartcli(); const tsBundleCli = new plugins.smartcli.Smartcli();
@ -34,6 +35,8 @@ export const runCli = async () => {
tsBundleCli.addCommand('website').subscribe(async (argvArg) => { tsBundleCli.addCommand('website').subscribe(async (argvArg) => {
const tsbundle = new TsBundle(); const tsbundle = new TsBundle();
// lets deal with the html
const htmlHandler = new HtmlHandler(); const htmlHandler = new HtmlHandler();
await tsbundle.build( await tsbundle.build(
process.cwd(), process.cwd(),
@ -49,6 +52,10 @@ export const runCli = async () => {
minify: true, minify: true,
}); });
} }
// lets deal with the assets
const assetsHandler = new AssetsHandler();
await assetsHandler.processAssets();
}); });
tsBundleCli.startParse(); tsBundleCli.startParse();