Πώς να δημιουργήσετε CLI σε πακέτα npm;

Σήμερα θέλω να μοιραστώ την εμπειρία μου στη σύνταξη διεπαφής γραμμής εντολών σε ένα έργο npm, προκειμένου να λάβουμε πληροφορίες από τον χρήστη ή να εκτελέσουμε ένα σενάριο μετά την εγκατάσταση ενός πακέτου. Για αυτό, μπορούμε να δημιουργήσουμε άλλα πακέτα με το ίδιο αποθετήριο και να τα εγκαταστήσουμε στο κύριο πακέτο.

  1. Δημιουργήστε ένα φάκελο στη ρίζα του προγράμματος και κατά προτίμηση ονομάστε τον cli.

2. Δημιουργήστε ένα φάκελο στο cli και ονομάστε τον bin

3. Δημιουργήστε το αρχείο index.js στον κάδο. Η εντολή σας ορίζεται σε αυτήν.

4. Επιστρέψτε στο cli root και εκτελέστε την ακόλουθη εντολή.

npm init --scope=<your main package name>

5. Προσθέστε shelljs ως εξάρτηση.

npm install --save shelljs

6. Προσθέστε την εντολή σας στο bin/index.js ως τις ακόλουθες γραμμές:

#! /usr/bin/env node
var shell = require("shelljs");

shell.exec("webpack-dev-server");

7. Εάν έχετε ένα σενάριο που θέλετε να εκτελέσετε, απλώς διαγράψτε το shell.exe.

#! /usr/bin/env node
var shell = require("shelljs");

console.log("hello world");

8. Βεβαιωθείτε ότι έχετε προσθέσει αυτήν τη γραμμή στο cli/package.json.

"bin": {
  "<your cli name>": "bin/index.js"
},

9. Δημοσιεύστε το πακέτο σας σε cli root.

npm publish --access=public

Τώρα έχετε μια καθολική εντολή στην εφαρμογή σας.

10. Εάν θέλετε να το προσθέσετε ως σενάρια εκτέλεσης npm, θα πρέπει να εγκαταστήσετε το πακέτο σας στην κύρια εφαρμογή σας.

npm install --save-dev @<your cli package name>/<your main package name>

Προσθέστε το στο σενάριό σας.

"scripts": {
  "start":"your cli name",
  "build": "..."
},

Βεβαιωθείτε ότι έχετε προσθέσει τις ακόλουθες γραμμές στο app/package.json, ώστε μετά την εγκατάσταση του κύριου πακέτου να προσθέσει σε αυτό το node_modules/bin για να χρησιμοποιήσει το cli.

"bin": {
  "your cli name": "cli/bin/index.js"
}