有没有办法配置node.js的repl?我想在repl启动时自动要求jquery和下划线。是否有一个文件(noderc?)node.js在启动repl时加载?
Python中的等价物是使用:
编辑~/.ipython/ipy_user_conf.py
import_mod('sys os datetime re itertools functools')
答案 0 :(得分:17)
我不知道任何此类配置文件,但如果您希望模块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获取以供检查的源代码)或其他:)
答案 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。周围。