UNPKG

npmize

Version:

Let's create an npm package without worrying about anything.

105 lines (104 loc) 4.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = default_1; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const cross_spawn_1 = __importDefault(require("cross-spawn")); const ansi_colors_1 = __importDefault(require("ansi-colors")); const tsconfig_1 = require("../scripts/tsconfig"); const ghWorkflows_1 = __importDefault(require("../scripts/ghWorkflows")); const packageJSON_1 = __importDefault(require("../scripts/packageJSON")); const fs_2 = require("../utils/fs"); const config_1 = __importDefault(require("../config")); function default_1(basePath, options) { var _a, _b, _c; console.log(`\x1b[1m\x1b[35m▓▒░ NPMIZE ░▒▓\x1b[0m\n`); if (options.writePackageJSON) { const data = packageJSON_1.default.read(basePath); (_a = data.name) !== null && _a !== void 0 ? _a : (data.name = path_1.default.basename(basePath)); (_b = data.version) !== null && _b !== void 0 ? _b : (data.version = '0.0.0'); (_c = data.scripts) !== null && _c !== void 0 ? _c : (data.scripts = {}); data.scripts.dev = 'npmize dev'; data.scripts.build = 'npmize build'; data.scripts.start = 'run ./src/index.ts'; delete data.main; delete data.module; data.main = './dist/index.cjs'; data.module = './dist/index.mjs'; packageJSON_1.default.write(basePath, data); } else { console.log(ansi_colors_1.default.bgGreen(' INFO: '), 'package.json is disabled'); } if (options.installPackages) { cross_spawn_1.default.sync('npm', ['install', '--save-dev', 'npmize', 'typescript'], { cwd: basePath, stdio: 'inherit', }); } else { console.log(ansi_colors_1.default.bgGreen(' INFO: '), 'TypeScript is disabled'); } if (options.writeTSConfig) { (0, tsconfig_1.updateTSConfig)(path_1.default.join(basePath, './tsconfig.json'), { compilerOptions: { baseUrl: './src', outDir: './dist', target: 'ES6', skipLibCheck: true, declaration: true, strict: true, paths: { '@/*': ['./*'] }, }, include: ['./src'], }, true); } if (options.writeGitIgnore) { updateIgnoreFile('./.gitignore', ['dist', '.npmize', 'node_modules']); } else { console.log(ansi_colors_1.default.bgGreen(' INFO: '), 'Gitignore is disabled'); } if (options.writeNpmIgnore) { updateIgnoreFile('./.npmignore', ['*', '!lib/**', '!dist/**', '!README.md', '!package.json']); } else { console.log(ansi_colors_1.default.bgGreen(' INFO: '), 'Npmignore is disabled'); } if (options.writeSample) { const srcPath = path_1.default.join(basePath, './src'); const srcExists = fs_1.default.existsSync(srcPath); if (srcExists) { console.log(ansi_colors_1.default.bgYellow(' WARN: '), "'./src/index.ts' folder already exists"); } else { (0, fs_2.writeFileSync)(path_1.default.join(srcPath, './index.ts'), `console.log('Hello, world!')\nexport default 'Hello, world!'`); } } else { console.log(ansi_colors_1.default.bgGreen(' INFO: '), 'Sample is disabled'); } if (options.ghWorkflow) { (0, ghWorkflows_1.default)(basePath); } else { console.log(ansi_colors_1.default.bgGreen(' INFO: '), 'GitHub workflow is disabled'); } } function updateIgnoreFile(path, lines) { const fileExists = fs_1.default.existsSync(path); const fileStr = fileExists ? fs_1.default.readFileSync(path, 'utf-8') : ''; const fileData = fileStr .split('\n') .filter(Boolean) .map((str) => str.trim()); const missingLines = lines.filter((line) => !fileData.includes(line)); if (!missingLines.length) return; const missingTexts = ['# ' + config_1.default.name, ...missingLines].join('\n'); const text = (fileStr + '\n\n' + missingTexts).trim(); (0, fs_2.writeFileSync)(path, text); }