@nhz.io/slush-um
Version:
Micro module generator (@nhz.io scoped)
116 lines (94 loc) • 2.34 kB
JavaScript
// # Micro module generator (@nhz.io scoped)
// ## You get:
// * **TDD Dev environment configured for tiny packages**
// * **Literate Coffeescript template to start with (README.litcoffee)**
// >
// * `npm start` - to start TDD
// * `npm build`
// >
// * [coffeescript 2]
// * [coffeelint]
// * [coffeetape]
// * [faucet]
// * [tape-async]
// * [chokidar-cli]
// * [husky]
// >
// * `.travis.yml` for scoped publish (public) - just set `NPM_AUTH_TOKEN`
// ## Install
// ```bash
// npm i -g slush @nhz.io/slush-um
// ```
// ## Usage
// ```bash
// mkdir um && cd um
// slush @nhz.io/um
// ```
// ## Literate Source
// ### Imports
// > Builtins
var camelcase, conflict, gulp, inquirer, install, path, pump, rename, slugify, template;
path = require('path');
// > General
gulp = require('gulp');
pump = require('pump');
inquirer = require('inquirer');
// > Gulp plugins
install = require('gulp-install');
conflict = require('gulp-conflict');
template = require('gulp-template');
rename = require('gulp-rename');
// > String utils imports
slugify = require('slugify');
camelcase = require('camelcase');
// ## Default task
gulp.task('default', async function() {
var answers;
answers = (await inquirer.prompt([
{
name: 'pkgName',
message: 'Package name?',
// > Strip scope prefix from default package name
default: (path.basename(process.cwd())).replace(/^(nhz-io-)?/,
'')
},
{
name: 'pkgDescription',
message: 'Description?'
},
{
name: 'pkgVersion',
message: 'Version?',
default: '0.0.0'
},
{
type: 'confirm',
name: 'continue',
message: 'Continue?'
}
]));
if (!answers.continue) {
return done();
}
// > Strip scope prefix from package name
answers.pkgName = answers.pkgName.replace(/^nhz-io-/, '');
// > Slugify
answers.pkgNameSlug = slugify(answers.pkgName, '-');
// > Camel Case
answers.pkgNameCamelCase = camelcase(answers.pkgName);
// > Generate package
return pump([
gulp.src(__dirname + '/templates/**'),
template(answers),
rename(function(f) {
if (f.basename[0] === '_') {
return f.basename = `.${f.basename.slice(1)}`;
}
}),
conflict('./'),
gulp.dest('./'),
install()
]);
});
// ## Version 1.1.5
// ## License [MIT](LICENSE)