有没有办法配置node.js的repl?我想在 repl 启动时自动要求 jquery 和下划线。是否有 node.js 在启动 repl 时加载的文件(noderc?)?
Python中的等价物是编辑~/.ipython/ipy_user_conf.py
:
import_mod('sys os datetime re itertools functools')
有没有办法配置node.js的repl?我想在 repl 启动时自动要求 jquery 和下划线。是否有 node.js 在启动 repl 时加载的文件(noderc?)?
Python中的等价物是编辑~/.ipython/ipy_user_conf.py
:
import_mod('sys os datetime re itertools functools')
我不知道有任何这样的配置文件,但如果你想拥有模块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用于检查)或其他任何东西:)
我今天尝试了这个,但.start
需要一个论点。我也认为这useGlobal:true
很重要。我最终使用:
var myrepl=require('repl').start({useGlobal:true});
myrepl.context['myObj']=require('./myObject');
将此代码保存在test.js
我可以在 REPL 中进行node test.js
then 访问。myObj
2017 年2 月- 虽然我同意接受的答案,但希望在这里添加更多评论。
喜欢如下设置(从我的 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
文件等中(取决于您的 shell 首选项) - 例如:
alias noder='node ~/.node/repl.js'
现在,要使用此配置,您只需noder
从命令行键入。上面,我还指定我总是喜欢在strict mode
,并且不想undefined
打印到控制台进行声明等。
有关repl
特定repl.start
选项的最新信息,请参见此处
可能是 Node.js 的一个较新功能(因为这个问题已有四年历史了),但您可以像 ipython 一样加载和保存 repl 历史记录。
.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
我无法弄清楚如何在启动 shell 时自动执行此操作,但.load something
目前对我来说已经足够方便了。
保持简单,这就是我拼凑起来的。
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
感觉正确的方式调用它,而且我不关心全局变量,因为我只是在 repl 中乱七八糟。