add linter to build process

master
Vladimir Mandic 2021-06-03 09:41:40 -04:00
parent 7910d07358
commit 0087af5684
1 changed files with 52 additions and 21 deletions

@ -18,32 +18,63 @@ Build process is written as JavaScript `server/build.js` which can be modified t
Build creates a custom `tfjs` bundle to optimize size and avoid unnecessary polyfills
Production version of the library is fully minified while dev version runs without code minification for easier debugging
Build is started by running `npm run build`
Production build runs following operations:
1. Compile TypeScript
2. Create dist minified bundles
3. Run Linter
4. Create TS typings
5. Create TypeDoc API specification
Dev build runs following operations:
1. Compile TypeScript
2. Create dist non-minified bundles
<br>
## Build
Production build is started by running `npm run build`
```log
> @vladmandic/human@0.9.9 build /home/vlado/dev/human
> npm install && rimraf dist/* && node server/build.js && node server/changelog.js
> @vladmandic/human@2.0.0 build /home/vlado/dev/human
> node server/build.js
```
audited 330 packages in 2.272s
found 0 vulnerabilities
2020-11-21 12:06:29 INFO: @vladmandic/human version 0.9.9
2020-11-21 12:06:29 INFO: User: vlado Platform: linux Arch: x64 Node: v15.0.1
2020-11-21 12:06:29 INFO: Build: file startup all target: es2018
2020-11-21 12:06:29 STATE: Build for: node type: tfjs: { imports: 1, importBytes: 39, outputBytes: 1044, outputFiles: 'dist/tfjs.esm.js' }
2020-11-21 12:06:29 STATE: Build for: node type: node: { imports: 35, importBytes: 403608, outputBytes: 249844, outputFiles: 'dist/human.node.js' }
2020-11-21 12:06:29 STATE: Build for: nodeGPU type: tfjs: { imports: 1, importBytes: 43, outputBytes: 1048, outputFiles: 'dist/tfjs.esm.js' }
2020-11-21 12:06:29 STATE: Build for: nodeGPU type: node: { imports: 35, importBytes: 403612, outputBytes: 249852, outputFiles: 'dist/human.node-gpu.js' }
2020-11-21 12:06:30 STATE: Build for: browserNoBundle type: tfjs: { imports: 1, importBytes: 1798, outputBytes: 260, outputFiles: 'dist/tfjs.esm.js' }
2020-11-21 12:06:30 STATE: Build for: browserNoBundle type: esm: { imports: 35, importBytes: 402824, outputBytes: 248844, outputFiles: 'dist/human.esm.nobundle.js' }
2020-11-21 12:06:30 STATE: Build for: browserBundle type: tfjs: { modules: 1061, moduleBytes: 3772720, imports: 7, importBytes: 1798, outputBytes: 1531180, outputFiles: 'dist/tfjs.esm.js' }
2020-11-21 12:06:30 STATE: Build for: browserBundle type: iife: { imports: 35, importBytes: 1933744, outputBytes: 1783188, outputFiles: 'dist/human.js' }
2020-11-21 12:06:31 STATE: Build for: browserBundle type: esm: { imports: 35, importBytes: 1933744, outputBytes: 1783877, outputFiles: 'dist/human.esm.js' }
2020-11-21 12:06:32 STATE: Build for: browserBundle type: demo: { imports: 5, importBytes: 1844123, outputBytes: 1830367, outputFiles: 'dist/demo-browser-index.js' }
2020-11-21 12:06:32 STATE: Change log updated: /home/vlado/dev/human/CHANGELOG.md
```js
2021-06-03 09:31:42 INFO: @vladmandic/human version 2.0.0
2021-06-03 09:31:42 INFO: User: vlado Platform: linux Arch: x64 Node: v16.0.0
2021-06-03 09:31:42 STATE: Application log: /home/vlado/dev/human/server/build.log
2021-06-03 09:31:42 INFO: Toolchain: tfjs: 3.6.0 esbuild 0.12.5; typescript 4.2.4; typedoc: 0.20.36 eslint: 7.27.0
2021-06-03 09:31:42 INFO: Build: file startup all type: production config: { minifyWhitespace: true, minifyIdentifiers: true, minifySyntax: true }
2021-06-03 09:31:42 STATE: Build for: node type: tfjs: { imports: 1, importBytes: 102, outputBytes: 1292, outputFiles: 'dist/tfjs.esm.js' }
2021-06-03 09:31:42 STATE: Build for: node type: node: { imports: 40, importBytes: 420707, outputBytes: 371671, outputFiles: 'dist/human.node.js' }
2021-06-03 09:31:42 STATE: Build for: nodeGPU type: tfjs: { imports: 1, importBytes: 110, outputBytes: 1300, outputFiles: 'dist/tfjs.esm.js' }
2021-06-03 09:31:42 STATE: Build for: nodeGPU type: node: { imports: 40, importBytes: 420715, outputBytes: 371675, outputFiles: 'dist/human.node-gpu.js' }
2021-06-03 09:31:42 STATE: Build for: nodeWASM type: tfjs: { imports: 1, importBytes: 149, outputBytes: 1367, outputFiles: 'dist/tfjs.esm.js' }
2021-06-03 09:31:42 STATE: Build for: nodeWASM type: node: { imports: 40, importBytes: 420782, outputBytes: 371747, outputFiles: 'dist/human.node-wasm.js' }
2021-06-03 09:31:42 STATE: Build for: browserNoBundle type: tfjs: { imports: 1, importBytes: 2478, outputBytes: 1394, outputFiles: 'dist/tfjs.esm.js' }
2021-06-03 09:31:42 STATE: Build for: browserNoBundle type: esm: { imports: 40, importBytes: 420809, outputBytes: 244956, outputFiles: 'dist/human.esm-nobundle.js' }
2021-06-03 09:31:43 STATE: Build for: browserBundle type: tfjs: { modules: 1274, moduleBytes: 4114813, imports: 7, importBytes: 2478, outputBytes: 1111418, outputFiles: 'dist/tfjs.esm.js' }
2021-06-03 09:31:43 STATE: Build for: browserBundle type: iife: { imports: 40, importBytes: 1530833, outputBytes: 1352725, outputFiles: 'dist/human.js' }
2021-06-03 09:31:44 STATE: Build for: browserBundle type: esm: { imports: 40, importBytes: 1530833, outputBytes: 1352717, outputFiles: 'dist/human.esm.js' }
2021-06-03 09:31:44 INFO: Running Linter: [ 'server/', 'demo/', 'src/', 'test/', [length]: 4 ]
2021-06-03 09:32:09 INFO: Linter complete: files: 67 errors: 0 warnings: 0
2021-06-03 09:32:09 INFO: Generate types: [ 'src/human.ts', [length]: 1 ]
2021-06-03 09:32:14 INFO: Update Change log: [ '/home/vlado/dev/human/CHANGELOG.md', [length]: 1 ]
2021-06-03 09:32:14 INFO: Generate TypeDocs: [ 'src/human.ts', [length]: 1 ]
2021-06-03 09:32:32 INFO: Documentation generated at /home/vlado/dev/human/typedoc 1
```
<br>
## Dependencies
Only project depdendency is [@tensorflow/tfjs](https://github.com/tensorflow/tfjs)
Development dependencies are [eslint](https://github.com/eslint) used for code linting and [esbuild](https://github.com/evanw/esbuild) used for IIFE and ESM script bundling
Development dependencies are:
- [esbuild](https://github.com/evanw/esbuild) used to compile TS sources and generate dist bundles
- [eslint](https://github.com/eslint) used for code linting
- [typescript](https://www.typescriptlang.org/) used to generate typings
- [typedoc](https://typedoc.org/) used to generate API specifications