Compare commits

...

52 Commits

Author SHA1 Message Date
63fa2e84d4 2.1.24 2020-05-14 09:51:22 +00:00
af66bd8ff1 fix(core): update 2020-05-14 09:51:22 +00:00
53f4e402f5 2.1.23 2020-04-30 09:02:43 +00:00
2f57c26b87 fix(core): update 2020-04-30 09:02:43 +00:00
3e05c116f3 2.1.22 2020-03-13 19:23:53 +00:00
d2dbe40b50 fix(core): update 2020-03-13 19:23:52 +00:00
835fba3452 2.1.21 2020-03-13 19:23:02 +00:00
d35cff7135 fix(core): update 2020-03-13 19:23:01 +00:00
6bbfd8b8a5 2.1.20 2020-03-09 15:20:48 +00:00
9e6ab262ed fix(core): update 2020-03-09 15:20:47 +00:00
58246c406d 2.1.19 2020-03-09 15:15:52 +00:00
345df135b9 fix(core): update 2020-03-09 15:15:52 +00:00
31e99a0035 2.1.18 2020-03-09 15:14:07 +00:00
8aa3823e65 fix(core): update 2020-03-09 15:14:06 +00:00
d36a5f7751 2.1.17 2019-08-26 16:28:03 +02:00
6b1c7c4dc8 fix(core): update 2019-08-26 16:28:03 +02:00
dbcfa977fd 2.1.16 2019-08-26 16:15:51 +02:00
fda30f611a 2.1.15 2019-08-26 16:12:24 +02:00
c1e43788a6 2.1.14 2019-08-26 16:01:39 +02:00
3a0efa37cc 2.1.13 2019-08-25 16:27:54 +02:00
d238012b68 fix(core): update 2019-08-25 16:27:54 +02:00
990fbaf785 2.1.12 2019-06-21 09:49:38 +02:00
aaa459e4b7 fix(core): update 2019-06-21 09:49:37 +02:00
fbad295644 2.1.11 2019-04-30 13:32:36 +02:00
334d3c0c82 fix(core): update 2019-04-30 13:32:36 +02:00
b9523d25e6 2.1.10 2019-04-30 13:27:42 +02:00
fdf3d14456 fix(core): update 2019-04-30 13:27:42 +02:00
5a68e83abf 2.1.9 2019-04-30 13:26:50 +02:00
def7dc65c8 fix(core): update 2019-04-30 13:26:49 +02:00
649ca48d03 2.1.8 2019-01-27 20:02:39 +01:00
abc515c742 2.1.7 2019-01-27 19:21:07 +01:00
1eb2b727aa fix(custom directory compilation): now picking up TypeScript files correctly 2019-01-27 19:21:07 +01:00
93a332ba50 2.1.6 2019-01-27 02:44:55 +01:00
109ba0b0ee fix(core): update 2019-01-27 02:44:54 +01:00
ee3ef5d6e9 2.1.5 2019-01-27 02:42:58 +01:00
d5852ce85d fix(core): update 2019-01-27 02:42:58 +01:00
f36dea3875 2.1.4 2018-12-11 01:58:39 +01:00
d36bf42f8b fix(core): update 2018-12-11 01:58:39 +01:00
730c739c14 2.1.3 2018-12-06 00:45:23 +01:00
dd1f007246 fix(core): update 2018-12-06 00:45:22 +01:00
41ca4805e6 2.1.2 2018-12-05 23:33:18 +01:00
68dcf1cca9 fix(core): update 2018-12-05 23:33:17 +01:00
53ba4a64b3 2.1.1 2018-12-05 23:32:28 +01:00
fa8dc2bec5 fix(core): update 2018-12-05 23:32:27 +01:00
1ef8a502e3 2.1.0 2018-12-05 23:29:01 +01:00
bbcb8e6b3f feat(cli options): now support --web for web compilations targeting Google Chrome 2018-12-05 23:29:01 +01:00
fee2a60162 2.0.22 2018-08-08 23:05:24 +02:00
0a2fee42ca fix(dependencies): update 2018-08-08 23:05:24 +02:00
13827541c8 2.0.21 2018-07-25 23:38:30 +02:00
eeb6d6b963 fix(compiler): fix options for compiler 2018-07-25 23:38:30 +02:00
bc6039e5ed 2.0.20 2018-07-25 21:11:02 +02:00
58c783dc54 fix(dependency): update dependency 2018-07-25 21:11:02 +02:00
22 changed files with 1301 additions and 755 deletions

