启动node.js repl的脚本

时间:2011-07-20 22:20:18

标签: node.js startup read-eval-print-loop rc startupscript

有没有办法配置node.js的repl?我想在repl启动时自动要求jquery和下划线。是否有一个文件(noderc?)node.js在启动repl时加载?

Python中的等价物是使用:

编辑~/.ipython/ipy_user_conf.py
import_mod('sys os datetime re itertools functools')

4 个答案:

答案 0 :(得分:17)

我不知道任何此类配置文件,但如果您希望模块foobar在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获取以供检查的源代码)或其他:)

答案 1 :(得分:4)

我今天尝试了这个,但是.start需要一个论点。我认为useGlobal:true很重要。我结束了:

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

将此代码保存在test.js我可以执行node test.js,然后在REPL中访问myObj

答案 2 :(得分:3)

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 prefs) - 类似于:

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

现在,要使用此配置,只需从命令行键入noder即可。上面,我还指出我总是喜欢在strict mode,并且不希望undefined打印到控制台以进行声明等。

有关repl及其他repl.start选项的最新信息,请参阅here

答案 3 :(得分:1)

保持简单,这就是我的抨击。

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。周围。