Compare commits

...

22 Commits

Author SHA1 Message Date
866c203856 2.0.13 2024-01-08 16:48:12 +01:00
3e673bca6b fix(core): update 2024-01-08 16:48:11 +01:00
5c3dfe0920 2.0.12 2024-01-08 16:28:23 +01:00
c08a9065a1 fix(core): update 2024-01-08 16:28:22 +01:00
f4071f0b64 2.0.11 2024-01-08 16:24:52 +01:00
335cc19211 fix(core): update 2024-01-08 16:24:52 +01:00
25851c2b64 2.0.10 2023-10-03 19:12:49 +02:00
73a6ce2786 fix(core): update 2023-10-03 19:12:49 +02:00
8bd279637b 2.0.9 2023-08-26 15:08:23 +02:00
1e37857c26 fix(core): update 2023-08-26 15:08:23 +02:00
93a1052bf5 2.0.8 2023-06-03 17:33:32 +02:00
6e6452df61 fix(core): update 2023-06-03 17:33:32 +02:00
3de5a91885 2.0.7 2022-08-03 19:43:18 +02:00
f7ca1b2135 fix(core): update 2022-08-03 19:43:18 +02:00
3076e13179 2.0.6 2022-07-24 15:51:55 +02:00
f3b50d384a fix(core): update 2022-07-24 15:51:55 +02:00
6dcb3f7c2a 2.0.5 2022-06-02 01:00:49 +02:00
daba025307 fix(core): update 2022-06-02 01:00:49 +02:00
00383171ff 2.0.4 2022-05-25 11:56:11 +02:00
2ce9b08911 fix(core): update 2022-05-25 11:56:10 +02:00
d603baf65e 2.0.3 2022-05-04 18:51:15 +02:00
50e4909984 fix(core): update 2022-05-04 18:51:15 +02:00
16 changed files with 5639 additions and 18861 deletions

View File

@ -124,7 +124,7 @@ pages:
stage: metadata stage: metadata
script: script:
- npmci node install lts - npmci node install lts
- npmci command npm install -g @gitzone/tsdoc - npmci command npm install -g @git.zone/tsdoc
- npmci npm prepare - npmci npm prepare
- npmci npm install - npmci npm install
- npmci command tsdoc - npmci command tsdoc

View File

@ -1,5 +1,5 @@
#!/usr/bin/env node #!/usr/bin/env node
process.env.CLI_CALL = 'true'; process.env.CLI_CALL = 'true';
import * as tsrun from '@gitzone/tsrun'; import * as tsrun from '@git.zone/tsrun';
tsrun.runPath('./cli.child.js', import.meta.url); tsrun.runPath('./cli.child.js', import.meta.url);

View File

@ -6,7 +6,7 @@
"gitscope": "gitzone", "gitscope": "gitzone",
"gitrepo": "tsbundle", "gitrepo": "tsbundle",
"description": "a bundler using rollup for painless bundling of web projects", "description": "a bundler using rollup for painless bundling of web projects",
"npmPackagename": "@gitzone/tsbundle", "npmPackagename": "@git.zone/tsbundle",
"license": "MIT", "license": "MIT",
"projectDomain": "git.zone" "projectDomain": "git.zone"
} }

