📣 Support/Questions?: Please see our Support Page for general support questions. The issues on GitHub should be reserved for bug reports and feature requests.
develop
: development branchmaster
: stable version (npm install -g ionic
)3.x
: previous version (npm install -g ionic@3
)2.x
: legacy version (npm install -g ionic@legacy
)
Run the command(s) with --verbose
to produce debugging output. We may ask for
the full command output, including debug statements.
Please also copy/paste the output of the ionic info
command into your issue
and be as descriptive as possible. Include any steps that might help us
reproduce your issue.
Post an issue describing your feature to open a dialogue with us. We're happy to hear from you!
Pull requests are most welcome! But, if you plan to add features or do large refactors, please open a dialogue with us first by creating an issue. Small bug fixes are welcome any time.
Looking for small issues to help with? You can browse the help wanted
label.
These are issues that have been marked as great opportunities for someone's
first PR to the Ionic CLI. 😍
The Ionic CLI is organized into a monorepo. Here are the packages:
packages/ionic
: Ionic CLI executable and library.packages/@ionic/cli-framework
: Framework for command-line programs.packages/@ionic/discover
: Service discovery library used forionic serve
with the Ionic DevApp.packages/@ionic/lab
: Utility CLI for Ionic Lab, used byionic serve
.
packages/@ionic/v1-toolkit
: Utility CLI for Ionic v1 Apps, used byionic serve
.
- npm 6+ is required.
- Node 10+ is required.
- The codebase is written in TypeScript. If you're unfamiliar with TypeScript, we recommend using VS Code and finding a tutorial to familiarize yourself with basic concepts.
- The test suite uses Jest.
- Fork the repo & clone it locally.
npm install
to install the dev tools.npm run bootstrap
(will install package dependencies and link packages together)- Optionally
npm run link
to makeionic
and other bin files point to your dev CLI. npm run watch
will spin up TypeScript watch scripts for all packages.- TypeScript source files are in
packages/**/src
. - Good luck! 💪 Please open an issue if you have questions or something is unclear.
To switch between dev CLI and stable CLI, you can use a Node version manager such as nvm and switch between environments, e.g.
nvm install v8.11.3
nvm alias cli-local v8.11.3
You can even set up an alias in your terminal that sets IONIC_CONFIG_DIRECTORY
to have seperate configuration environments.
alias cli-local="nvm use cli-local && export IONIC_CONFIG_DIRECTORY=$HOME/.ionic/cli-local"
When the Node environment is created, create a symlink to packages/ionic/bin/ionic
within $NVM_BIN
:
ln -s $(pwd)/packages/ionic/bin/ionic $NVM_BIN
The following workflow is recommended for debugging the Ionic CLI:
-
Place
debugger;
statements where desired. -
Run the CLI via
node
to use Node's--inspect-brk
flag:- Instead of
~/path/to/ionic <command>
usenode --inspect-brk ~/path/to/ionic <command>
. - Instead of
ionic <command>
, trynode --inspect-brk $(which ionic) <command>
(works on Mac and Linux).
- Instead of
-
Open
chrome://inspect
in Chrome and select the remote target to use DevTools for debugging.
Read more about Node debugging in the Debugging Guide.
TODO: Be helpful about where to look for commands, utilities, etc.
CI automatically publishes the next version semantically from analyzing commits in master
. To maintain a shared history between develop
and master
, the branches must be rebased with each other locally.
-
When it's time to cut a release from
develop
:git checkout master git rebase develop git push origin master
-
Await successful publish in CI. Ionitron will push the updated versions and tags to
master
. -
Sync
develop
withmaster
.git pull origin master git checkout develop git rebase master git push origin develop
To publish testing versions, follow these steps:
- Cancel any watch scripts.
- Run
npm run publish:testing