Есть ли способ, чтобы узел сохранял историю командной строки между сессиями?
Когда я бегу 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
.. и я в порядке!
Надеюсь это поможет!
Я нашел хороший маленький проект, который решает проблему:
установить используя 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 с узлом, как и ожидалось.