Skip to content

Instantly share code, notes, and snippets.

@kristianmandrup
Last active August 29, 2015 14:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kristianmandrup/d364bd8fda30b0987c27 to your computer and use it in GitHub Desktop.
Save kristianmandrup/d364bd8fda30b0987c27 to your computer and use it in GitHub Desktop.
Project management tool for node projects with addon infrastructure
I always end up having a lot of projects and it quickly becomes a "bit of a mess" unless you follow some very strict conventions. Would be nice to have a tool to help lift that burden IMO.
Wouldn't even have to be specifically linked to ember projects, but just node based projects in general that follow the app/addon convention.
How would you structure your projects as they scale to a sizable number > 10 projects and > 10 addons of various types??
https://github.com/stefanpenner/ember-cli/issues/1822
Some basic design ideas follows ...
Setup global defaults for projects and addons of specific project type to be handled
```
~/.node-proj-manager.config
"ember": {
home: {
"projects": "$USER_HOME/my-ember-home/ember-projects"
"addons": "$USER_HOME/my-ember-home/ember-addons"
},
types: {
"cli": {
bins: {
wrap-cli: 'ember-cli',
proj-cli: 'ember-pman' // handles proj management tasks of ember-cli based proj
}
}
```
Notes: `ember-pman` should add keywords to `packages.json` "ember-project", "ember-cli-project"
Possibly (recommended?) set and use environment variables instead
```
$EMBER_PROJECTS_HOME = $USER_HOME/my-ember-home/ember-projects
$EMBER_ADDONS_HOME = $USER_HOME/my-ember-home/ember-addons
```
Recommended to leverage *npm local cache* to make it easier to find projects of a specific type/name etc.
https://www.npmjs.org/package/npm-local-cache
Creates a local searchable NPM cache. Good for building your own module repo based on NPM.
Functionality:
- Filter on custom keywords
...
CLI API
`$ node-proj new my-demo --gen ember-cli`
Would wrap *ember-cli* (or other genrator cli tool) and perform "project management" tasks, such as putting main project containers in their place and assist with symlinking folders when necessary
Better to alias this, sth like this (pseudo syntax!)
alias="ember-proj=node-proj new $1 --gen ember-cli $."
```
/path/to/$EMBER_PROJECTS_HOME
my-app-project
my-demo-app
/app
my-demo-addons
/dev
...
/dist
...
```
$ ember-proj my-demo --path demos/experimental --keywords demo:experimental
Adds keywords to `packages.json`
```
/path/to/$EMBER_PROJECTS_HOME
demos/experimental/my-app-project
```
For ember addons extracted from a project (dist)
`$ ember-addon my-cool-input --path components --keywords blueprint:component:input`
```
/path/to/$EMBER_ADDONS_HOME
my-cool-input
...
```
More details on sructure and linking here: https://github.com/stefanpenner/ember-cli/issues/1822#issuecomment-53970005
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment