Compare commits

...

44 Commits

Author SHA1 Message Date
ac3ef390e8 1.0.52 2020-03-09 15:04:37 +00:00
7ca9c52cc7 fix(core): update 2020-03-09 15:04:36 +00:00
0c702029f2 1.0.51 2020-03-09 14:36:56 +00:00
dddd3ead1c fix(core): update 2020-03-09 14:36:55 +00:00
bad5690d99 1.0.50 2020-03-02 10:10:30 +00:00
a8fb7aac7f fix(core): update 2020-03-02 10:10:29 +00:00
f33f985d3d 1.0.49 2020-03-02 09:42:45 +00:00
ddae40ddb2 fix(core): update 2020-03-02 09:42:44 +00:00
4256578bc6 1.0.48 2020-03-02 09:37:04 +00:00
1dd604d572 fix(core): update 2020-03-02 09:37:04 +00:00
262fd6e718 1.0.47 2019-10-12 15:56:44 +02:00
d660550485 fix(core): update 2019-10-12 15:56:44 +02:00
0842c2fdec 1.0.46 2019-10-12 15:55:37 +02:00
20bf5dfc57 fix(core): update 2019-10-12 15:55:37 +02:00
04a77f9eeb 1.0.45 2019-10-06 23:34:05 +02:00
a97af3232a fix(core): update 2019-10-06 23:34:04 +02:00
01953fdfec 1.0.44 2019-10-06 01:21:33 +02:00
2b794967d2 fix(core): update 2019-10-06 01:21:32 +02:00
eacda66c43 1.0.43 2019-10-05 22:59:53 +02:00
5f048712e1 fix(core): update 2019-10-05 22:59:52 +02:00
6d6c851274 1.0.42 2019-10-05 21:26:24 +02:00
afc3141fb2 fix(core): update 2019-10-05 21:26:24 +02:00
317487ffaa 1.0.41 2019-10-05 21:25:45 +02:00
ac8d603060 fix(core): update 2019-10-05 21:25:44 +02:00
c46621517b 1.0.40 2019-08-26 16:33:09 +02:00
4b283ad6a3 fix(core): update 2019-08-26 16:33:08 +02:00
6f3aab9232 1.0.39 2019-08-26 16:32:26 +02:00
de60087146 fix(core): update 2019-08-26 16:32:26 +02:00
b1730c0cc6 1.0.38 2019-08-25 16:35:22 +02:00
b39c928b1e fix(core): update 2019-08-25 16:35:22 +02:00
0a211e804e 1.0.37 2019-07-19 12:09:00 +02:00
41a886cfcf fix(core): update 2019-07-19 12:09:00 +02:00
62ad70ac6c 1.0.36 2019-07-19 10:52:28 +02:00
455e33488d fix(core): update 2019-07-19 10:52:27 +02:00
1af1908e1d 1.0.35 2019-07-18 18:15:25 +02:00
31967ab846 fix(core): update 2019-07-18 18:15:24 +02:00
93fda3944a 1.0.34 2019-07-17 13:50:24 +02:00
d0ce17299a 1.0.33 2019-07-17 12:55:26 +02:00
1b0fa5b465 1.0.32 2019-07-17 12:40:40 +02:00
7a6f9d9569 fix(core): update 2019-07-17 12:40:40 +02:00
ebcf89520a 1.0.31 2019-07-17 12:22:25 +02:00
ca6ef86c8c fix(core): update 2019-07-17 12:22:24 +02:00
a98471e914 1.0.30 2019-07-17 12:01:02 +02:00
7755286aab fix(core): update 2019-07-17 12:01:02 +02:00
13 changed files with 777 additions and 795 deletions

View File

@ -1,5 +1,7 @@
# gitzone ci_default # gitzone ci_default
image: hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
variables:
GIT_STRATEGY: clone
cache: cache:
paths: paths:
@ -38,19 +40,7 @@ snyk:
# test stage # test stage
# ==================== # ====================
testLTS: testStable:
stage: test
script:
- npmci npm prepare
- npmci node install lts
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv
testSTABLE:
stage: test stage: test
script: script:
- npmci npm prepare - npmci npm prepare
@ -60,12 +50,24 @@ testSTABLE:
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
- priv
testBuild:
stage: test
script:
- npmci npm prepare
- npmci node install lts
- npmci npm install
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv - notpriv
release: release:
stage: release stage: release
script: script:
- npmci node install stable - npmci node install lts
- npmci npm publish - npmci npm publish
only: only:
- tags - tags
@ -98,7 +100,9 @@ trigger:
- notpriv - notpriv
pages: pages:
image: hosttoday/ht-docker-node:npmci image: hosttoday/ht-docker-dbase:npmci
services:
- docker:18-dind
stage: metadata stage: metadata
script: script:
- npmci command npm install -g @gitzone/tsdoc - npmci command npm install -g @gitzone/tsdoc