18784
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@gitzone/tsbundle", "name": "@git.zone/tsbundle",
"version": "2.0.2", "version": "2.0.13",
"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,25 +16,26 @@
"tsbundle": "cli.js" "tsbundle": "cli.js"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.59", "@git.zone/tsbuild": "^2.1.70",
"@gitzone/tsrun": "^1.2.31", "@git.zone/tsrun": "^1.2.46",
"@gitzone/tstest": "^1.0.69", "@git.zone/tstest": "^1.0.84",
"@pushrocks/tapbundle": "^5.0.2" "@push.rocks/tapbundle": "^5.0.15",
"@types/node": "^20.10.7"
}, },
"dependencies": { "dependencies": {
"@pushrocks/early": "^3.0.6", "@push.rocks/early": "^4.0.4",
"@pushrocks/smartcli": "^3.0.14", "@push.rocks/smartcli": "^4.0.8",
"@pushrocks/smartfile": "^9.0.6", "@push.rocks/smartdelay": "^3.0.5",
"@pushrocks/smartlog": "^2.0.44", "@push.rocks/smartfile": "^11.0.4",
"@pushrocks/smartlog-destination-local": "^8.0.8", "@push.rocks/smartlog": "^3.0.3",
"@pushrocks/smartpath": "^5.0.5", "@push.rocks/smartlog-destination-local": "^9.0.0",
"@pushrocks/smartpromise": "^3.1.7", "@push.rocks/smartpath": "^5.0.11",
"@pushrocks/smartspawn": "^2.0.9", "@push.rocks/smartpromise": "^4.0.2",
"@types/html-minifier": "^4.0.2", "@push.rocks/smartspawn": "^3.0.2",
"@types/node": "^17.0.21", "@types/html-minifier": "^4.0.5",
"esbuild": "0.14.27", "esbuild": "^0.19.11",
"html-minifier": "^4.0.0", "html-minifier": "^4.0.0",
"typescript": "4.7.0" "typescript": "5.3.3"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",

5541
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
# @gitzone/tsbundle # @git.zone/tsbundle
a bundler using rollup for painless bundling of web projects a bundler using rollup for painless bundling of web projects
## Availabililty and Links ## Availabililty and Links
* [npmjs.org (npm package)](https://www.npmjs.com/package/@gitzone/tsbundle) * [npmjs.org (npm package)](https://www.npmjs.com/package/@git.zone/tsbundle)
* [gitlab.com (source)](https://gitlab.com/gitzone/tsbundle) * [gitlab.com (source)](https://gitlab.com/gitzone/tsbundle)
* [github.com (source mirror)](https://github.com/gitzone/tsbundle) * [github.com (source mirror)](https://github.com/gitzone/tsbundle)
* [docs (typedoc)](https://gitzone.gitlab.io/tsbundle/) * [docs (typedoc)](https://gitzone.gitlab.io/tsbundle/)
@ -13,14 +13,14 @@ Status Category | Status Badge
-- | -- -- | --
GitLab Pipelines | [![pipeline status](https://gitlab.com/gitzone/tsbundle/badges/master/pipeline.svg)](https://lossless.cloud) GitLab Pipelines | [![pipeline status](https://gitlab.com/gitzone/tsbundle/badges/master/pipeline.svg)](https://lossless.cloud)
GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/gitzone/tsbundle/badges/master/coverage.svg)](https://lossless.cloud) GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/gitzone/tsbundle/badges/master/coverage.svg)](https://lossless.cloud)
npm | [![npm downloads per month](https://badgen.net/npm/dy/@gitzone/tsbundle)](https://lossless.cloud) npm | [![npm downloads per month](https://badgen.net/npm/dy/@git.zone/tsbundle)](https://lossless.cloud)
Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/gitzone/tsbundle)](https://lossless.cloud) Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/gitzone/tsbundle)](https://lossless.cloud)
TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud) TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud)
node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud) Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud)
PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@gitzone/tsbundle)](https://lossless.cloud) PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@git.zone/tsbundle)](https://lossless.cloud)
PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@gitzone/tsbundle)](https://lossless.cloud) PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@git.zone/tsbundle)](https://lossless.cloud)
BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@gitzone/tsbundle)](https://lossless.cloud) BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@git.zone/tsbundle)](https://lossless.cloud)
Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud) Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud)
## Usage ## Usage
@ -38,10 +38,10 @@ tsbundle supports two modes of usage: CLI and API usage.
# Install the tool for cli usage # Install the tool for cli usage
# Globally # Globally
npm install -g @gitzone/tsbundle npm install -g @git.zone/tsbundle
# Locally for use in your pacakge.json # Locally for use in your pacakge.json
npm install --save-dev @gitzone/tsbundle npm install --save-dev @git.zone/tsbundle
# then use it # then use it
tsbundle --from="./ts/index.ts" --to="dist/bundle.js" tsbundle --from="./ts/index.ts" --to="dist/bundle.js"

View File

