2013-10-17 7 views
10

Ich frage mich, ob es irgendwelche Knoten-Framework oder Node-Lib gibt, die ich verwenden kann, um ein Shell-Skripte zu schreiben? Zum Beispiel habe ich ein Bash-Shell-Programm, um Graphite- und OpenTSDB-RRD-Tools zu installieren, ich würde gerne node.js dafür verwenden, ist das möglich?Shell Scripting mit Node.js

Dank

Antwort

9

Werfen Sie einen Blick auf shelljs verwenden möchten - es implemets Shell und Gnu coreutils-ähnliche Funktionen . Zusammen mit Coffeescript kann es sehen sehr ähnlich wie ein Shell-Skript:

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

danke @Andrey Sidorov, sehen sehr vielversprechend aus, ich werde diese lib ausprobieren. –

1

Es gibt viele, gehören zu den beliebtesten ist es commander

npm install --save commander 

Dann den Befehl zu schreiben ist ziemlich einfach:

#!/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

Dies ist nicht ganz ich suche. Ich suche nach einem Knoten-Framework, das mir helfen kann, Shell-Skript zu schreiben. Zum Beispiel: Ich habe dieses Skript in Bash https://github.com/gdbtek/setup-graphite/blob/master/ubuntu.bash geschrieben und ich möchte dies in Knoten machen. Wenn es zu viel ist, Node.js zu verwenden, denke ich, es wäre besser für mich, im Bash-Scripting zu bleiben. –

3

Sie sollten grunt prüfen, welche ein Toolkit um Leuten zu helfen, Build- und andere Skripte in node.js zu schreiben. Es gibt eine Menge Plugins, die Ihnen helfen, interessante Dinge zu tun.

Das gesagt, wenn Sie Bash kennen, würde ich einfach bei Bash bleiben.

Schauen Sie sich diese interesting thread on Twitter about Bash vs. Grunt scripting

Was ich verwenden Grunt Für

  • Lauf Lint Werkzeuge
  • Lauf JS Einheit Tests
  • Lauf Pre-Prozessoren (sass, require.js, verunstalten usw.)

Was ich Capistrano verwenden * Für

  • Produktionsumgebungen implementieren Code

Was verwende ich Bash ** für

  • Server einrichten und laufen ihnen usw.

  • *capistrano + git oder chef oder was auch immer
  • ** bash oder was auch immer andere Werkzeuge würden Sie
+1

Würden Sie bitte mehr erklären, warum Sie bei bash bleiben würden, wenn ich Bash bereits kenne? Gibt es irgendwelche Vorteile der Verwendung von Bash über Grunt? –

+1

1. Das Ausführen von Binärprogrammen auf Ihrem Server ist in asynchronem JavaScript wesentlich schwieriger als in bash. 2. Grunt/node.js sind immer noch vor 1.0 und haben wechselnde APIs (grunzen mehr als Knoten) 3. Bash ist ein Allzweck-Tool, das auf vielen Systemen verfügbar ist, während node.js und grunt wahrscheinlich nicht auf vielen Systemen installiert werden. –

+0

Docker https://www.docker.com/ schneidet eine Menge Crust aus all dem heraus. (** und *) – Quickredfox

Verwandte Themen