4
.snyk Normal file
View File

@ -0,0 +1,4 @@
# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities.
version: v1.13.5
ignore: {}
patch: {}

3
cli.js
View File

@ -1,3 +1,4 @@
#!/usr/bin/env node #!/usr/bin/env node
process.env.CLI_CALL = 'true'; process.env.CLI_CALL = 'true';
require('./dist/index'); const cliTool = require('./dist/index');
cliTool.runCli();

View File

@ -1,4 +1,5 @@
#!/usr/bin/env node #!/usr/bin/env node
process.env.CLI_CALL = 'true'; process.env.CLI_CALL = 'true';
require('@gitzone/tsrun'); require('@gitzone/tsrun');
require('./ts/index'); const cliTool = require('./ts/index');
cliTool.runCli();

1321
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@gitzone/tsbundle", "name": "@gitzone/tsbundle",
"version": "1.0.29", "version": "1.0.52",
"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/index.js", "main": "dist/index.js",
@ -16,41 +16,43 @@
"tsbundle": "cli.js" "tsbundle": "cli.js"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.11", "@gitzone/tsbuild": "^2.1.17",
"@gitzone/tsrun": "^1.2.6", "@gitzone/tsrun": "^1.2.8",
"@gitzone/tstest": "^1.0.15", "@gitzone/tstest": "^1.0.28",
"@pushrocks/tapbundle": "^3.0.7", "@pushrocks/tapbundle": "^3.2.0",
"@types/node": "^12.6.6", "tslint": "^6.0.0",
"tslint": "^5.11.0",
"tslint-config-prettier": "^1.15.0" "tslint-config-prettier": "^1.15.0"
}, },
"dependencies": { "dependencies": {
"@babel/core": "^7.4.4", "@types/node": "^13.9.0",
"@babel/plugin-proposal-class-properties": "^7.4.4", "@babel/core": "^7.6.2",
"@babel/plugin-proposal-decorators": "^7.4.4", "@babel/plugin-proposal-class-properties": "^7.5.5",
"@babel/plugin-transform-runtime": "^7.4.4", "@babel/plugin-proposal-decorators": "^7.6.0",
"@babel/preset-env": "^7.4.4", "@babel/plugin-transform-runtime": "^7.6.2",
"@babel/runtime": "^7.4.4", "@babel/preset-env": "^7.6.2",
"@babel/runtime": "^7.6.2",
"@pushrocks/early": "^3.0.3", "@pushrocks/early": "^3.0.3",
"@pushrocks/smartcli": "^3.0.7", "@pushrocks/smartcli": "^3.0.7",
"@pushrocks/smartfile": "^7.0.2", "@pushrocks/smartfile": "^7.0.8",
"@pushrocks/smartlog": "^2.0.19", "@pushrocks/smartlog": "^2.0.21",
"@pushrocks/smartlog-destination-local": "^8.0.2", "@pushrocks/smartlog-destination-local": "^8.0.2",
"@types/html-minifier": "^3.5.3", "@types/html-minifier": "^3.5.3",
"html-minifier": "^4.0.0", "html-minifier": "^4.0.0",
"rollup": "^1.10.1", "rollup": "^1.32.0",
"rollup-plugin-babel": "^4.3.2", "rollup-plugin-babel": "^4.3.2",
"rollup-plugin-commonjs": "^10.0.1", "rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-sourcemaps": "^0.5.0",
"rollup-plugin-terser": "^5.0.0", "rollup-plugin-terser": "^5.2.0",
"rollup-plugin-typescript2": "^0.22.0" "rollup-plugin-typescript2": "^0.26.0",
"terser": "^4.6.4"
}, },
"files": [ "files": [
"ts/*", "ts/*",
"ts_web/*", "ts_web/*",
"dist/*", "dist/*",
"dist_web/*", "dist_web/*",
"dist_ts_web/*",
"assets/*", "assets/*",
"cli.js", "cli.js",
"npmextra.json", "npmextra.json",

View File

@ -30,6 +30,6 @@ tsbundle will bundle modern JavaScript websites in an Google Bot conformant way
For further information read the linked docs at the top of this readme. For further information read the linked docs at the top of this readme.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html) | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
[![repo-footer](https://gitzone.gitlab.io/assets/repo-footer.svg)](https://maintainedby.lossless.com) [![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com)

View File

@ -2,8 +2,7 @@ import { expect, tap } from '@pushrocks/tapbundle';
import * as tsbundle from '../ts/index'; import * as tsbundle from '../ts/index';
tap.test('first test', async () => { tap.test('first test', async () => {
tsbundle; await tsbundle.runCli();
console.log('hi');
}); });
tap.start(); tap.start();

View File

@ -7,6 +7,9 @@ import { logger } from './tsbundle.logging';
import { runCli } from './tsbundle.cli'; import { runCli } from './tsbundle.cli';
early.stop(); early.stop();
if (process.env.CLI_CALL) { // lets make this usable programmatically
runCli(); export * from './tsbundle.class.tsbundle';
} export * from './tsbundle.htmlhandler';
export {
runCli
};

View File

@ -2,49 +2,18 @@ import * as plugins from './tsbundle.plugins';
import { logger } from './tsbundle.logging'; import { logger } from './tsbundle.logging';
export class TsBundle { export class TsBundle {
public optionsTest: plugins.rollup.RollupOptions = this.getBaseOptions();
public optionsProduction: plugins.rollup.RollupOptions = (() => {
const productionOptions = this.getBaseOptions();
productionOptions.plugins.push(plugins.rollupTerser());
return productionOptions;
})();
constructor() {}
/**
* creates a bundle for the test enviroment
*/
public async buildTest() {
// create a bundle
logger.log('info', `bundling for TEST!`);
const bundle = await plugins.rollup.rollup(this.optionsTest);
bundle.generate(this.optionsTest.output);
await bundle.write(this.optionsTest.output);
logger.log('ok', `Successfully bundled files!`);
}
/**
* creates a bundle for the production environment
*/
public async buildProduction() {
// create a bundle
logger.log('info', `bundling for PRODUCTION!`);
const bundle = await plugins.rollup.rollup(this.optionsProduction);
bundle.generate(this.optionsProduction.output);
await bundle.write(this.optionsProduction.output);
logger.log('ok', `Successfully bundled files!`);
}
/** /**
* the basic default options for rollup * the basic default options for rollup
*/ */
public getBaseOptions() { public getBaseOptions(fromArg: string = `ts_web/index.ts`, toArg: string = 'dist_web/bundle.js') {
logger.log('info', `from: ${fromArg}`);
logger.log('info', `to: ${toArg}`);
const baseOptions: plugins.rollup.RollupOptions = { const baseOptions: plugins.rollup.RollupOptions = {
input: `ts_web/index.ts`, input: fromArg,
output: { output: {
name: 'tsbundle', name: 'tsbundle',
// file: 'dist_web/bundle.js', file: toArg,
file: 'dist_web/bundle.js',
format: 'iife', format: 'iife',
sourcemap: true sourcemap: true
}, },
@ -64,8 +33,8 @@ export class TsBundle {
experimentalDecorators: true, experimentalDecorators: true,
inlineSourceMap: true, inlineSourceMap: true,
noEmitOnError: true, noEmitOnError: true,
lib: ['es2017', 'dom'], lib: ['esnext', 'dom'],
target: 'es2017', target: 'es2018',
noImplicitAny: false noImplicitAny: false
} }
} }
@ -81,8 +50,8 @@ export class TsBundle {
}), }),
// Resolve source maps to the original source // Resolve source maps to the original source
plugins.rollupSourceMaps(), plugins.rollupSourceMaps()
plugins.rollupBabel({ /*plugins.rollupBabel({
runtimeHelpers: true, runtimeHelpers: true,
extensions: ['.js', '.jsx', '.ts', '.tsx'], extensions: ['.js', '.jsx', '.ts', '.tsx'],
babelrc: false, babelrc: false,
@ -105,9 +74,53 @@ export class TsBundle {
} }
] ]
] ]
}) })*/
] ]
}; };
return baseOptions; return baseOptions;
} }
public getOptionsTest(fromArg: string, toArg: string): plugins.rollup.RollupOptions {
return this.getBaseOptions(fromArg, toArg);
}
public getOptionsProduction(fromArg: string, toArg: string): plugins.rollup.RollupOptions {
const productionOptions = this.getBaseOptions(fromArg, toArg);
productionOptions.plugins.push(plugins.rollupTerser({
compress: true,
mangle: true,
sourcemap: true
}));
return productionOptions;
}
constructor() {
// Nothing here
}
/**
* creates a bundle for the test enviroment
*/
public async buildTest(fromArg: string, toArg: string) {
// create a bundle
logger.log('info', `bundling for TEST!`);
const buildOptions = this.getOptionsTest(fromArg, toArg);
const bundle = await plugins.rollup.rollup(buildOptions);
bundle.generate(buildOptions.output as plugins.rollup.OutputOptions);
await bundle.write(buildOptions.output as plugins.rollup.OutputOptions);
logger.log('ok', `Successfully bundled files!`);
}
/**
* creates a bundle for the production environment
*/
public async buildProduction(fromArg: string, toArg: string) {
// create a bundle
logger.log('info', `bundling for PRODUCTION!`);
const buildOptions = this.getOptionsProduction(fromArg, toArg);
const bundle = await plugins.rollup.rollup(buildOptions);
bundle.generate(buildOptions.output as plugins.rollup.OutputOptions);
await bundle.write(buildOptions.output as plugins.rollup.OutputOptions);
logger.log('ok', `Successfully bundled files!`);
}
} }

