Narcoleptic's Patch Mangler

    @chet.manley/create-node-project

    1.0.1 • Public • Published

    @chet.manley/create-node-project

    Quickly generate new node projects from templates.

    project vulnerabilities project dependencies code style standardjs versioning strategy required Node version

    CI pipeline status code coverage

    Releases

    latest release version next release version package install size


    Quick Start

    Dependencies

    ⚠️
    This package requires a properly configured Git installation in order to function properly. It has been tested with Git version 2.26, but lower versions are very likely to work as well.

    Install

    ℹ️
    This package is meant to be used as an npm initializer -- no explicit installation is required.

    Usage

    npm init @chet.manley/node-project
    # or
    npx @chet.manley/create-node-project

    ℹ️
    Running with no arguments will enter interactive mode, rendering a menu that requests the minimum required options. The rest of the configuration will then be calculated from the information you provide.

    Positional Arguments

    <template name>

    default: 'base'
    type: positional #0
    options: base, cjs, cli, es6, ts

    Options listed are the templates provided by @chet.manley/node-project-templates. If using your own templates via the --templates-dir flag, you will be able to choose from those instead.

    npm init @chet.manley/node-project cjs

    <project name>

    default: $CWD basename
    type: positional #1
    options: @project-namespace/project-name, project-name

    Sets the name field in package.json, as well as the target directory (See the --target-dir flag for more information). Names containing spaces will be transformed to use dashes (E.g., "my new project" => "my-new-project"). Names are also lowercased, per the npm documentation.

    npm init @chet.manley/node-project cjs my-new-project

    Flags

    User Config

    flags: -c, --config
    type: string
    default: none

    Provide a path to a configuration file that will override the defaults. require is used to load the file, so it must be a .json, or a .js that exports a configuration object. Config file can be any arbitrary name.

    npm init @chet.manley/node-project -c path/to/my-config.json

    ℹ️
    If a relative path is provided, file location will be resolved in the following order:

    • $CWD/
    • ~/
    • ~/.create-node-project/
    • ~/.config/
    • ~/.config/create-node-project/
    Available Options
    key type default description
    checkoutBranch string "integration" Branch to checkout after initial commit (Empty string or null to remain on master)
    commitMessage string "\"chore: initial commit :feelsgood:\"" Initial commit message
    gitInit boolean true --git-init flag
    npmInstall boolean true --npm-install flag
    paths array ["~/", "~/.create-node-project", "~/.config", "~/.config/create-node-project"] Default paths to search (Currently only used when loading user templates)
    projectName string $CWD basename <project name> positional
    repository string - --repository flag
    targetDir string $CWD --target-dir flag
    template string - <template name> positional
    templatesDir string - --templates-dir flag
    update boolean false --update flag
    updateAll boolean false --update-all flag
    yes boolean false --yes flag

    Disable Git

    flags: --no-git-init
    type: boolean
    default: false

    Do not initialize a new git repository for this project.

    npm init @chet.manley/node-project --no-git-init

    Disable NPM Install

    flags: --no-npm-install
    type: boolean
    default: false

    Do not run npm install after installing template files.

    npm init @chet.manley/node-project --no-npm-install

    Repository

    flags: -r, --repository
    type: string
    default: none

    URL pointing to empty remote repository of the same project name. This adds a Git remote origin, as well as filling the appropriate fields in package.json.

    npm init @chet.manley/node-project \
    -r "https://gitlab.com/my-namespace/my-new-project.git"

    Target Directory

    flags: -t, --target-dir
    type: string
    default: $CWD | $CWD/<project name>

    Where you want your new project to be installed. If a relative path is provided, the computed target will be relative to your current working directory.

    If the basename (E.g., my-target of /home/username/projects/my-target) of the computed target path differs from the project name, the project will be created in a project-named subdirectory of the target (E.g., /home/username/projects/my-target/my-new-project).

    The default behavior will create a project-named subdirectory in your current working directory if your CWD differs from the project name.

    npm init @chet.manley/node-project -t ~/projects/my-target

    Templates Directory

    flags: --templates-dir
    type: string
    default: none

    Load user-defined templates from this directory. If a relative path is provided, the computed path will be relative to your current working directory. Browse the @chet.manley/node-project-templates project for details regarding implementing your own templates.

    The default behavior loads the templates provided by this package.

    npm init @chet.manley/node-project \
    --templates-dir path/to/my-templates

    ℹ️
    If a relative path is provided, directory location will be resolved in the following order (this can be overriden using the --config flag):

    • $CWD/
    • ~/
    • ~/.create-node-project/
    • ~/.config/
    • ~/.config/create-node-project/

    Update Package

    flags: -u, --update
    type: boolean
    default: false

    Check the selected template's package.json for dependency updates and apply them before the npm install step.

    npm init @chet.manley/node-project -u

    Update All Template Packages

    flags: -U, --update-all
    type: boolean
    default: false

    If you have installed this package globally, this will check the package.json of each template for dependency updates, apply available updates, then exit. Can also be combined with the --templates-dir flag to update user-defined templates.

    create-node-project -U
    # or
    npm init @chet.manley/node-project -U \
    [--templates-dir path/to/my-templates]

    Verbose

    flags: -V, --verbose
    type: count
    default: 0

    Set the output verbosity of the program.

    npm init @chet.manley/node-project -VVV

    Accept Defaults

    flags: -y, --yes
    type: boolean
    default: false

    Explicitly enter non-interactive mode, accepting defaults with no prompts.

    npm init @chet.manley/node-project -y

    Examples

    Interactive Mode

    npm init @chet.manley/node-project
    • Prompts for minimum required options.

    Interactive Mode With Options

    npm init @chet.manley/node-project cjs my-new-project
    • Creates a new project named my-new-project using cjs template.
    • Prompts for any missing options.

    Apply Defaults

    npm init @chet.manley/node-project cjs my-new-project -y
    • Creates a new project named my-new-project using cjs template.
    • Applies defaults for missing options.

    Set Target Directory

    npm init @chet.manley/node-project cjs my-new-project -y \
    --target-dir projects
    • Creates a new project named my-new-project using cjs template.
    • Applies defaults for missing options.
    • Installs to $CWD/projects/my-new-project.

    Install in Current Directory

    mkdir ./my-new-project
    cd ./my-new-project
    npm init @chet.manley/node-project cjs my-new-project
    • Creates a new project named my-new-project using cjs template.
    • Prompts for any missing options.
    • Installs to $CWD.

    Load User Config

    ~/projects/my-new-project.json:

    {
      "projectName": "my-new-project",
      "repository": "https://gitlab.com/name.space/my-new-project.git",
      "targetDir": "~/projects",
      "template": "mytmplname",
      "templatesDir": "~/projects/my-templates",
      "update": true
    }
    cd ~/
    npm init @chet.manley/node-project -c projects/my-new-project.json
    • Loads user config from /home/<username>/projects/my-new-project.json.
    • Loads user templates from /home/<username>/projects/my-templates/.
    • Creates a new project named my-new-project using mytmplname template.
    • Installs to /home/username/projects/my-new-project/.
    • Updates package dependencies.
    • Adds remote origin URL.

    User Defined Templates

    ℹ️
    See the @chet.manley/node-project-templates repository for information regarding creating your own templates.

    Quick Reference

    Positional Arguments

    Name Position Default Short Description
    template name 0 'base' Name of template to apply
    project name 1 $CWD basename Name of project

    Options

    Flags Type Default Short Description
    -c, --config string - path/to/user-config.js[on]
    --no-git-init boolean false Do not init Git repo
    --no-npm-install boolean false Do not run npm install
    -r, --repository string - Add Git remote repo URL
    -t, --target-dir string $CWD path/to/target/dir
    --templates-dir string - path/to/user/templates
    -u, --update boolean false Update dependencies before npm install
    -U, --update-all boolean false Update dependencies for all templates, then exit
    -V, --verbose count 0 Set output verbosity
    -y, --yes boolean false Accept defaults

    Built with

    Fedora Linux VSCode GitLab Caffeine

    Contributing

    The community is welcome to participate in this open source project. Aspiring contributors should review the contributing guide for details on how to get started. First-time contributors are encouraged to search for issues with the ~"good first issue" label.

    License

    NPM

    Copyright © 2020 Chet Manley.

    Install

    npm i @chet.manley/create-node-project

    DownloadsWeekly Downloads

    27

    Version

    1.0.1

    License

    MIT

    Unpacked Size

    69.8 kB

    Total Files

    71

    Last publish

    Collaborators

    • avatar