Привет всем, я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.
Эта статья была впервые опубликована в "Официальный сайт Луожу", синхронизировано с официальным аккаунтом"Дом утреннего чая в Луочжу"а также"Колонка самородков".