View File

@ -9,17 +9,33 @@ export const runCli = async () => {
const tsbundle = new TsBundle(); const tsbundle = new TsBundle();
const htmlHandler = new HtmlHandler(); const htmlHandler = new HtmlHandler();
switch (true) { switch (true) {
case (argvArg.production) || process.env.CI: case argvArg.production || process.env.CI:
await tsbundle.buildProduction(); await tsbundle.buildProduction(argvArg.from, argvArg.to);
await htmlHandler.minifyHtml(); await htmlHandler.minifyHtml();
break; break;
case argvArg.test: case argvArg.test:
default: default:
await tsbundle.buildTest(); await tsbundle.buildTest(argvArg.from, argvArg.to);
await htmlHandler.copyHtml(); await htmlHandler.copyHtml();
return; return;
} }
}); });
tsBundleCli.addCommand('element').subscribe(async argvArg => {
const tsbundle = new TsBundle();
// const htmlHandler = new HtmlHandler();
switch (true) {
case argvArg.production || process.env.CI:
await tsbundle.buildProduction('./ts_web/index.ts', './dist_ts_web/bundle.js');
// await htmlHandler.minifyHtml();
break;
case argvArg.test:
default:
await tsbundle.buildTest('./ts_web/index.ts', './dist_ts_web/bundle.js');
// await htmlHandler.copyHtml();
return;
}
});
tsBundleCli.startParse(); tsBundleCli.startParse();
}; };