@ -1,4 +1,4 @@
import { expect, tap } from '@pushrocks/tapbundle'; import { expect, tap } from '@push.rocks/tapbundle';
import * as tsbundle from '../ts/index.js'; import * as tsbundle from '../ts/index.js';
tap.test('should bundle with esbuild', async () => { tap.test('should bundle with esbuild', async () => {

View File

@ -1,5 +1,9 @@
import * as smartdelay from '@push.rocks/smartdelay';
const myConst: string = 'hello'; const myConst: string = 'hello';
await smartdelay.delayFor(1000);
function sealed(constructor: Function) { function sealed(constructor: Function) {
Object.seal(constructor); Object.seal(constructor);
Object.seal(constructor.prototype); Object.seal(constructor.prototype);
@ -15,4 +19,6 @@ class BugReport {
} }
} }
console.log(myConst); console.log(myConst);

View File

@ -2,7 +2,7 @@
* autocreated commitinfo by @pushrocks/commitinfo * autocreated commitinfo by @pushrocks/commitinfo
*/ */
export const commitinfo = { export const commitinfo = {
name: '@gitzone/tsbundle', name: '@git.zone/tsbundle',
version: '2.0.2', version: '2.0.13',
description: 'a bundler using rollup for painless bundling of web projects' description: 'a bundler using rollup for painless bundling of web projects'
} }

View File

@ -1,4 +1,4 @@
import * as early from '@pushrocks/early'; import * as early from '@push.rocks/early';
early.start('tsbundle'); early.start('tsbundle');
// lets import all plugins beforehand // lets import all plugins beforehand
import './plugins.js'; import './plugins.js';

View File

@ -23,8 +23,10 @@ export class TsBundleProcess {
bundle: true, bundle: true,
sourcemap: true, sourcemap: true,
format: 'esm', format: 'esm',
target: 'es2020', target: 'es2022',
outfile: toArg, entryNames: plugins.path.parse(toArg).name,
outdir: plugins.path.parse(toArg).dir,
splitting: true,
tsconfig: paths.tsconfigPath tsconfig: paths.tsconfigPath
}); });
} }
@ -46,10 +48,14 @@ export class TsBundleProcess {
bundle: true, bundle: true,
sourcemap: true, sourcemap: true,
format: 'esm', format: 'esm',
target: 'es2020', target: 'es2022',
minify: true, minify: true,
outfile: toArg, // outfile: toArg,
tsconfig: paths.tsconfigPath entryNames: 'bundle',
outdir: plugins.path.parse(toArg).dir,
tsconfig: paths.tsconfigPath,
splitting: true,
chunkNames: 'chunks/[name]-[hash]',
}); });
} }
} }

View File

@ -10,35 +10,38 @@ export class HtmlHandler {
} }
// copies the html // copies the html
public async copyHtml(fromArg: string = this.defaultFromPath, toArg: string = this.defaultToPath) { public async processHtml(optionsArg: {
if (await this.checkIfExists()) { from?: string;
console.log(`${fromArg} replaces file at ${toArg}`); to?: string;
minify?: boolean;
}) {
optionsArg = {
... {
from: this.defaultFromPath,
to: this.defaultToPath,
minify: false,
},
...optionsArg
} }
fromArg = plugins.smartpath.transform.toAbsolute(fromArg, paths.cwd) as string;
toArg = plugins.smartpath.transform.toAbsolute(toArg, paths.cwd) as string;
await plugins.smartfile.fs.copy(fromArg, toArg);
console.log(`html copy succeeded!`);
}
// copies and minifies the html
public async minifyHtml(fromArg: string = this.defaultFromPath, toArg: string = this.defaultToPath) {
if (await this.checkIfExists()) { if (await this.checkIfExists()) {
console.log(`${fromArg} replaces file at ${toArg}`); console.log(`${optionsArg.from} replaces file at ${optionsArg.to}`);
} }
fromArg = plugins.smartpath.transform.toAbsolute(fromArg, paths.cwd) as string; optionsArg.from = plugins.smartpath.transform.toAbsolute(optionsArg.from, paths.cwd) as string;
toArg = plugins.smartpath.transform.toAbsolute(toArg, paths.cwd) as string; optionsArg.to = plugins.smartpath.transform.toAbsolute(optionsArg.to, paths.cwd) as string;
const fileString = plugins.smartfile.fs.toStringSync(fromArg); let fileString = plugins.smartfile.fs.toStringSync(optionsArg.from);
const minifiedHtml = plugins.htmlMinifier.minify(fileString, { if (optionsArg.minify) {
minifyCSS: true, fileString = plugins.htmlMinifier.minify(fileString, {
minifyJS: true, minifyCSS: true,
sortAttributes: true, minifyJS: true,
sortClassName: true, sortAttributes: true,
removeAttributeQuotes: true, sortClassName: true,
collapseWhitespace: true, removeAttributeQuotes: true,
collapseInlineTagWhitespace: true, collapseWhitespace: true,
removeComments: true, collapseInlineTagWhitespace: true,
}); removeComments: true,
await plugins.smartfile.memory.toFs(minifiedHtml, toArg); });
console.log(`html minification succeeded!`); }
await plugins.smartfile.memory.toFs(fileString, optionsArg.to);
console.log(`html processing succeeded!`);
} }
} }