21
.gitignore vendored
View File

@ -1,7 +1,20 @@
# gitzone standard
node_modules/
.nogit/
# artifacts
coverage/
pages/
public/
assets/output/
pages/
# installs
node_modules/
# caches
.yarn/
.cache/
.rpt2_cache
# builds
dist/
dist_*/
# custom

View File

@ -1,16 +1,16 @@
# gitzone standard
image: hosttoday/ht-docker-node:npmci
# gitzone ci_default
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
cache:
paths:
- .npmci_cache/
key: "$CI_BUILD_STAGE"
- .npmci_cache/
key: '$CI_BUILD_STAGE'
stages:
- security
- test
- release
- metadata
- security
- test
- release
- metadata
# ====================
# security stage
@ -18,109 +18,104 @@ stages:
mirror:
stage: security
script:
- npmci git mirror
- npmci git mirror
tags:
- docker
- notpriv
- lossless
- docker
- notpriv
snyk:
audit:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci command npm install -g snyk
- npmci npm prepare
- npmci command npm install --ignore-scripts
- npmci command snyk test
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high
tags:
- docker
- notpriv
- lossless
- docker
- notpriv
# ====================
# test stage
# ====================
testLEGACY:
stage: test
script:
- npmci node install legacy
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv
allow_failure: true
testLTS:
testStable:
stage: test
script:
- npmci node install lts
- npmci npm install
- npmci npm test
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv
testSTABLE:
- lossless
- docker
- priv
testBuild:
stage: test
script:
- npmci node install stable
- npmci npm install
- npmci npm test
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
- notpriv
- lossless
- docker
- notpriv
release:
stage: release
script:
- npmci node install stable
- npmci npm publish
- npmci node install stable
- npmci npm publish
only:
- tags
- tags
tags:
- docker
- notpriv
- lossless
- docker
- notpriv
# ====================
# metadata stage
# ====================
codequality:
stage: metadata
image: docker:stable
allow_failure: true
services:
- docker:stable-dind
script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SOURCE_CODE="$PWD"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
artifacts:
paths: [codeclimate.json]
- npmci command npm install -g tslint typescript
- npmci npm prepare
- npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags:
- docker
- priv
- lossless
- docker
- priv
trigger:
stage: metadata
script:
- npmci trigger
- npmci trigger
only:
- tags
- tags
tags:
- docker
- notpriv
- lossless
- docker
- notpriv
pages:
image: hosttoday/ht-docker-node:npmci
stage: metadata
script:
- npmci command npm install -g typedoc typescript
- npmci node install lts
- npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare
- npmci npm install
- npmci command typedoc --module "commonjs" --target "ES2016" --out public/ ts/
- npmci command tsdoc
tags:
- lossless
- docker
- notpriv
only:
@ -128,15 +123,5 @@ pages:
artifacts:
expire_in: 1 week
paths:
- public
allow_failure: true
windowsCompatibility:
image: stefanscherer/node-windows:10-build-tools
stage: metadata
script:
- npm install & npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- windows
- public
allow_failure: true

4
.snyk Normal file
View File

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

29
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,29 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "current file",
"type": "node",
"request": "launch",
"args": [
"${relativeFile}"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
},
{
"name": "test.ts",
"type": "node",
"request": "launch",
"args": [
"test/test.ts"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
}
]
}

26
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,26 @@
{
"json.schemas": [
{
"fileMatch": ["/npmextra.json"],
"schema": {
"type": "object",
"properties": {
"npmci": {
"type": "object",
"description": "settings for npmci"
},
"gitzone": {
"type": "object",
"description": "settings for gitzone",
"properties": {
"projectType": {
"type": "string",
"enum": ["website", "element", "service", "npm"]
}
}
}
}
}
}
]
}