View File

@ -10,19 +10,16 @@ export class HtmlHandler {
} }
// copies the html // copies the html
public async copyHtml() { public async copyHtml(targetPathArg = this.targetFilePath) {
if (!(await this.checkIfExists)) { if (!(await this.checkIfExists())) {
return; return;
} }
await plugins.smartfile.fs.copy( await plugins.smartfile.fs.copy(this.sourceFilePath, targetPathArg);
this.sourceFilePath,
this.targetFilePath
);
} }
// copies and minifies the html // copies and minifies the html
public async minifyHtml() { public async minifyHtml(targetPathArg = this.targetFilePath) {
if (!(await this.checkIfExists)) { if (!(await this.checkIfExists())) {
return; return;
} }
const fileString = plugins.smartfile.fs.toStringSync(this.sourceFilePath); const fileString = plugins.smartfile.fs.toStringSync(this.sourceFilePath);
@ -35,8 +32,7 @@ export class HtmlHandler {
collapseWhitespace: true, collapseWhitespace: true,
collapseInlineTagWhitespace: true, collapseInlineTagWhitespace: true,
removeComments: true removeComments: true
}); });
plugins.smartfile.memory.toFsSync(minifiedHtml, this.targetFilePath); plugins.smartfile.memory.toFsSync(minifiedHtml, targetPathArg);
} }
} }

View File

@ -1,9 +1,7 @@
// node native // node native
import * as path from 'path'; import * as path from 'path';
export { export { path };
path
};
// pushrocks scope // pushrocks scope
import * as smartcli from '@pushrocks/smartcli'; import * as smartcli from '@pushrocks/smartcli';