npmize
Version:
Let's create an npm package without worrying about anything.
75 lines (74 loc) • 3.76 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.build = exports.dev = exports.init = exports.app = void 0;
const noarg_1 = __importDefault(require("noarg"));
const config_1 = __importDefault(require("./config"));
const utils_1 = require("./utils");
const ansi_colors_1 = __importDefault(require("ansi-colors"));
exports.app = noarg_1.default.create(config_1.default.name, {
description: config_1.default.description,
flags: {
version: noarg_1.default.boolean().aliases('v').description('Show the version'),
},
}).on((_, flags) => {
if (flags.version) {
console.log((0, utils_1.getVersion)());
}
else
exports.app.renderHelp();
});
exports.init = exports.app.create('init', {
description: 'Initialize a new npm package',
arguments: [
{
name: 'name',
description: 'Name of the package',
type: noarg_1.default.string().default('.').ask("What's the name of the package?"),
},
],
flags: {
pkg: noarg_1.default.boolean().default(true).description('Make package.json with needed fields'),
tsconfig: noarg_1.default.boolean().default(true).description('Write "tsconfig.json"'),
workflow: noarg_1.default.boolean().default(true).description('Write a workflow file'),
install: noarg_1.default.boolean().default(true).description('Install needed npm packages'),
sample: noarg_1.default.boolean().default(true).description('Write a sample file ./src/index.ts'),
ignore: noarg_1.default.boolean().default(true).description("Write '.gitignore' and '.npmignore'"),
npmignore: noarg_1.default.boolean().default(true).description('Write .npmignore'),
gitignore: noarg_1.default.boolean().default(true).description('Write .gitignore'),
},
});
const devAndBuild = noarg_1.default.defineConfig({
optionalArguments: [
{
name: 'root',
description: 'Root directory of the package',
type: noarg_1.default.string().description('Root directory'),
},
],
flags: {
module: noarg_1.default.string('cjs', 'mjs').aliases('m').description('Output module type .cjs or .mjs'),
node: noarg_1.default.boolean()
.aliases('n')
.default(false)
.description('Enable __dirname and __filename in ES modules'),
},
notes: [
`Arguments after "${ansi_colors_1.default.yellow('--tsc')}" will be passed to ${ansi_colors_1.default.yellow('TypeScript')} compiler.`,
['--project', '--module', '--outDir', '--watch']
.map((flag) => ansi_colors_1.default.yellow(flag))
.join(', ') + ' and their aliases are ignored.',
],
trailingArguments: '--tsc',
customRenderHelp: { helpUsageTrailingArgsLabel: '[TypeScript Args]' },
});
exports.dev = exports.app.create('dev', Object.assign(Object.assign({}, devAndBuild), { description: 'Start the development compiler', flags: Object.assign(Object.assign({}, devAndBuild.flags), { focus: noarg_1.default.string('cjs', 'mjs')
.aliases('f')
.default('mjs')
.description('Focus the typescript compilation process of a specific module') }) }));
exports.build = exports.app.create('build', Object.assign(Object.assign({}, devAndBuild), { description: 'Build the package for production', flags: Object.assign(Object.assign({}, devAndBuild.flags), { worker: noarg_1.default.boolean()
.aliases('w')
.default(false)
.description('Run the build process in a worker thread') }) }));