This package has been deprecated

Author message:

the scaffolding capabilities of this package are now maintained under `@form8ion/javascript`

@travi/javascript-scaffolder

14.14.7 • Public • Published

javascript-scaffolder

opinionated scaffolder for JavaScript projects

Codecov Node CI Workflow Status

Table of Contents

Features

  • Sets the node.js version to the latest or LTS version (your choice) using nvm
  • Scaffolds the package.json
    • Enables linting of:
  • Enables transpilation with Babel
  • Defines and enforces the commit message convention
  • Defines badges for inclusion in the README.md
  • Defines files to be ignored from git and npm
  • Scaffolds CI service config from the user choice of the provided scaffolders

Usage

npm node MIT license

Installation

$ npm install @travi/javascript-scaffolder --save-prod

As one of the languages for scaffolding a project

This scaffolder is intended to be used to scaffold the language specific details within the project-scaffolder.

Example

Dependencies:
import yargs from 'yargs';
import {scaffold} from '@form8ion/project';
import {scaffold as scaffoldJavaScript} from './lib/index.cjs';
Register with yargs
yargs
  .scriptName('form8ion-utils')
  .usage('Usage: $0 <cmd> [args]')
  .command('scaffold', 'Scaffold a new project', () => scaffold({
    languages: {
      JavaScript: options => scaffoldJavaScript({
        ...options,
        configs: {
          eslint: {scope: '@form8ion'},
          remark: '@form8ion/remark-lint-preset',
          babelPreset: {name: '@form8ion', packageName: '@form8ion/babel-preset'},
          commitlint: {name: '@form8ion', packageName: '@form8ion/commitlint-config'}
        },
        overrides: {npmAccount: 'form8ion'},
        ciServices: {}
      })
    },
    overrides: {copyrightHolder: 'Matt Travi'}
  }))
  .help('h')
  .alias('h', 'help')
  .argv;

Options

projectRoot string (required)

path to the root of the project

projectName string (required)

name of the project (w/o a scope)

visibility string (required)

visibility of the project (Public or Private)

license string (required)
vcs object (required)
  • host string (required) VCS hosting service
  • owner string (required) account name on the host service for the repository
  • name string (required) repository name
description string (optional)

short summary of the project

configs object (optional)
  • eslint: object (optional) details about the shareable config to be used for the project

    • packageName string (required) name of the npm package
    • prefix string (required) name to be used when referring to the config within the .eslintrc files

    ⚠️ while i'm not confident that it is the recommended convention, it is assumed the defined config has a rules/ directory exposed from the package with rulesets defined for

    • es6.js
    • tests/base.js
    • tests/mocha.js
  • commitlint object (optional) details about the shareable config to be used for the project

    • packageName string (required) name of the npm package
    • name string (required) name to be used when referring to the config within the .commitlintrc.js file
  • babelPreset object (optional) details about the preset to be used for the project

    • packageName string (required) name of the npm package
    • name string (required) shorthand name to be used when referring to the config
overrides object (optional)
  • npmAccount string (optional) the account the package should be published under. used to suggest a scope. defaults to $ npm whoami

  • author object (optional) details about the package author

    • name string (required) defaults to $npm config get init.author.name
    • email string (optional) defaults to $npm config get init.author.email
    • url string (optional) defaults to $npm config get init.author.url
registries object (optional)
  • keys: string Scope of packages related to this registry (without the @)
  • values: string URL for the registry
ciServices object (optional)
  • keys: string Name of the service
  • values: object
    • scaffolder: function (required) scaffolds the ci service options
    • public: boolean (optional) whether this service should be presented as a public option
    • private: boolean (optional) whether this service should be presented as a private option
applicationTypes object (optional)
  • keys: string Name of the type of application
  • values: object
    • scaffolder function (required) scaffolds the application
unitTestFrameworks object (required)

frameworks to be passed to the unit-testing scaffolder

Contributing

Conventional Commits Commitizen friendly semantic-release PRs Welcome Renovate

Dependencies

$ nvm install
$ npm install

Verification

$ npm test

Related Projects

Dependencies (23)

Dev Dependencies (36)

Package Sidebar

Install

npm i @travi/javascript-scaffolder

Weekly Downloads

5

Version

14.14.7

License

MIT

Unpacked Size

250 kB

Total Files

9

Last publish

Collaborators

  • travi