An extensible JavaScript REPL
- Why use Juicy?
- Demo
- Running using global command
- Running from within a program
- Default Options
- Options
- Development
- Author
- Contributors
- Juicy supports private npm packages. Just install
juicy-repl
globally and host it on your machine, tell it which packages to include, and in less than a minute you have a custom REPL running locally. - Flow. Juicy supports Flow syntax, allowing you to copy and paste directly from your source without making syntax modifications.
- 300+ themes. Juicy implements all themes from Rainglow. Thanks to Dayle Rees for building these themes.
- Same editor as VS Code.
- Autocomplete/intellisense
- Easy sharing. Quickly create a link to what you're working on and share it with anyone.
- Save your work. Juicy allows you to pin your work and return to it at anytime without any need to signup or login.
- Last but not least, Juicy is just plain awesome!
Install juicy-repl
# with npm
npm install -g juicy-repl
# with yarn
yarn global add juicy-repl
Example 1: out of the box quick start
juicy
Example 2: with command line args
juicy --port 80 --detach false --processTitle "custom-repl" --replPageTitle "My Custom REPL" --hideHeader true
Example 3: with config file
juicy --config "~/REPL_CONFIG.json"
Example 4: with config file added environment variables
# add to ~/.bash_profile
export JUICY_CONFIG=~/REPL_CONFIG.json
juicy
Install juicy-repl
# with npm
npm install --save juicy-repl
# with yarn
yarn add juicy-repl
const juicy = require('juicy-repl');
// supply any, all, or no options
const options = { ... };
juicy(options)
.then((app) => {
// extend express app
app.get('/custom/api', res.json({ data: 'custom' }));
});
{
packages: [
'ramda',
'joi',
'lodash',
'bluebird',
'moment',
'uuid'
],
aliases: {
ramda: [
'R',
'Ramda'
],
lodash: [
'_'
],
bluebird: [
'Promise'
]
},
configPath: null,
port: 3000,
detach: true,
processTitle: 'juicy-repl',
replPageTitle: 'Juicy REPL',
gaid: null,
hideHeader: false,
spinnerPath: null,
spinnerBgColor: null,
faviconPath: null,
headerLogoPath: null,
headerTitle: null,
headerSubtitle: 'A JavaScript REPL that feels like an IDE',
headerColor: null,
headerFontColor: null
};
- packages
- aliases
- configPath
- port
- detach
- processTitle
- replPageTitle
- gaid
- hideHeader
- spinnerPath
- spinnerBgColor
- faviconPath
- headerLogoPath
- headerTitle
- headerSubtitle
- headerColor
- headerFontColor
Type: Array<String>
Description: A list of npm packages to include when building the REPL.
Default value:
[
'ramda',
'joi',
'lodash',
'bluebird',
'moment',
'uuid'
]
Type: Object<String, Array<String>>
Description: Specify one or more aliases to expose as global variables for the packages.
Default value:
{
ramda: [
'R',
'Ramda'
],
lodash: [
'_'
],
bluebird: [
'Promise'
]
}
Type: String
Description: Absolute path to config file.
Default value: null
Command Line: --configPath '~/REPL_CONFIG.json'
Type: Number
Description: The port number the REPL server will be exposed on.
Default value: 3000
Command Line: --port 80
Type: Boolean
Description: If true, then the REPL server will detach into a child process and allow the main process to exit. Otheriwse the main process will suspend while the REPL server is running. It is suggested to set detach
to false
if using nohup
or a process manager such as forever
or pm2
.
Default value: true
Command Line: --detach false
Type: String
Description: The process.title
for the REPL server process.
Default value: 'juicy-repl'
Command Line: --processTitle 'my-custom-repl'
Type: String
Description: The document.title
for the REPL browser app.
Default value: 'Juicy REPL'
Command Line: --replPageTitle 'My REPL'
Type: String
Description: Google Analytics ID. If set, then google analytics script is added to the page.
Default value: null
Command Line: --gaid 'UA-112996224-1'
Type: Boolean
Description: If true, then the header of the REPL will be hidden.
Default value: false
Command Line: --hideHeader true
Type: String
Description: Set to absolute path of image to loading spinner.
Default value: null
Command Line: --spinnerPath '/Users/myuser/images/spinner.gif'
Type: String
Description: If set, then the spinner will have a circular background filled with this color
Default value: null
Command Line: --spinnerBgColor '#FFFFFF'
Type: String
Description: Set to absolute path of image to override the favicon.
Default value: null
Command Line: --faviconPath '/Users/myuser/images/favicon.ico'
Type: String
Description: Set to absolute path of image to override logo in header.
Default value: null
Command Line: --headerLogoPath '/Users/myuser/images/my-repl-logo.png'
Type: String
Description: Overrides the title in the header. Use 'none' to hide the title.
Default value: null
Command Line: --headerTitle 'My REPL'
Type: String
Description: The subtitle in the header. Use 'none' to hide the subtitle.
Default value: 'A JavaScript REPL that feels like an IDE'
Command Line: --headerSubtitle 'powered by Juicy'
Type: String
Description: If set, overrides the backgorund color of the header.
Default value: null
Command Line: --headerColor '#FF0000'
Type: String
Description: If set, overrides the font color of the header.
Default value: null
Command Line: --headerFontColor '#FFFFFF'
git clone https://github.com/djorg83/juicy
cd juicy
yarn dev