您可以將這些函數放入global
變量(該節點的版本爲window
),然後使用-r
選項。
# utils.coffee
global.pp = (obj) -> JSON.stringify(obj)
然後運行,在相同的直接的utils.coffee:
coffee -r ./utils
應該啓動CoffeeScript的REPL,並有可以作爲全局變量的pp
功能:
coffee> pp ohmy: 'neat'
'{"ohmy":"neat"}'
更新:它似乎是-r
命令行選項was removed in CoffeeScript's master。這可能並不意味着使用這種方式:(
更新2!還有另一種方式來做到這一點,它不依賴於任何特定的命令參數:
{ echo "require './utils'"; cat; } | coffee
它但是,它不會像Coffee REPL那樣100%工作,例如箭頭鍵似乎不起作用。
編輯(jc):使用此方法,您可以爲節點進行卸載,即得心應手:
# utils.coffee
global.unload = (moduleName) ->
cacheName = require.resolve(moduleName)
delete require.cache[cacheName]
$ coffee -r ~/Dev/utils.coffee
coffee> unload
[Function]
更新3:另一種可能性是「創建自己的REPL」。沒有真正重新實現任何東西。基於this hacky solution,你可以這樣做:
#! /usr/bin/env coffee
# REPL functions.
global.pp = (obj) -> JSON.stringify(obj)
# Start the REPL.
require 'coffee-script/lib/coffee-script/repl'
,然後使用該腳本作爲新的REPL。它的工作完全一樣的普通咖啡REPL加上新功能(帶有箭頭鍵也不TAB完成:)
BTW沒有問題,我想你會需要有沒有-g
選項安裝上npm
對於工作的CoffeeScript 。
雖然這是一個非常hacky的解決方案。它依賴於內部的CoffeeScript實現文件結構及其功能,並且可以在任何時候改變(事實上,我知道在基於Node的一個新的改進的Coffee REPL中已經完成了一些工作......我希望該功能暴露出來以編程方式使用,所以這些黑客不再是黑客)。
謝謝。誹謗它被刪除。我希望Coffee REPL更像irb。我會使用這種技術,只是在命令行別名咖啡 - 直到它消失:( – jcollum 2013-02-15 16:33:06
@jcollum我再次更新我的答案:)。順便說一句,當我發現'-r'選項被刪除,我[問unix.stackexchange](http://unix.stackexchange.com/questions/64841/how-to-send-text-toa-a-然後從終端讀命令)如何將一些文本發送到命令的stdin,然後讓命令繼續讀取終端。也許這些答案也是你感興趣的:) – epidemian 2013-02-16 11:03:39