UNPKG

@typed/content-hash

Version:

Content hash a directory of HTML/JS/CSS files and other static assets

91 lines 3.13 kB
#! /usr/bin/env node "use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const function_1 = require("fp-ts/function"); const Option_1 = require("fp-ts/Option"); const fs_1 = require("fs"); const path_1 = require("path"); const typescript_1 = require("typescript"); const yargs_1 = (0, tslib_1.__importDefault)(require("yargs")); const content_hashes_1 = require("../content-hashes"); const findTsConfig_1 = require("./findTsConfig"); const options = yargs_1.default .options('directory', { alias: 'dir', type: 'string', demandOption: true, description: 'The directory to apply content hashes', }) .options('assetManifest', { type: 'string', default: 'asset-manifest.json', description: 'Filename of asset manifest JSON', }) .options('hashLength', { alias: 'h', type: 'number', description: 'Number of characters to slice from SHA-512 hash', }) .options('tsConfig', { type: 'string', default: 'tsconfig.json', description: 'Relative path to tsconfig from CWD', }) .options('baseUrl', { type: 'string', description: 'Base URL to use when rewriting imports/exports', }) .options('logLevel', { type: 'string', choices: ['debug', 'info', 'error'], default: 'info', }) .options('registryFile', { type: 'string', description: 'Configure where to write Document Registry to JSON. Useful for debugging', }) .options('sourceMaps', { type: 'boolean', default: true, }) .options('mainFields', { type: 'array', default: ['module'], description: 'Configure package.json fields to look for dependencies', }) .help().argv; function getLogLevel(option) { switch (option) { case 'debug': return content_hashes_1.LogLevel.Debug; case 'error': return content_hashes_1.LogLevel.Error; default: return content_hashes_1.LogLevel.Info; } } const directory = path_1.posix.resolve(process.cwd(), options.directory); if (!(0, fs_1.existsSync)(directory) || !(0, fs_1.statSync)(directory).isDirectory()) { throw new Error(`Unable to find valid directory at ${directory}`); } const tsConfig = (0, findTsConfig_1.findTsConfig)({ directory: process.cwd(), configFileName: options.tsConfig }); (0, content_hashes_1.contentHashDirectory)({ directory, hashLength: (_a = options.hashLength) !== null && _a !== void 0 ? _a : Infinity, assetManifest: path_1.posix.resolve(directory, options.assetManifest), baseUrl: options.baseUrl, plugins: (0, content_hashes_1.createDefaultPlugins)({ mainFields: options.mainFields, buildDirectory: directory, compilerOptions: (0, function_1.pipe)(tsConfig, (0, Option_1.map)((t) => t.compilerOptions), (0, Option_1.getOrElse)(typescript_1.getDefaultCompilerOptions)), }), logLevel: getLogLevel(options.logLevel), registryFile: options.registryFile, sourceMaps: options.sourceMaps, }).catch((error) => { console.error(error); process.exit(1); }); //# sourceMappingURL=content-hash.js.map