2011-07-20 20 views
17

Có cách nào định cấu hình repl của node.js không? Tôi muốn yêu cầu jquery và gạch dưới tự động bất cứ khi nào repl bắt đầu. Có một tập tin (noderc?) Mà node.js tải khi nó bắt đầu repl?Kịch bản khởi động cho node.js repl

Tương đương bằng Python là để chỉnh sửa ~/.ipython/ipy_user_conf.py với:

import_mod('sys os datetime re itertools functools') 

Trả lời

16

Tôi không biết về bất kỳ tập tin cấu hình như vậy, nhưng nếu bạn muốn có module foobar có sẵn trong một REPL, bạn có thể tạo ra một tập tin myrepl.js chứa:

var myrepl = require("repl").start(); 
["foo", "bar"].forEach(function(modName){ 
    myrepl.context[modName] = require(modName); 
}); 

và bạn khi bạn thực hiện nó với node myrepl.js bạn nhận được một REPL với những mô-đun có sẵn.

vũ trang với kiến ​​thức này bạn có thể đặt #!/path/to/node ở phía trên và làm cho nó thực thi trực tiếp, hoặc bạn có thể sửa đổi các phiên bản của mô-đun repl.js (nguồn sẵn có tại https://github.com/joyent/node/blob/master/lib/repl.js để kiểm tra) hoặc bất cứ điều gì :)

+0

Tuyệt vời! Tôi đã tạo một biến thể tải các mô-đun bằng bí danh. var modules = {jquery: '$', dấu gạch dưới: '_und'}; cho (var mod in modules) { my_repl.context [modules [mod]] = require (mod); } – hekevintran

4

tôi đã thử điều này ngày hôm nay nhưng .start yêu cầu một đối số. Ngoài ra tôi nghĩ rằng useGlobal:true là quan trọng. Tôi vết thương bằng cách sử dụng:

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

Saving mã này trong test.js tôi có thể làm một node test.js sau đó truy cập myObj trong REPL.

+0

Tôi cần điều này để có được ví dụ của @ nicolaskruchten đang hoạt động. Cảm ơn cả hai! – Nate

2

Có thể là một tính năng mới hơn của Node.js (vì câu hỏi này là bốn tuổi), nhưng you can load and save repl history như ipython.

.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 

Tôi không thể biết cách thực hiện điều này tự động khi bắt đầu trình bao, nhưng .load something đủ thuận tiện cho tôi vào lúc này.

1

Giữ mọi thứ đơn giản dưới đây là những gì tôi đã thu thập.

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() 

Tôi có thể gọi điều này với node repl mà cảm thấy đúng, và tôi không quan tâm đến toàn thể, bởi vì tôi chỉ messin' xung quanh trong repl.

2

tháng 2 năm 2017 - trong khi tôi đồng ý với câu trả lời được chấp nhận, muốn thêm một chút bình luận ở đây.

Giống như để thiết lập như sau (từ thư mục home trên máy Mac của tôi)

.node ├── node_modules │   ├── lodash │   └── ramda ├── package.json └── repl.js

Sau đó repl.js có thể trông giống như sau:

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.. 

Và cuối cùng, hãy đặt một bí danh vào .bashrc hoặc .zshrc của bạn tập tin vv (tùy thuộc vào prefs shell của bạn) - cái gì đó như:

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

Bây giờ, để sử dụng cấu hình này, bạn chỉ cần nhập noder từ dòng lệnh. Ở trên, tôi cũng đã xác định rằng tôi luôn muốn được ở strict mode, và không muốn undefined in ra cửa sổ Console cho tờ khai, vv

Để biết thông tin up-to-date trên repl và đặc biệt repl.start tùy chọn thấy here