View File

@ -1,70 +0,0 @@
# tsn
## Availabililty
[![npm](https://push.rocks/assets/repo-button-npm.svg)](https://www.npmjs.com/package/tsn)
[![git](https://push.rocks/assets/repo-button-git.svg)](https://gitlab.com/pushrocks/tsn)
[![git](https://push.rocks/assets/repo-button-mirror.svg)](https://github.com/pushrocks/tsn)
[![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/tsn/)
## Status for master
[![build status](https://gitlab.com/pushrocks/tsn/badges/master/build.svg)](https://gitlab.com/pushrocks/tsn/commits/master)
[![coverage report](https://gitlab.com/pushrocks/tsn/badges/master/coverage.svg)](https://gitlab.com/pushrocks/tsn/commits/master)
[![Dependency Status](https://david-dm.org/pushrocks/tsn.svg)](https://david-dm.org/pushrocks/tsn)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/tsn/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/tsn/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/tsn/badges/code.svg)](https://www.bithound.io/github/pushrocks/tsn)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Usage
Tsn uses the **next** tagged npm version of typescript
```typescript
import * as tsn from 'tsn';
let myGlobStringObject = {
'./myTsFolder/**/*.ts': './myDestinationFolder/',
'./someOtherTsFolder/**/*.ts': './myOtherDestinationFolder/'
};
let tsOptions = {
target: tsn.ScriptTarget.ES2015,
module: tsn.ModuleKind.CommonJS
};
/*
note: since this only works in code, here are the target numbers
enum ScriptTarget {
ES3 = 0,
ES5 = 1,
ES2015 = 2,
ES2016 = 3,
ES2017 = 4,
ESNext = 5,
Latest = 5,
}
and here are the module kinds
enum ModuleKind {
None = 0,
CommonJS = 1,
AMD = 2,
UMD = 3,
System = 4,
ES2015 = 5,
}
*/
let myCwd = process.cwd();
tsn.compileGlobStringObject(
myGlobStringObject, // the glob string object describing from where to compile what to where
tsOptions, // the options for TypeScript
myCwd // a custom cwd, optional, defaults to process.cwd()
);
```
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)

5
cli.js
View File

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

View File

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

View File

@ -2,5 +2,16 @@
"npmci": {
"npmGlobalTools": [],
"npmAccessLevel": "public"
},
"gitzone": {
"projectType": "npm",
"module": {
"githost": "gitlab.com",
"gitscope": "gitzone",
"gitrepo": "tsbuild",
"shortDescription": "TypeScript nightly to easily make use of latest features",
"npmPackagename": "@gitzone/tsbuild",
"license": "MIT"
}
}
}

1412
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,15 +1,16 @@
{
"name": "@gitzone/tsbuild",
"version": "2.0.19",
"version": "2.1.24",
"private": false,
"description": "TypeScript nightly to easily make use of latest features",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",
"bin": {
"tsbuild": "cli.js"
},
"scripts": {
"test": "tsrun test/test.ts",
"testCustom": "node cli.ts.js custom ts_web",
"build": "node cli.ts.js"
},
"repository": {
@ -26,15 +27,31 @@
},
"homepage": "https://gitlab.com/pushrocks/tsn#README",
"dependencies": {
"@pushrocks/smartfile": "^6.0.3",
"@pushrocks/early": "^3.0.3",
"@pushrocks/smartcli": "^3.0.7",
"@pushrocks/smartfile": "^7.0.2",
"@pushrocks/smartlog": "^2.0.19",
"@pushrocks/smartpath": "^4.0.1",
"@pushrocks/smartpromise": "^2.0.5",
"smartlog": "^1.0.3",
"typescript": "^2.9.2"
"@pushrocks/smartpromise": "^3.0.2",
"typescript": "^3.5.2"
},
"devDependencies": {
"@gitzone/tsrun": "^1.1.9",
"@pushrocks/tapbundle": "^3.0.1",
"@types/node": "^10.5.3"
}
"@gitzone/tsrun": "^1.2.8",
"@pushrocks/tapbundle": "^3.0.13",
"@types/node": "^12.7.2",
"tslint": "^5.19.0",
"tslint-config-prettier": "^1.18.0"
},
"files": [
"ts/**/*",
"ts_web/**/*",
"dist/**/*",
"dist_*/**/*",
"dist_ts/**/*",
"dist_ts_web/**/*",
"assets/**/*",
"cli.js",
"npmextra.json",
"readme.md"
]
}

79
readme.md Normal file
View File

@ -0,0 +1,79 @@
# @gitzone/tsbuild
TypeScript nightly to easily make use of latest features
## Availabililty and Links
* [npmjs.org (npm package)](https://www.npmjs.com/package/@gitzone/tsbuild)
* [gitlab.com (source)](https://gitlab.com/gitzone/tsbuild)
* [github.com (source mirror)](https://github.com/gitzone/tsbuild)
* [docs (typedoc)](https://gitzone.gitlab.io/tsbuild/)
## Status for master
[![pipeline status](https://gitlab.com/gitzone/tsbuild/badges/master/pipeline.svg)](https://gitlab.com/gitzone/tsbuild/commits/master)
[![coverage report](https://gitlab.com/gitzone/tsbuild/badges/master/coverage.svg)](https://gitlab.com/gitzone/tsbuild/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/@gitzone/tsbuild.svg)](https://www.npmjs.com/package/@gitzone/tsbuild)
[![Known Vulnerabilities](https://snyk.io/test/npm/@gitzone/tsbuild/badge.svg)](https://snyk.io/test/npm/@gitzone/tsbuild)
[![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/)
## Usage
Tsn uses the **next** tagged npm version of typescript
```typescript
import * as tsn from 'tsn';
let myGlobStringObject = {
'./myTsFolder/**/*.ts': './myDestinationFolder/',
'./someOtherTsFolder/**/*.ts': './myOtherDestinationFolder/'
};
let tsOptions = {
target: tsn.ScriptTarget.ES2015,
module: tsn.ModuleKind.CommonJS
};
/*
note: since this only works in code, here are the target numbers
enum ScriptTarget {
ES3 = 0,
ES5 = 1,
ES2015 = 2,
ES2016 = 3,
ES2017 = 4,
ESNext = 5,
Latest = 5,
}
and here are the module kinds
enum ModuleKind {
None = 0,
CommonJS = 1,
AMD = 2,
UMD = 3,
System = 4,
ES2015 = 5,
}
*/
let myCwd = process.cwd();
tsn.compileGlobStringObject(
myGlobStringObject, // the glob string object describing from where to compile what to where
tsOptions, // the options for TypeScript
myCwd // a custom cwd, optional, defaults to process.cwd()
);
```
[![npm](https://push.rocks/assets/repo-header.svg)](https://push.rocks)
## Contribution
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
For further information read the linked docs at the top of this readme.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
[![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com)

View File

@ -1,4 +1,5 @@
declare class test {
declare class test2 {
test: string[];
constructor();
}
declare const run: () => Promise<string>;

View File

@ -1,9 +1,12 @@
console.log('test');
console.log('test2');
class test {
class test2 {
constructor() {
this.test = [];
console.log('hi');
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jb21waWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdG9jb21waWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQjtJQUVFO1FBREEsU0FBSSxHQUFhLEVBQUUsQ0FBQztRQUVsQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7Q0FDRiJ9
const run = async () => {
return 'hi';
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9jb21waWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdG9jb21waWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyQixNQUFNLEtBQUs7SUFFVDtRQURBLFNBQUksR0FBYSxFQUFFLENBQUM7UUFFbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLEdBQUcsR0FBRyxLQUFLLElBQXFCLEVBQUU7SUFDdEMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDLENBQUMifQ==

View File

@ -1,8 +1,12 @@
console.log('test');
console.log('test2');
class test {
class test2 {
test: string[] = [];
constructor() {
console.log('hi');
}
}
const run = async (): Promise<string> => {
return 'hi';
};

View File

@ -1,9 +1,5 @@
export * from "./tsbuild.exports";
import * as tsbuild from './tsbuild.exports'
if (process.env.CLI_CALL_TSBUILD === "true") {
tsbuild.compileGlobStringObject({
"./ts/**/*.ts": "./dist"
})
}
import * as early from '@pushrocks/early';
early.start('tsbuild');
export * from './tsbuild.exports';
export * from './tsbuild.cli';
early.stop();

View File

@ -11,24 +11,38 @@ export const compilerOptionsDefault: CompilerOptions = {
emitDecoratorMetadata: true,
experimentalDecorators: true,
inlineSourceMap: true,
noEmitOnError: false,
outDir: 'dist/',
noEmitOnError: true,
outDir: 'dist_ts/',
module: plugins.typescript.ModuleKind.CommonJS,
lib: [
'es2016',
'es2017'
],
lib: ['lib.es2017.d.ts'],
noImplicitAny: false,
target: plugins.typescript.ScriptTarget.ES2015
esModuleInterop: true,
target: plugins.typescript.ScriptTarget.ES2017
};
export const compilerOptionsWebDefault: CompilerOptions = {
...compilerOptionsDefault,
lib: [...compilerOptionsDefault.lib, 'lib.dom.d.ts']
};
/**
* merges compilerOptions with the default compiler options
*/
export const mergeCompilerOptions = function(customTsOptions: CompilerOptions): CompilerOptions {
export const mergeCompilerOptions = (
customTsOptions: CompilerOptions,
argvArg?: any
): CompilerOptions => {
const defaultOptionsToMerge = (() => {
if (argvArg && argvArg.web) {
return compilerOptionsWebDefault;
} else {
return compilerOptionsDefault;
}
})();
// create merged options
let mergedOptions: CompilerOptions = {
...compilerOptionsDefault,
const mergedOptions: CompilerOptions = {
...defaultOptionsToMerge,
...customTsOptions
};
@ -40,32 +54,35 @@ export const mergeCompilerOptions = function(customTsOptions: CompilerOptions):
*/
export const compiler = (
fileNames: string[],
options: plugins.typescript.CompilerOptions
options: plugins.typescript.CompilerOptions,
argvArg?: any
): Promise<any[]> => {
console.log(options);
let done = plugins.smartpromise.defer<any[]>();
let program = plugins.typescript.createProgram(fileNames, options);
let emitResult = program.emit();
console.log(`Compiling ${fileNames.length} files...`);
const done = plugins.smartpromise.defer<any[]>();
const program = plugins.typescript.createProgram(fileNames, options);
const emitResult = program.emit();
// implement check only
/*let emitResult = program.emit(undefined,(args) => {
console.log(args)
});*/
let allDiagnostics = plugins.typescript
const allDiagnostics = plugins.typescript
.getPreEmitDiagnostics(program)
.concat(emitResult.diagnostics);
try {
allDiagnostics.forEach(diagnostic => {
let { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
let message = plugins.typescript.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
allDiagnostics.forEach(diagnostic => {
if (diagnostic.file) {
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start!);
const message = plugins.typescript.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
});
} catch (err) {
// console.log(allDiagnostics)
}
} else {
console.log(
`${plugins.typescript.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`
);
}
});
let exitCode = emitResult.emitSkipped ? 1 : 0;
const exitCode = emitResult.emitSkipped ? 1 : 0;
if (exitCode === 0) {
console.log('TypeScript emit succeeded!');
done.resolve(emitResult.emittedFiles);

46
ts/tsbuild.cli.ts Normal file
View File

@ -0,0 +1,46 @@
import * as plugins from './tsbuild.plugins';
import * as tsbuild from './tsbuild.exports';
export const runCli = async () => {
const tsbuildCli = new plugins.smartcli.Smartcli();
/**
* the standard task compiles anything in ts/ directory to dist directory
*/
tsbuildCli.standardTask().subscribe(async (argvArg) => {
tsbuild.compileGlobStringObject(
{
'./ts/**/*.ts': './dist_ts',
},
{},
process.cwd(),
argvArg
);
});
/**
* the custom command compiles any customDir to dist_customDir
*/
tsbuildCli.addCommand('custom').subscribe(async (argvArg) => {
const listedDirectories = argvArg._;
listedDirectories.shift();
const compilationCommandObject: { [key: string]: string } = {};
for (const directory of listedDirectories) {
compilationCommandObject[`./${directory}/**/*.ts`] = `./dist_${directory}`;
}
await tsbuild.compileGlobStringObject(compilationCommandObject, {}, process.cwd(), argvArg);
});
tsbuildCli.addCommand('element').subscribe(async (argvArg) => {
await tsbuild.compileGlobStringObject(
{
'./ts_web/**/*.ts': 'dist_ts_web',
},
{},
process.cwd(),
{ web: true }
);
});
tsbuildCli.startParse();
};

View File

@ -8,9 +8,10 @@ export * from './tsbuild.classes.compiler';
*/
export let compileFileArray = (
fileStringArrayArg: string[],
compilerOptionsArg: CompilerOptions = {}
compilerOptionsArg: CompilerOptions = {},
argvArg?: any
): Promise<any[]> => {
return compiler(fileStringArrayArg, mergeCompilerOptions(compilerOptionsArg));
return compiler(fileStringArrayArg, mergeCompilerOptions(compilerOptionsArg, argvArg), argvArg);
};
/**
@ -23,30 +24,33 @@ export let compileFileArray = (
export let compileGlobStringObject = async (
globStringObjectArg: any,
tsOptionsArg: CompilerOptions = {},
cwdArg: string = process.cwd()
cwdArg: string = process.cwd(),
argvArg?: any
) => {
let compiledFiles = [];
for (let keyArg in globStringObjectArg) {
console.log(
`TypeScript assignment: transpile from ${keyArg} to ${globStringObjectArg[keyArg]}`
);
const fileTreeArray = await plugins.smartfile.fs.listFileTree(cwdArg, keyArg);
let absoluteFilePathArray: string[] = plugins.smartpath.transform.toAbsolute(
fileTreeArray,
cwdArg
);
let destDir: string = plugins.smartpath.transform.toAbsolute(
globStringObjectArg[keyArg],
cwdArg
);
tsOptionsArg = {
...tsOptionsArg,
outDir: destDir
};
compiledFiles = compiledFiles.concat(
compiledFiles,
await compileFileArray(absoluteFilePathArray, tsOptionsArg)
);
for (const keyArg in globStringObjectArg) {
if (globStringObjectArg[keyArg]) {
console.log(
`TypeScript assignment: transpile from ${keyArg} to ${globStringObjectArg[keyArg]}`
);
const fileTreeArray = await plugins.smartfile.fs.listFileTree(cwdArg, keyArg);
let absoluteFilePathArray: string[] = plugins.smartpath.transform.toAbsolute(
fileTreeArray,
cwdArg
);
let destDir: string = plugins.smartpath.transform.toAbsolute(
globStringObjectArg[keyArg],
cwdArg
);
tsOptionsArg = {
...tsOptionsArg,
outDir: destDir
};
compiledFiles = compiledFiles.concat(
compiledFiles,
await compileFileArray(absoluteFilePathArray, tsOptionsArg, argvArg)
);
}
}
return compiledFiles;
};

View File

@ -1,6 +1,7 @@
import * as smartcli from '@pushrocks/smartcli';
import * as smartfile from '@pushrocks/smartfile';
import * as smartpath from '@pushrocks/smartpath';
import * as smartpromise from '@pushrocks/smartpromise';
import * as typescript from 'typescript';
export { smartfile, smartpath, smartpromise, typescript };
export { smartcli, smartfile, smartpath, smartpromise, typescript };

View File

@ -1,6 +1,6 @@
{
"compilerOptions": {
"outDir": "dist/",
"outDir": "dist_ts/",
"module": "commonjs",
"target": "es2015",
"lib":[

View File

@ -1,3 +1,17 @@
{
"extends": "tslint-config-standard"
}
"extends": ["tslint:latest", "tslint-config-prettier"],
"rules": {
"semicolon": [true, "always"],
"no-console": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"member-ordering": {
"options":{
"order": [
"static-method"
]
}
}
},
"defaultSeverity": "warning"
}