@epandco/unthink v3.0.7
Unthink CLI
The Unthink CLI is a tool to make creating and working in projects utilizing the Unthink Stack easier.
The Unthink Stack is a specialized web stack built on top of Express with both the server and client code written in TypeScript. For more information on the stack see its documentation.
Quick Start
Install from npm:
npm install --global @epandco/unthinkCreate a new project off of the current directory:
unthink init project-nameFrom the project directory, install dependencies:
npm installBuild the project:
npm run buildThen, run the server and client projects in separate terminals:
npm run server
npm run clientIf the project is using MongoDB via the provided docker configuration, you should also run the following in a new terminal:
docker-compose upCLI Commands
help
help (alias h) will output the list of commands.
initialize
initialize (aliases init and i) is used to start a new project.
You must provide a valid project name (kebab-case) and optionally the path for the new project.
Examples:
# create "my-new-project" off of current directory:
unthink init my-new-project
# create "my-new-project" off of the path specified:
unthink init path/to/my-new-projectgenerate
The generate (aliases gen and g) command aids day-to-day project work by
creating certain common project elements from templates.
Using the command by itself will output a list of available generators:
unthink genFollowing are built-in generators provided with the CLI.
entry
The entry generator adds a new entry point for Webpack in the frontend layer.
Entries go in the src/client/entries folder and are made up of (by default) a
TypeScript file and Riot component. This command must be run from a project's
root. Entry names must be kebab-case and at least two words in length (forced
style to match the W3 spec on custom components).
unthink gen entry about-pageriot
The riot generator adds a new Riot component at the path specified. Component
names must be kebab-case and at least two words in length (forced style to match
the W3 spec on custom components).
By default, the new Riot Component will include the <script type="ts"> and
<style type="scss"> blocks:
unthink gen riot ./some/path/my-new-componentUse the --no-script option flag to skip generating the <script> block.
Use the --no-style option flag to skip generating the <style> block.
favicon
The favicon generator creates a complete favicon set from a single source image.
The generated favicon files are written to src/client/public/favicons by default,
but an optional parameter can be added to specify a custom output directory.
# Create a favicon set in the default output directory
unthink gen favicon path/to/source.png
# Create a favicon set in a custom output directory
unthink gen favicon path/to/source.png path/to/outputPlease note: the favicon generator only creates the favicon files themselves. Any
markup to include the favicons in a template will need to be handled manually.
Contributing
Bugs, questions, enhancement ideas, proposals etc., should all be handled via this repo's issues board.
Try to give as much detail as you can, and use the labels.
Developing and running the CLI locally
To pull this repo down and test the CLI, run the following commands in the repo:
npm install
npm run build
npm linkNote: if you already have the CLI installed globally from npm, you should uninstall it first.
After those commands finish you will then be able to run the unthink CLI as
if you had installed it globally from npm.
Submitting Updates
Make a pull request with your changes. Make sure to reference any related issues if they exist!
Note: make sure you've properly followed the project style and linted before making your PR.
The Unthink Stack
For the documentation on how the stack works and how to use it, look here.
The template for the Unthink Stack is part of this repo (in ./unthink-stack).
The CLI uses this template when creating new projects with the initialize
command.
To maintain and update this template, it can be run directly in
./unthink-stack folder like this:
# First change directory into the stack folder
cd ./unthink-stack
# npm will not be scoped to this folder and run the npm install for the
# package.json in this folder
npm i
# run the stack normally
# if you are using the db, skip if not
docker-compose up
npm startThis way changes can be tested and verified in the stack before committing them.
gluegun
This project is using gluegun see the docs here.
License
MIT - see LICENSE