Πώς μπορώ να περάσω ορίσματα γραμμής εντολών σε ένα πρόγραμμα Node.js;

Έχω έναν διακομιστή ιστού γραμμένο σε Node.js και θα ήθελα να τον εκκινήσω με έναν συγκεκριμένο φάκελο. Δεν είμαι σίγουρος για το πώς μπορώ να έχω πρόσβαση σε επιχειρήματα στην JavaScript. Εκτελώ τον κόμβο ως εξής: I'm running node like this:

$ node server.js folder

Εδώ το server.js είναι ο κώδικας του διακομιστή μου. Η βοήθεια του Node.js λέει ότι αυτό είναι δυνατό:

$ node -h
Usage: node [options] script.js [arguments]

Πώς θα είχα πρόσβαση σε αυτά τα ορίσματα σε JavaScript; Με κάποιο τρόπο δεν μπόρεσα να βρω αυτές τις πληροφορίες στο διαδίκτυο.

Λύση

Τυπική μέθοδος (χωρίς βιβλιοθήκη)

Τα ορίσματα αποθηκεύονται στο αρχείο process.argv.

Ακολουθούν τα έγγραφα του κόμβου για το χειρισμό των args της γραμμής εντολών:

Το process.argv είναι ένας πίνακας που περιέχει τα ορίσματα της γραμμής εντολών. Το πρώτο στοιχείο θα είναι το 'node', το δεύτερο στοιχείο θα είναι το όνομα του αρχείου JavaScript. Τα επόμενα στοιχεία θα είναι τυχόν πρόσθετα ορίσματα της γραμμής εντολών.

// print process.argv
process.argv.forEach(function (val, index, array) {
  console.log(index + ': ' + val);
});

Αυτό θα δημιουργήσει:

$ node process-2.js one two=three four
0: node
1: /Users/mjr/work/node/process-2.js
2: one
3: two=three
4: four
Σχόλια (8)

Για να ομαλοποιήσω τα ορίσματα όπως θα λάμβανε μια κανονική συνάρτηση javascript, το κάνω αυτό στα σενάρια κελύφους node.js:

var args = process.argv.slice(2);

Σημειώστε ότι το πρώτο arg είναι συνήθως η διαδρομή προς το nodejs και το δεύτερο arg είναι η τοποθεσία του script που εκτελείτε.

Σχόλια (12)

Αισιόδοξος (node-optimist)

Ελέγξτε την optimist library, είναι πολύ καλύτερη από την ανάλυση των επιλογών της γραμμής εντολών με το χέρι.

Ενημέρωση

Το Optimist έχει ξεπεραστεί. Δοκιμάστε το yargs το οποίο είναι ένα ενεργό fork του optimist.

Σχόλια (4)