Compare commits

..

No commits in common. "master" and "v2.0.13" have entirely different histories.

12 changed files with 3903 additions and 8138 deletions

141
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,141 @@
# gitzone ci_default
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache:
paths:
- .npmci_cache/
key: '$CI_BUILD_STAGE'
stages:
- security
- test
- release
- metadata
before_script:
- npm install -g @shipzone/npmci
# ====================
# security stage
# ====================
mirror:
stage: security
script:
- npmci git mirror
only:
- tags
tags:
- lossless
- docker
- notpriv
auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --production --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=prod --production
tags:
- docker
allow_failure: true
auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=dev
tags:
- docker
allow_failure: true
# ====================
# test stage
# ====================
testStable:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
testBuild:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
release:
stage: release
script:
- npmci node install stable
- npmci npm publish
only:
- tags
tags:
- lossless
- docker
- notpriv
# ====================
# metadata stage
# ====================
codequality:
stage: metadata
allow_failure: true
only:
- tags
script:
- npmci command npm install -g tslint typescript
- npmci npm prepare
- npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags:
- lossless
- docker
- priv
trigger:
stage: metadata
script:
- npmci trigger
only:
- tags
tags:
- lossless
- docker
- notpriv
pages:
stage: metadata
script:
- npmci node install lts
- npmci command npm install -g @git.zone/tsdoc
- npmci npm prepare
- npmci npm install
- npmci command tsdoc
tags:
- lossless
- docker
- notpriv
only:
- tags
artifacts:
expire_in: 1 week
paths:
- public
allow_failure: true

View File

@ -1,64 +0,0 @@
# 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)
Update dependencies and remove GitLab CI configuration.
- Updated several devDependencies to newer versions for improved stability and performance.
- Updated core dependencies including esbuild and TypeScript.
- Removed the .gitlab-ci.yml file, which could suggest a change in continuous integration setup.
## 2024-10-27 - 2.1.0 - feat(mod_esbuild)
Add alias support to esbuild bundling process
- Updated dependencies in package.json to latest versions.
- Improved build process by adding alias resolution based on tsconfig.json settings in esbuild.
## 2022-05-04 - 2.0.0-2.0.1 - Breaking and Fix Changes
Released version 2.0.0 with breaking changes and subsequent fixes.
- BREAKING CHANGE(core): Removed parcel and rollup
- fix(core): Addressed initial issues in new major version
## 2023-10-03 - 2.0.10 - Fix Updates
Ongoing updates and improvements.
- fix(core): General updates and enhancements
## 2024-01-10 - 2.0.11-2.0.15 - Minor Fixes
Cumulative fixes and updates from recent releases.
- fix(core): Continuous improvement cycle across versions

View File

@ -1,6 +1,6 @@
{
"name": "@git.zone/tsbundle",
"version": "2.2.5",
"version": "2.0.13",
"private": false,
"description": "a bundler using rollup for painless bundling of web projects",
"main": "dist_ts/index.js",
@ -16,26 +16,26 @@
"tsbundle": "cli.js"
},
"devDependencies": {
"@git.zone/tsbuild": "^2.2.1",
"@git.zone/tsrun": "^1.3.3",
"@git.zone/tstest": "^1.0.96",
"@push.rocks/tapbundle": "^5.5.6",
"@types/node": "^22.12.0"
"@git.zone/tsbuild": "^2.1.70",
"@git.zone/tsrun": "^1.2.46",
"@git.zone/tstest": "^1.0.84",
"@push.rocks/tapbundle": "^5.0.15",
"@types/node": "^20.10.7"
},
"dependencies": {
"@push.rocks/early": "^4.0.4",
"@push.rocks/smartcli": "^4.0.11",
"@push.rocks/smartcli": "^4.0.8",
"@push.rocks/smartdelay": "^3.0.5",
"@push.rocks/smartfile": "^11.2.0",
"@push.rocks/smartlog": "^3.0.7",
"@push.rocks/smartlog-destination-local": "^9.0.2",
"@push.rocks/smartpath": "^5.0.18",
"@push.rocks/smartpromise": "^4.2.2",
"@push.rocks/smartspawn": "^3.0.3",
"@push.rocks/smartfile": "^11.0.4",
"@push.rocks/smartlog": "^3.0.3",
"@push.rocks/smartlog-destination-local": "^9.0.0",
"@push.rocks/smartpath": "^5.0.11",
"@push.rocks/smartpromise": "^4.0.2",
"@push.rocks/smartspawn": "^3.0.2",
"@types/html-minifier": "^4.0.5",
"esbuild": "^0.24.2",
"esbuild": "^0.19.11",
"html-minifier": "^4.0.0",
"typescript": "5.7.3"
"typescript": "5.3.3"
},
"files": [
"ts/**/*",

11692
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

View File

@ -1,8 +1,8 @@
/**
* autocreated commitinfo by @push.rocks/commitinfo
* autocreated commitinfo by @pushrocks/commitinfo
*/
export const commitinfo = {
name: '@git.zone/tsbundle',
version: '2.2.5',
version: '2.0.13',
description: 'a bundler using rollup for painless bundling of web projects'
}

View File

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

View File

@ -1,40 +0,0 @@
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,
});
}
}

