Подтвердить что ты не робот

Запуск script для node.js repl

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

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

import_mod('sys os datetime re itertools functools')
4b9b3361

Ответ 1

Я не знаю какого-либо такого файла конфигурации, но если вы хотите, чтобы в REPL были доступны модули foo и bar, вы можете создать файл 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 для проверки) или что-то еще:)

Ответ 2

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

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

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

Ответ 3

Может быть более новая функция 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 для меня сейчас достаточно удобен.

Ответ 4

Февраль 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 см. здесь

Ответ 5

Сохраняя вещи здесь, я собрался.

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, который чувствует себя правильно, и мне не нужны глобальные переменные, потому что я просто messin 'вокруг в repl.