我有一个脚本foo.js
,其中包含我想在 REPL 中使用的一些函数。
有没有办法让节点执行我的脚本,然后像我可以使用python -i foo.py
或那样使用所有声明的全局变量跳转到 REPL 中ghci foo.hs
?
我有一个脚本foo.js
,其中包含我想在 REPL 中使用的一些函数。
有没有办法让节点执行我的脚本,然后像我可以使用python -i foo.py
或那样使用所有声明的全局变量跳转到 REPL 中ghci foo.hs
?
仍然没有任何内置功能可以提供您描述的确切功能。但是,使用require
它来使用REPL 中的.load
命令的替代方法,例如:
.load foo.js
它逐行加载文件,就像您在 REPL 中键入它一样。与require
此不同的是,您加载的命令会污染 REPL 历史记录。但是,它具有可重复的优点,因为它不像require
.
哪个更适合您将取决于您的用例。
编辑:它的适用性有限,因为它不能在严格模式下工作,但三年后我了解到,如果您的脚本没有'use strict'
,您可以使用eval
加载您的脚本而不会污染 REPL 历史记录:
var fs = require('fs');
eval(fs.readFileSync('foo.js').toString())
我总是使用这个命令
node -i -e "$(< yourScript.js)"
与 Python 完全一样,没有任何包。
我制作了Vorpal.js,它通过将您的节点添加到交互式 CLI 来处理这个问题。它支持 REPL 扩展,可将您带入正在运行的应用程序上下文中的 REPL。
var vorpal = require('vorpal')();
var repl = require('vorpal-repl');
vorpal
.delimiter('myapp>')
.use(repl)
.show()
.parse(process.argv);
然后你可以运行该应用程序,它会进入一个 REPL。
$ node myapp.js repl
myapp> repl:
另一种方法是将这些函数定义为全局函数。
global.helloWorld = function() { console.log("Hello World"); }
然后将 REPL 中的文件预加载为:
node -r ./file.js
然后helloWorld
可以直接在 REPL 中访问该函数。
我创建了replpad,因为我厌倦了反复重新加载脚本。
只需通过以下方式安装: npm install -g replpad
然后通过运行使用它: replpad
如果您希望它查看当前和所有子目录中的所有文件,并在它们更改时将它们通过管道传输到 repl,请执行以下操作: replpad .
查看网站上的视频以更好地了解它的工作原理,并了解它具有的其他一些不错的功能,例如:
dox()
添加到每个核心功能的功能访问 repl 中的核心module文档,即fs.readdir.dox()
dox()
添加到通过 npm 安装的每个module的功能访问 repl 中的用户module自述文件,即marked.dox()
src
添加到每个函数的属性,即express.logger.src
.talk
命令).append
命令将在 repl 中输入的代码附加回文件