## Getting Setup
![][debugger-intro-gif]
:construction_worker: If something goes wrong, checkout our [most common issues][common-issues] and find us in [Slack][slack]!
### Step 1. Installing the Debugger
First, we'll clone the debugger locally, then we'll install its
dependencies with [Yarn]. If you don't have Yarn, you can install it [here][yarn-install].
Also, before you start, it's helpful to make sure you have node 7.
We recommend, [nvm] for updating the latest node.
```bash
git clone https://github.com/devtools-html/debugger.html.git
cd debugger.html
yarn install
```
*Why Yarn and not NPM?*
We like [Yarn] because it makes sure everyone is using the same library versions.
### Step 2. Start the Debugger
Next, we'll start the debugger and run it [locally][dev-server].
```bash
yarn start
```
Open `http://localhost:8000` in any browser and launch
Firefox or Chrome. You should now be able to select a
tab to debug.
| Launchpad | Tabs |
| -- | -- |
| ![pad2-screenshot] | ![launchpad-screenshot] |
Congratulations! You're now up and running. :sweat_smile:
*What should I do if I get an error?*
Ask in our [Slack][slack] channel or file an [issue][yarn-run-firefox-fails] here.
Here is a list of some of the [most common issues][common-issues]
### Next Steps
Try this [first activity][first-activity] if you want to start debugging the debugger! :clap:
## Appendix
### Quick Setup
This setup is for people on the DevTools team and DevTools wizards.
```bash
curl -o- -L https://yarnpkg.com/install.sh | bash -s
git clone git@github.com:devtools-html/debugger.html.git
cd debugger.html
yarn install
# close firefox if it's already running
/Applications/Firefox.app/Contents/MacOS/firefox-bin --start-debugger-server 6080 -P development
# create a new terminal tab
cd debugger.html
yarn start
```
### Starting Firefox
If you're looking for an alternative to `yarn run firefox`, you have several
alternatives.
#### Firefox CLI
##### 1. Run `firefox-bin` from the command line
```bash
/Applications/Firefox.app/Contents/MacOS/firefox-bin --start-debugger-server 6080 -P development
```
You'll be shown a prompt to create a new "development" profile. The development profile is where your remote development user settings will be kept. *It's a good thing :)*
##### 2. Go to `about:config` and set these preferences
Navigate to `about:config` and accept any warning message. Then search for the following preferences and double click them to toggle their values to the following. [example](http://g.recordit.co/3VsHIooZ9q.gif)
* `devtools.debugger.remote-enabled` to `true`
* `devtools.chrome.enabled` to `true`
* `devtools.debugger.prompt-connection` to `false`
##### 3. Restart Firefox
Close firefox and re-open it with the `firefox-bin` command.
#### Firefox GCLI
1. Open Firefox
2. Press shift+F2 to open GCLI
3. Type `listen 6080` into GCLI
NOTE: This assumes that you've already set the other preferences in
`about:config`.
#### Firefox using WebSocket transport
The default, traditional way to connect to Firefox uses a custom TCP protocol.
However, Firefox also now supports connecting via WebSockets as well. To use
this mode:
##### 1. Create a `configs/local.json` file in your `debugger.html` clone with:
```
{
"firefox": {
"webSocketConnection": true,
"webSocketHost": "localhost:6080"
}
}
```
##### 2. Enable WebSocket mode when opening the server socket
* With the Firefox CLI approach, add the `ws:` prefix to the port:
```bash
/Applications/Firefox.app/Contents/MacOS/firefox-bin --start-debugger-server ws:6080 -P development
```
* With the GCLI approach, enter `listen 6080 websocket`
### Starting Chrome
There are two ways to run chrome. Here's the easy way to run chrome
```bash
yarn run chrome
```
Here's the slightly harder way.
```bash
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --no-first-run --user-data-dir=/tmp/chrome-dev-profile
```
Note that the [script](https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/bin/chrome-driver.js) just automates the command :)
### Starting Node
It's easy to start Node in a mode where DevTools will find it:
* `--inspect-brk` - tells node to open a debugger server and pause on the first statement
```bash
node --inspect-brk ./node_modules/.bin/webpack
```
**Note** *./node_modules/.bin/webpack* could be anything. We're often debugging webpack these days so it's often appropriate :unamused:
**Note:** Currently Node.js debugging is limited in some ways, there isn't support for seeing variables or the console, but you can manage breakpoints and navigate code execution (pause, step-in, step-over, etc.) in the debugger across various sources.
### Windows + Linux setup
Windows and Linux should *just work*, but unfortunately there are several edge cases.
If you find any issues on these two platforms comment on these issues:
* [windows][windows-issue]
* [linux][linux-issue]
**Firefox windows command**
```bash
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -start-debugger-server 6080 -P development
```
### Debugger examples
Starting Firefox or Chrome following the previous steps opens the browser on [the online debugger examples][debugger-examples].
If you want to hack the debugger even with being offline, you might want to get [the repo containing those examples][debugger-examples] to run them locally.
[debugger-intro-gif]:http://g.recordit.co/WjHZaXKifZ.gif
[debugger-examples]:https://devtools-html.github.io/debugger-examples/
[debugger-examples-repo]:https://github.com/devtools-html/debugger-examples
[yarn-run-firefox-fails]:https://github.com/devtools-html/debugger.html/issues/1341
[linux-issue]:https://github.com/devtools-html/debugger.html/issues/1082
[windows-issue]:https://github.com/devtools-html/debugger.html/issues/1248
[yarn-issue]:https://github.com/devtools-html/debugger.html/issues/1216
[yarn-update]:https://github.com/devtools-html/debugger.html/pull/1483
[Yarn]:https://yarnpkg.com
[yarn-install]:https://yarnpkg.com/en/docs/install
[dev-server]:https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-launchpad/README.md#dev-server
[first-activity]: ./debugging-the-debugger.md
[common-issues]: ./most-common-issues.md
[slack]:https://devtools-html-slack.herokuapp.com/
[launchpad-screenshot]:https://cloud.githubusercontent.com/assets/2134/22162697/913777b2-df04-11e6-9150-f6ad676c31ef.png
[nvm]:https://github.com/creationix/nvm
[pad2-screenshot]: https://shipusercontent.com/1b41eb3d0f4630ed9197c737cb6e3cb4/Screen%20Shot%202017-11-08%20at%2010.08.51%20AM.png