juicy-repl
An extensible JavaScript REPL
Table Of Contents
Why use Juicy?
- 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!
Demo
juicy-js.com
Running using global command
Install juicy-repl
npm install -g juicy-repl
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
export JUICY_CONFIG=~/REPL_CONFIG.json
juicy
Running from within a program
Install juicy-repl
npm install --save juicy-repl
yarn add juicy-repl
const juicy = require('juicy-repl');
const options = { ... };
juicy(options)
.then((app) => {
app.get('/custom/api', res.json({ data: 'custom' }));
});
Default Options
{
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
};
Options
options.packages
Type: Array<String>
Description: A list of npm packages to include when building the REPL.
Default value:
[
'ramda',
'joi',
'lodash',
'bluebird',
'moment',
'uuid'
]
options.aliases
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'
]
}
options.configPath
Type: String
Description: Absolute path to config file.
Default value: null
Command Line: --configPath '~/REPL_CONFIG.json'
options.port
Type: Number
Description: The port number the REPL server will be exposed on.
Default value: 3000
Command Line: --port 80
options.detach
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
options.processTitle
Type: String
Description: The process.title
for the REPL server process.
Default value: 'juicy-repl'
Command Line: --processTitle 'my-custom-repl'
options.replPageTitle
Type: String
Description: The document.title
for the REPL browser app.
Default value: 'Juicy REPL'
Command Line: --replPageTitle 'My REPL'
options.gaid
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
options.spinnerPath
Type: String
Description: Set to absolute path of image to loading spinner.
Default value: null
Command Line: --spinnerPath '/Users/myuser/images/spinner.gif'
options.spinnerBgColor
Type: String
Description: If set, then the spinner will have a circular background filled with this color
Default value: null
Command Line: --spinnerBgColor '#FFFFFF'
options.faviconPath
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'
Development
git clone https://github.com/djorg83/juicy
cd juicy
yarn dev
Author
Daniel Jorgensen
Contributors