2013-10-17 75 views
10

我想知道是否有任何節點框架或節點lib可用於編寫shell腳本?例如,我有bash shell程序來安裝Graphite和OpenTSDB RRD工具,我想爲它使用node.js,這有可能嗎?使用Node.js的Shell腳本

感謝

回答

9

看看shelljs - 它implemets外殼和GNU的coreutils樣功能。 加上咖啡的腳本,它可以看起來非常類似於一個shell腳本:

if not which 'git' 
    echo 'Sorry, this script requires git' 
    exit 1 

# Copy files to release dir 
mkdir '-p', 'out/Release' 
cp '-R', 'stuff/*', 'out/Release' 

# Replace macros in each .js file 
cd 'lib' 
for file in ls '*.js' 
    sed '-i', 'BUILD_VERSION', 'v0.1.2', file 
    sed '-i', /.*REMOVE_THIS_LINE.*\n/, '', file 
    sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat 'macro.js', file 
cd '..' 

# Run external tool synchronously 
if (exec 'git commit -am "Auto-commit"').code != 0 
    echo 'Error: Git commit failed' 
    exit 1 
+0

謝謝@Andrey Sidorov,看起來很有希望,我會試試這個lib。 –

1

有很多種,其中最流行的有commander

npm install --save commander 

然後寫命令是很容易的:

#!/usr/bin/env node 

var program = require('commander'); 

program 
    .version('0.0.1') 
    .option('-f, --foo', 'enable some foo') 
    .option('-b, --bar', 'enable some bar') 
    .option('-B, --baz', 'enable some baz'); 

program.on('--foo', function(){ 
    console.log('Stuff!'); 
}); 
+1

這不是我所期待的。我正在尋找一個可以幫助我編寫shell腳本的節點框架。例如:我有這個腳本寫在bash https://github.com/gdbtek/setup-graphite/blob/master/ubuntu.bash,我想在節點中做到這一點。如果使用Node.js太多了,我認爲留在bash腳本中會更好。 –

3

你應該看看grunt這是一個工具包幫助人們在node.js中編寫構建和其他腳本。有很多插件可以幫助您輕鬆做出有趣的事情。

這就是說,如果你知道Bash,我會堅持bash。

看看這個interesting thread on Twitter about Bash vs. Grunt scripting

我用咕嚕對於

  • 運行皮棉工具
  • 運行JS單元測試
  • 運行預處理器(薩斯require.js,醜化等)

我使用Capistrano的*對於

  • 部署代碼,生產環境

我運用Bash **

  • 設置服務器並運行它們,等

  • *capistrano +混帳或chef或任何
  • ** bash或任何其他工具,你想使用
+1

你能解釋一下爲什麼你會堅持bash,如果我已經知道Bash?使用bash over grunt有什麼好處? –

+1

1.在服務器上執行二進制程序在異步JavaScript中顯着困難,因爲它在bash中。 2. Grunt/node.js仍然是1.0之前的版本,並且具有不斷變化的API(比節點更加糟糕)3. Bash是許多系統上可用的通用工具,而node.js和grunt不可能安裝在許多系統上。 –

+0

Docker https://www.docker.com/雖然削減了所有這一切。 (**和*) – Quickredfox