View File

@ -8,4 +8,4 @@ export const packageDir = plugins.path.join(
export const htmlDir = plugins.path.join(cwd, './html'); export const htmlDir = plugins.path.join(cwd, './html');
export const distServeDir = plugins.path.join(cwd, './dist_serve'); export const distServeDir = plugins.path.join(cwd, './dist_serve');
export const assetsDir = plugins.path.join(packageDir, 'assets'); export const assetsDir = plugins.path.join(packageDir, 'assets');
export const tsconfigPath = plugins.path.join(packageDir, './assets/tsconfig.json'); export const tsconfigPath = plugins.path.join(assetsDir, './tsconfig.json');

View File

@ -4,13 +4,13 @@ import * as path from 'path';
export { path }; export { path };
// pushrocks scope // pushrocks scope
import * as smartcli from '@pushrocks/smartcli'; import * as smartcli from '@push.rocks/smartcli';
import * as smartfile from '@pushrocks/smartfile'; import * as smartfile from '@push.rocks/smartfile';
import * as smartlog from '@pushrocks/smartlog'; import * as smartlog from '@push.rocks/smartlog';
import * as smartlogDestinationLocal from '@pushrocks/smartlog-destination-local'; import * as smartlogDestinationLocal from '@push.rocks/smartlog-destination-local';
import * as smartpath from '@pushrocks/smartpath'; import * as smartpath from '@push.rocks/smartpath';
import * as smartpromise from '@pushrocks/smartpromise'; import * as smartpromise from '@push.rocks/smartpromise';
import * as smartspawn from '@pushrocks/smartspawn'; import * as smartspawn from '@push.rocks/smartspawn';
export { export {
smartcli, smartcli,

View File

@ -5,7 +5,7 @@ import { logger } from './tsbundle.logging.js';
export const runCli = async () => { export const runCli = async () => {
const tsBundleCli = new plugins.smartcli.Smartcli(); const tsBundleCli = new plugins.smartcli.Smartcli();
tsBundleCli.standardTask().subscribe(async (argvArg) => { tsBundleCli.standardCommand().subscribe(async (argvArg) => {
const tsbundle = new TsBundle(); const tsbundle = new TsBundle();
await tsbundle.build(process.cwd(), argvArg.from, argvArg.to, argvArg); await tsbundle.build(process.cwd(), argvArg.from, argvArg.to, argvArg);
return; return;
@ -13,8 +13,6 @@ export const runCli = async () => {
tsBundleCli.addCommand('element').subscribe(async (argvArg) => { tsBundleCli.addCommand('element').subscribe(async (argvArg) => {
const tsbundle = new TsBundle(); const tsbundle = new TsBundle();
const htmlHandler = new HtmlHandler();
// const htmlHandler = new HtmlHandler();
await tsbundle.build( await tsbundle.build(
process.cwd(), process.cwd(),
'./ts_web/index.ts', './ts_web/index.ts',
@ -43,7 +41,14 @@ export const runCli = async () => {
'./dist_serve/bundle.js', './dist_serve/bundle.js',
argvArg argvArg
); );
await htmlHandler.minifyHtml('./html/index.html', './dist_serve/index.html') const htmlFiles = await plugins.smartfile.fs.listFiles('./html', /\.html/);
for (const htmlFile of htmlFiles) {
await htmlHandler.processHtml({
from: `./html/${htmlFile}`,
to: `./dist_serve/${htmlFile}`,
minify: true,
});
}
}); });
tsBundleCli.startParse(); tsBundleCli.startParse();