2011-07-20 15 views
17

¿Hay alguna manera de configurar el nodo node.js? Deseo solicitar jquery y guión bajo automáticamente cada vez que se inicie la réplica. ¿Hay algún archivo (noderc?) Que node.js cargue cuando inicia el repl?Secuencia de comandos de inicio para node.js repl

El equivalente en Python es editar ~/.ipython/ipy_user_conf.py con:

import_mod('sys os datetime re itertools functools') 

Respuesta

16

No sé de cualquier archivo de configuración, pero si usted quiere tener módulos foo y bar estará disponible en una REPL, puede crear un archivo que contiene myrepl.js:

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

y que cuando se ejecuta con node myrepl.js se obtiene un REPL con esos módulos disponibles.

Armado con este conocimiento se puede poner #!/path/to/node en la parte superior y hacerlo ejecutable directamente, o se puede modificar la versión del módulo repl.js (fuente disponible en https://github.com/joyent/node/blob/master/lib/repl.js para la inspección) o lo que sea :)

+0

¡Excelente! Hice una variación que carga los módulos con alias. var modules = {jquery: '$', guión bajo: '_und'}; for (var mod in modules) { my_repl.context [modules [mod]] = require (mod); } – hekevintran

4

I intenté esto hoy pero .start requirió un argumento. También creo que el useGlobal:true fue importante. Acabé usando:

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

ahorro de este código en test.js que podía hacer un node test.js luego acceder a myObj en REPL.

+0

Necesitaba esto para que funcione el ejemplo de @ nicolaskruchten. ¡Gracias a ambos! – Nate

2

Puede ser una característica más nueva de Node.js (ya que esta pregunta tiene cuatro años), pero you can load and save repl history como 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 

no puedo encontrar la manera de ejecutar esta automáticamente al iniciar el shell, pero .load something es lo suficientemente cómodo para mí en este momento.

1

Manteniendo las cosas simples, esto es lo que dije.

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

que puede invocar esto con node repl que se siente bien, y yo no se preocupan por las globales, porque estoy solo Messin alrededor en el repl.

2

feb 2017 - aunque estoy de acuerdo con la respuesta aceptada, deseo agregar un poco más de comentario aquí.

igual a la configuración de la siguiente manera (desde el directorio home en mi Mac)

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

Entonces sust.js pueden parecerse a los siguientes:

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

Y, por último, poner un alias en el archivo de .bashrc o .zshrc etc (dependiendo de las Preferencias de concha) - algo así como:

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

Ahora, a use esta configuración, solo tiene que escribir noder desde la línea de comando. Por encima, también se especifica que siempre me gustaría estar en strict mode, y no quiero undefined impresa a la consola para las declaraciones etc.

Para obtener la información actualizada sobre repl y en particular repl.start opciones ver here

Cuestiones relacionadas