Есть ли способ, чтобы узел сохранял историю командной строки между сессиями?

Когда я бегу node из командной строки без аргументов я ввожу интерактивную оболочку. Если я выполняю некоторые команды, покидаю узел и перезапускаю узел, стрелка вверх ничего не делает (я бы хотел прокрутить мои предыдущие команды).

Есть ли способ, которым я могу вызвать узел интерактивно, чтобы он запомнил мои старые команды?

5 ответов

Решение

Вы можете использовать rlwrap для хранения команд REPL node.js в файле истории.

Во-первых, установите rlwrap (это легко сделать с помощью менеджера пакетов, такого как apt-get или brew и т. Д.).

Затем добавьте псевдоним для узла:

alias node='env NODE_NO_READLINE=1 rlwrap node'

Я на OSX, поэтому я добавляю этот псевдоним в мой ~/.bash_profile файл, и перезагрузил бы мой файл bash_profile через source ~/.bash_profile.. и я в порядке!

Надеюсь это поможет!

Я нашел хороший маленький проект, который решает проблему:

https://www.npmjs.org/package/repl.history

установить используя npm (npm install -g repl.history) и беги repl.history в командной строке.

Также проверьте файл.node_repl_history в домашнем каталоге пользователя.

io.js 2.0 включает поддержку постоянной истории REPL.

env NODE_REPL_HISTORY_FILE=$HOME/.node_history iojs

Максимальная длина истории может быть установлена ​​с NODE_REPL_HISTORY_SIZE, который по умолчанию равен 1000.

В io.js 3.0+ история REPL включена по умолчанию и NODE_REPL_HISTORY_FILE не рекомендуется в пользу NODE_REPL_HISTORY (дефолт: ~/.node_repl_history).

Узел поддерживает это изначально.

Находясь в узле REPL, просто введите следующую команду, чтобы сохранить историю:

$> .save ./file/to/save.js

Справка: Команды и специальные клавиши

Мне нравится сочетание ответов dreampulse и badsyntax. С repl.history, плюс добавление к моему.bash_profile, я получаю ожидаемое поведение: подсветку истории команд и синтаксиса в интерактивной оболочке узла, но в обход repl при вызове с аргументами (для запуска скрипта).

npm install -g repl.history

Затем отредактируйте ваш ~/.bash_profile, добавив:

function node(){
    if test "$#" -lt 1; then repl.history
    else env node $@; fi; }

Теперь перезапустите вашу оболочку или запустите . ~/.bash_profile и ты в порядке.


Сейчас работает

$ node

откроет интерактивную оболочку repl.history nodejs и

$ node program.js [...]

запустит program.js с узлом, как и ожидалось.

Другие вопросы по тегам