Скрипт запуска для repl node.js - PullRequest
19 голосов
/ 21 июля 2011

Есть ли способ настроить repl для node.js? Я хочу требовать jquery и подчеркивание автоматически при запуске repl. Есть ли файл (noderc?), Который загружает node.js при запуске repl?

Эквивалентом в Python является редактирование ~/.ipython/ipy_user_conf.py с помощью:

import_mod('sys os datetime re itertools functools')

Ответы [ 5 ]

17 голосов
/ 21 июля 2011

Я не знаю ни одного такого файла конфигурации, но если вы хотите, чтобы модули foo и bar были доступны в REPL, вы можете создать файл myrepl.js, содержащий:

var myrepl = require("repl").start();
["foo", "bar"].forEach(function(modName){
    myrepl.context[modName] = require(modName); 
});

и вы, когда вы выполните его с помощью node myrepl.js, получите REPL с этими доступными модулями.

Вооружившись этим знанием, вы можете поставить #!/path/to/node вверху и сделать его исполняемым напрямую, или выизмените вашу версию модуля repl.js (источник доступен по адресу https://github.com/joyent/node/blob/master/lib/repl.js для проверки) или как угодно:)

4 голосов
/ 05 октября 2012

Я попробовал это сегодня, но .start потребовал аргумент.Также я думаю, что useGlobal:true было важно.Я закончил, используя:

var myrepl=require('repl').start({useGlobal:true});
myrepl.context['myObj']=require('./myObject');

Сохранение этого кода в test.js Я мог бы сделать node test.js, затем получить доступ к myObj в REPL.

3 голосов
/ 20 февраля 2017

Фев 2017 - хотя я согласен с принятым ответом, хотел бы добавить еще немного комментариев здесь.

Подобно настройке следующим образом (из домашнего каталога на моем Mac)

.node ├── node_modules │ ├── lodash │ └── ramda ├── package.json └── repl.js

Тогда repl.js может выглядеть следующим образом:

const repl = require('repl');

let r = repl.start({
  ignoreUndefined: true,
  replMode: repl.REPL_MODE_STRICT
});

r.context.lodash = require('lodash');
r.context.R = require('ramda');
// add your dependencies here as you wish..

И, наконец, поместите псевдоним в файл .bashrc или .zshrc и т. Д. (в зависимости от настроек вашей оболочки) - что-то вроде:

alias noder='node ~/.node/repl.js'

Теперь, чтобы использовать эту конфигурацию, вам просто нужно набрать noder из командной строки.Выше я также указал, что всегда хотел бы быть в strict mode, и не хочу, чтобы undefined выводился на консоль для объявлений и т. Д.

Для получения актуальной информации о replи в частности repl.start варианты см. здесь

3 голосов
/ 24 ноября 2015

Возможно, это более новая функция Node.js (поскольку этому вопросу уже четыре года), но вы можете загружать и сохранять историю реплик , как ipython.

.break - While inputting a multi-line expression, sometimes you get lost or just don't care about completing it. .break will start over.
.clear - Resets the context object to an empty object and clears any multi-line expression.
.exit - Close the I/O stream, which will cause the REPL to exit.
.help - Show this list of special commands.
.save - Save the current REPL session to a file
    .save ./file/to/save.js
.load - Load a file into the current REPL session.
    .load ./file/to/load.js

Я могуНе могу понять, как выполнить это автоматически при запуске оболочки, но .load something достаточно удобно для меня на данный момент.

1 голос
/ 06 декабря 2016

Проще говоря, вот что я написал.

repl.js:

// things i want in repl
global.reload = require('require-nocache')(module) // so I can reload modules as I edit them
global.r = require('ramda') // <3 http://ramdajs.com/
// launch, also capture ref to the repl, in case i want it later
global.repl = require('repl').start()

Я могу вызвать это с node repl, что кажется правильным, и мне наплевать на глобалы, потому что я просто бездельничаю в реплее.

...