UNPKG

geoip-lite2

Version:

A light weight native JavaScript implementation of GeoIP API from MaxMind. Improved and faster version by Sefinek.

56 lines (49 loc) 1.53 kB
const terser = require('terser'); const fs = require('node:fs/promises'); const path = require('node:path'); const minifyJSFiles = async (sourceDirectory, outputDirectory) => { try { await fs.access(sourceDirectory); } catch { throw new Error(`Source directory does not exist: ${sourceDirectory}`); } await fs.rm(outputDirectory, { recursive: true, force: true }); await fs.mkdir(outputDirectory, { recursive: true }); const files = (await fs.readdir(sourceDirectory)).filter(file => file.endsWith('.js')); for (const file of files) { try { const code = await fs.readFile(path.join(sourceDirectory, file), 'utf8'); const result = await terser.minify(code, { mangle: true, ecma: 2024, module: true, compress: { passes: 3, pure_funcs: ['console.info', 'console.debug'], hoist_funs: false, hoist_vars: true, reduce_funcs: true, reduce_vars: true, unsafe: false, unused: true, dead_code: true, }, format: { quote_style: 3, preserve_annotations: true, comments: false, }, toplevel: true, }); await fs.writeFile(path.join(outputDirectory, file), result.code, 'utf8'); console.log('Minimized:', file); } catch (err) { console.error(`Error processing ${file}:`, err.message); } } console.log('COMPLETED:', sourceDirectory); }; (async () => { await minifyJSFiles('./lib', './lib-minified'); await minifyJSFiles('./utils', './utils-minified'); })();