Screenshots: All in one
Читать на других языках: Русский, Українська.
- Инициализируй npm в проекте
- В корне проекта создай файл
index.js
- Поставь пакет nodemon как зависимость разработки (devDependencies)
- В файле
package.json
добавь "скрипты" для запускаindex.js
- Скрипт
start
который запускаетindex.js
с помощьюnode
- Скрипт
start:dev
который запускаетindex.js
с помощьюnodemon
В корне проекта создай папку db
. Для хранения контактов скачай и используй
файл contacts.json, положив его в папку db
.
В корне проекта создай файл contacts.js
.
- Сделай импорт модулей
fs
иpath
для работы с файловой системой - Создай переменную
contactsPath
и запиши в нее путь к файлеcontacts.json
. Для составления пути используй методы модуляpath
. - Добавь функции для работы с коллекцией контактов. В функциях используй модуль
fs
и его методыreadFile()
иwriteFile()
- Сделай экспорт созданных функций через
module.exports
// contacts.js
/*
* Раскомментируй и запиши значение
* const contactsPath = ;
*/
// TODO: задокументировать каждую функцию
function listContacts() {
// ...твой код
}
function getContactById(contactId) {
// ...твой код
}
function removeContact(contactId) {
// ...твой код
}
function addContact(name, email, phone) {
// ...твой код
}
Сделай импорт модуля contacts.js
в файле index.js
и проверь
работоспособность функций для работы с контактами.
В файле index.js
импортируется пакет yargs
для удобного парса аргументов
командной строки. Используй готовую функцию invokeAction()
которая получает
тип выполняемого действия и необходимые аргументы. Функция вызывает
соответствующий метод из файла contacts.js
передавая ему необходимые
аргументы.
// index.js
const argv = require('yargs').argv;
// TODO: рефакторить
function invokeAction({ action, id, name, email, phone }) {
switch (action) {
case 'list':
// ...
break;
case 'get':
// ... id
break;
case 'add':
// ... name email phone
break;
case 'remove':
// ... id
break;
default:
console.warn('\x1B[31m Unknown action type!');
}
}
invokeAction(argv);
Так же, вы можете использовать модуль
commander для парсинга аргументов
командной строки. Это более популярная альтернатива модуля yargs
const { Command } = require('commander');
const program = new Command();
program
.option('-a, --action <type>', 'choose action')
.option('-i, --id <type>', 'user id')
.option('-n, --name <type>', 'user name')
.option('-e, --email <type>', 'user email')
.option('-p, --phone <type>', 'user phone');
program.parse(process.argv);
const argv = program.opts();
// TODO: рефакторить
function invokeAction({ action, id, name, email, phone }) {
switch (action) {
case 'list':
// ...
break;
case 'get':
// ... id
break;
case 'add':
// ... name email phone
break;
case 'remove':
// ... id
break;
default:
console.warn('\x1B[31m Unknown action type!');
}
}
invokeAction(argv);
Запусти команды в терминале и сделай отдельный скриншот результата выполнения каждой команды.
# Получаем и выводим весь список контактов в виде таблицы (console.table)
node index.js --action list
# Получаем контакт по id
node index.js --action get --id 5
# Добавялем контакт
node index.js --action add --name Mango --email [email protected] --phone 322-22-22
# Удаляем контакт
node index.js --action remove --id=3
Скриншоты выполнения команд, можно залить на любой бесплатный облачный сервис хранения картинок (Пример: monosnap, imgbb.com) и соответствующие ссылки необходимо добавить в файл README.md. Создайте этот файл в корне проекта. После прикрепите ссылку на репозиторий с домашним заданием в schoology для проверки ментором.
- Создан репозиторий с домашним заданием — CLI приложение
- Задание отправлено ментору в schoology на проверку (ссылка на репозиторий)
- Код соответствует техническому заданию проекта
- При выполнении кода не возникает необработанных ошибок
- Название переменных, свойств и методов начинается со строчной буквы и записываются в нотации CamelCase. Используются английские существительные
- Название функции или метода содержит глагол
- В коде нет закомментированных участков кода
- Проект корректно работает в актуальной LTS-версии Node