UNPKG

@yeci226/nhentai-ts

Version:

A scraper for NHentai with types

81 lines (74 loc) 2.13 kB
import { execSync } from 'child_process' import { buildSync } from 'esbuild' import { rmSync, writeFileSync } from 'fs' import { performance } from 'perf_hooks' import glob from 'tiny-glob' ;(async () => { const startTime = performance.now() // Cleaning dist dir console.log('\x1b[32mCleaning dist directory\x1b[0m') rmSync('dist', { force: true, recursive: true }) // Generate entry-points for cjs compatibility const target = ['ESNext', 'node8.17'] const entryPoints = await glob('./src/**/*.ts') console.log('\x1b[34mBuilding dist for node (cjs)...\x1b[0m') buildSync({ entryPoints, outdir: './dist/cjs', bundle: false, sourcemap: false, minify: false, format: 'cjs', platform: 'node', target }) writeFileSync('./dist/cjs/package.json', '{"type": "commonjs"}', { flag: 'w' }) console.log('\x1b[34mBuilding dist for node type=module (esm)...\x1b[0m') buildSync({ entryPoints: [ './src/index.ts', './src/lib/index.ts', './src/Parser/index.ts' ], outdir: './dist/esm', bundle: true, sourcemap: false, minify: false, splitting: true, format: 'esm', target, platform: 'node', outExtension: { '.js': '.mjs' }, external: [ 'axios', 'cheerio', 'http-cookie-agent', 'jszip', 'pdfkit', 'rimraf', 'tough-cookie', 'deasync' ] }) writeFileSync('./dist/esm/package.json', '{"type": "module"}', { flag: 'w' }) console.log('\x1b[34mGenerating typescript declaration ...\x1b[0m') execSync( 'tsc --declaration --emitDeclarationOnly --declarationDir ./dist/types/' ) const endTime = performance.now() const executionTime = (endTime - startTime) / 1000 console.log( `\x1b[32mBuild Success with execution time ${executionTime.toFixed( 2 )} s\x1b[0m` ) })()