Привет всем, яLuozhu 🎋., деревянный фронтенд, живущий в Ханчжоу 🧚🏻♀️, если вам понравилась моя статья 📚, вы можете помочь мне собрать духовную силу ⭐️ лайком.
Node.js имеет широкий спектр применения и обычно используется для разработки сервисов, настольных приложений и т. д. Он хорошо известен разработчикам.Node.js имеет еще один очень практичный сценарий — приложения командной строки (далее в совокупности именуемые CLI).
Исходный код, на который можно ссылаться в этой статье:На GitHub.com/ есть этот гигантский нин...
HelloWorld
Создаватьyoungjuning
каталог и войдите в этот каталог, используя:
$ mkdir youngjuning && cd youngjuning
Создайте новый в этом каталогеbin/cli.js
:
#!/usr/bin/env node
console.log('Hello World')
использоватьpackage.json
изbin
Элемент используется для указания расположения исполняемого файла, соответствующего каждой внутренней команде:
"bin": {
"youngjuning": "./bin/cli.js"
}
Введите в командной строкеnpm link
илиnpm install -g
Установите текущий проект в глобальную среду, чтобы его можно было использовать напрямую.youngjuning
для запуска файла:
commander.js
Node.js дает намprocess.argv
Для чтения параметров командной строки мы ее здесь вводить не будем.Если интересно, можете изучить сами.Я выбрал tj Godcommander:
-
command
: определите команду командной строки, за которой следует имя, разделенное пробелами, например.command( 'app [name]')
-
alias
: определить более короткую команду командной строки -
description
: описание, оно будет отображаться в справке -
option
: определение параметров. Он принимает четыре параметра- В первый параметр можно ввести короткое имя
-a
и длинные имена–app
,использовать|
или,
Разделение, при использовании в командной строке, эти два эквивалентны, разница в том, что последнее можно получить через обратный вызов в программе - Второй — описание, которое будет в
help
отображается в информации - Третий параметр — это функция обратного вызова, а параметр, который он получает, — это
string
, иногда нам нужна командная строка для создания нескольких модулей, нам нужен обратный вызов для обработки - Четвертый параметр является значением по умолчанию.
- В первый параметр можно ввести короткое имя
-
action
: Зарегистрируйтеcallback
функция, здесь следует отметить, что текущий обратный вызов не поддерживает объявление переменных let -
parse
: Разобрать командную строку
inquire.js
Плагин интерактивного ввода команд!
базовая грамматика
const answers = await inquirer.prompt([
/* Pass your questions in here */
])
console.log(answers)
Подробное объяснение параметра
-
type
: указывает тип вопроса, в том числе:input
,confirm
,list
,rawlist
,expand
,checkbox
,password
,editor
; -
name
: переменная, в которой хранится ответ на текущий вопрос; -
message
: описание проблемы; -
default
: по умолчанию; -
choices
: Список опций, доступных для определенного типа, и содержит разделитель; -
validate
: проверить ответ пользователя; -
filter
: фильтровать ответ пользователя и возвращать обработанное значение; -
transformer
: обработка эффекта отображения ответа пользователя (например: изменение шрифта или цвета фона ответа), но не влияет на содержание окончательного ответа; -
when
: По ответам на предыдущие вопросы определить, нужно ли отвечать на текущий вопрос; -
pageSize
: изменить некоторыеtype
Количество отображаемых строк под типом; -
prefix
: Исправлятьmessage
префикс по умолчанию; -
suffix
: Исправлятьmessage
Суффикс по умолчанию.
Внедрение динамических шаблонов
- использовать
recursive-readdir
Библиотека рекурсивно читает все файлы проекта - использовать
handlebars
сделать замену шаблона - использовать
fs
Модуль выполняет операции чтения и записи файлов.
const fs = require('fs')
const handlebars = require('handlebars')
const recursive = require('recursive-readdir')
const compile = (meta, file) => {
const content = fs.readFileSync(file).toString()
const result = handlebars.compile(content)(meta)
fs.writeFileSync(file, result)
}
module.exports = (meta, src) => {
recursive(src, (err, files) => {
files.forEach(file => {
compile(meta, file)
})
})
}
инструмент командной строки
- chalk.js: модуль для украшения командной строки
- ora: Elegant terminal spinner
- ncp: асинхронно копировать файлы, включая пустые папки
- recursive-readdir: рекурсивный список всех файлов в каталоге и подкаталогах, за исключением самого каталога.
- shelljs: Unix shell commands for Node.js
- log-symbols: специальный флаг для печати журнала
- download-git-repo: Download and extract a git repository (GitHub, GitLab, Bitbucket) from node
- global-prefix: получить префикс глобальных установок npm
- exec-sh: выполнить команду оболочки, чтобы перенаправить все потоки stdio, что проще в использовании, чем команду exec shelljs.
- wml:wml прослушивает изменения в папке (используя сторож) и копирует измененные файлы в другую папку.
- cmd-open: расширенная команда Windows открыта
- shx: shx is a wrapper around ShellJS Unix commands, providing an easy solution for simple Unix-like, cross-platform commands in npm package scripts.
Эта статья была впервые опубликована в "Официальный сайт Луожу", синхронизировано с официальным аккаунтом"Дом утреннего чая в Луочжу"а также"Колонка самородков".