@chet.manley/create-node-project v1.0.1
@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
:informationsource:\ **_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 #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 inpackage.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
: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 or null
to remain on master)commitMessage string "\"chore: initial commit :feelsgood:\""
Initial commit message gitInit boolean true
--git-init
flagnpmInstall boolean true
--npm-install
flagpaths 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
flagtargetDir string $CWD
--target-dir
flagtemplate string - <template name>
positionaltemplatesDir string - --templates-dir
flagupdate boolean false
--update
flagupdateAll boolean false
--update-all
flagyes 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
: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, --update
\type: boolean
\default: false
Check the selected template's
package.json
for dependency updates and apply them before thenpm 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
usingcjs
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
usingcjs
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
usingcjs
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
usingcjs
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
usingmytmplname
template. - 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.json |
--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.
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago