@chet.manley/create-node-project
v1.0.1
Published
Quickly generate new node projects from templates.
Maintainers
Readme
@chet.manley/create-node-project
Quickly generate new node projects from templates.
Releases
- @chet.manley/create-node-project
Quick Start
Dependencies
:warning:
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
:information_source:
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:information_source:
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 #0options: base, cjs, cli, es6, tsOptions listed are the templates provided by @chet.manley/node-project-templates. If using your own templates via the
--templates-dirflag, you will be able to choose from those instead.npm init @chet.manley/node-project cjs
<project name>
default: $CWD basenametype: positional #1options: @project-namespace/project-name, project-nameSets the
namefield inpackage.json, as well as the target directory (See the--target-dirflag 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, --configtype: stringdefault: noneProvide a path to a configuration file that will override the defaults.
requireis used to load the file, so it must be a.json, or a.jsthat exports a configuration object. Config file can be any arbitrary name.npm init @chet.manley/node-project -c path/to/my-config.json:information_source:
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 ornullto remain on master) | | commitMessage | string |"\"chore: initial commit :feelsgood:\""| Initial commit message | | gitInit | boolean |true|--git-initflag | | npmInstall | boolean |true|--npm-installflag | | 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 | - |--repositoryflag | | targetDir | string |$CWD|--target-dirflag | | template | string | - |<template name>positional | | templatesDir | string | - |--templates-dirflag | | update | boolean |false|--updateflag | | updateAll | boolean |false|--update-allflag | | yes | boolean |false|--yesflag |
Disable Git
flags: --no-git-inittype: booleandefault: falseDo not initialize a new git repository for this project.
npm init @chet.manley/node-project --no-git-init
Disable NPM Install
flags: --no-npm-installtype: booleandefault: falseDo not run
npm installafter installing template files.npm init @chet.manley/node-project --no-npm-install
Repository
flags: -r, --repositorytype: stringdefault: noneURL 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-dirtype: stringdefault: $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-targetof/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-dirtype: stringdefault: noneLoad 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:information_source:
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, --updatetype: booleandefault: falseCheck the selected template's
package.jsonfor dependency updates and apply them before thenpm installstep.npm init @chet.manley/node-project -u
Update All Template Packages
flags: -U, --update-alltype: booleandefault: falseIf you have installed this package globally, this will check the
package.jsonof each template for dependency updates, apply available updates, then exit. Can also be combined with the--templates-dirflag 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, --verbosetype: countdefault: 0Set the output verbosity of the program.
npm init @chet.manley/node-project -VVV
Accept Defaults
flags: -y, --yestype: booleandefault: falseExplicitly 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-projectusingcjstemplate. - 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-projectusingcjstemplate. - 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-projectusingcjstemplate. - 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-projectusingcjstemplate. - 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-projectusingmytmplnametemplate. - Installs to
/home/username/projects/my-new-project/. - Updates package dependencies.
- Adds remote origin URL.
User Defined Templates
:information_source:
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
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
Copyright © 2020 Chet Manley.