View File

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

View File

@ -4,32 +4,19 @@ import * as interfaces from '../interfaces/index.js';
import { logger } from '../tsbundle.logging.js';
export class TsBundleProcess {
constructor() {
// Nothing here
}
public async getAliases() {
try {
const aliasObject: Record<string, string> = {};
const localTsConfig = plugins.smartfile.fs.toObjectSync(
plugins.path.join(paths.cwd, 'tsconfig.json')
);
if (localTsConfig.compilerOptions && localTsConfig.compilerOptions.paths) {
for (const alias of Object.keys(localTsConfig.compilerOptions.paths)) {
const aliasPath = localTsConfig.compilerOptions.paths[alias][0];
aliasObject[alias] = aliasPath;
}
}
return aliasObject;
} catch (error) {
return {};
}
}
/**
* creates a bundle for the test enviroment
*/
public async buildTest(fromArg: string, toArg: string, argvArg: any) {
public async buildTest(
fromArg: string,
toArg: string,
argvArg: any
) {
// create a bundle
const esbuild = await plugins.esbuild.build({
entryPoints: [fromArg],
@ -39,20 +26,23 @@ export class TsBundleProcess {
target: 'es2022',
entryNames: plugins.path.parse(toArg).name,
outdir: plugins.path.parse(toArg).dir,
// splitting: true,
tsconfig: paths.tsconfigPath,
alias: await this.getAliases(),
splitting: true,
tsconfig: paths.tsconfigPath
});
}
/**
* creates a bundle for the production environment
*/
public async buildProduction(fromArg: string, toArg: string, argvArg: any) {
public async buildProduction(
fromArg: string,
toArg: string,
argvArg: any
) {
// create a bundle
console.log('esbuild specific:');
console.log(`from: ${fromArg}`);
console.log(`to: ${toArg}`);
console.log((`to: ${toArg}`));
const esbuild = await plugins.esbuild.build({
entryPoints: [fromArg],
bundle: true,
@ -60,35 +50,33 @@ export class TsBundleProcess {
format: 'esm',
target: 'es2022',
minify: true,
// outfile: toArg,
entryNames: 'bundle',
outdir: plugins.path.parse(toArg).dir,
tsconfig: paths.tsconfigPath,
// splitting: true,
splitting: true,
chunkNames: 'chunks/[name]-[hash]',
alias: await this.getAliases(),
});
}
}
const run = async () => {
console.log('running spawned compilation process');
const transportOptions: interfaces.IEnvTransportOptions = JSON.parse(
process.env.transportOptions
);
const transportOptions: interfaces.IEnvTransportOptions = JSON.parse(process.env.transportOptions);
console.log('=======> ESBUILD');
console.log(transportOptions);
process.chdir(transportOptions.cwd);
console.log(`switched to ${process.cwd()}`);
const tsbundleProcessInstance = new TsBundleProcess();
if (transportOptions.mode === 'test') {
console.log('building for test:');
console.log('building for test:')
tsbundleProcessInstance.buildTest(
plugins.smartpath.transform.makeAbsolute(transportOptions.from, process.cwd()),
plugins.smartpath.transform.makeAbsolute(transportOptions.to, process.cwd()),
transportOptions.argv
);
} else {
console.log('building for production:');
console.log('building for production:')
tsbundleProcessInstance.buildProduction(
plugins.smartpath.transform.makeAbsolute(transportOptions.from, process.cwd()),
plugins.smartpath.transform.makeAbsolute(transportOptions.to, process.cwd()),

View File

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

View File

@ -3,12 +3,7 @@
"experimentalDecorators": true,
"useDefineForClassFields": false,
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"esModuleInterop": true,
"verbatimModuleSyntax": true
},
"exclude": [
"dist_*/**/*.d.ts"
]
"module": "ES2022",
"moduleResolution": "nodenext"
}
}