При слиянии веток всегда вызывает проблемы файл package-lock.json. Напишем простое демонстрационное приложение для Node.JS, которое будет облегчать работу с git-репозиторием. В его задачи входит удаление проблемного файла, его восстановление с помощью команды npm install и добавление в индекс git.
Вы можете найти готовое приложение здесь. Чтобы его запустить, используйте команду npx fix-package-lock .
Как взаимодействовать с командной строкой?
Чтобы передавать команды в терминал из скрипта, будем использовать пакет execa от Sindre Sohrus, который называют “лучшим child_process”. Для начала работы нужно выполнить команду npm install –save execa .
Теперь протестируем новый модуль.
>> node index.js
index.js
node_modules
package-lock.json
package.json
Выполнение последовательных действий
Чтобы сгенерировать package-lock, его сначала нужно удалить. После этого необходимо заново установить пакеты с помощью команды npm install .
Для выполнения нескольких действий подряд потребуется модуль Listr. Он позволяет делать нечто подобное:
Запустите npm install –save listr и создайте в главном файле последовательность команд.
Содержимое файла index.js :
Теперь вывод node index.js будет выглядеть следующим образом:
Длительные задачи, например, вызов execa для установки npm-пакетов, возвращают Promise. Listr выводит для них состояние выполнения. Также есть возможность отображать сообщение, которое изменяется с помощью Observables. Дополнительную информацию можно найти в документации.
Исполняемые js-файлы
Было бы гораздо удобнее запускать скрипт, используя ./index.js вместо node index.js . Чтобы сделать так, файл должен быть исполняемым. В UNIX системах для этого используется следующая команда:
chmod +x index.js
Теперь нужно сообщить системе, как она должна пытаться запустить файл, с помощью шебанга.
Его нужно добавить в файл index.js:
Теперь мы можем запускать приложение короткой командой:
Создание исполняемого файла
В файле package.json есть поле bin . Оно дает npm команду создать исполняемый файл и установить его в PATH. Добавим эту опцию в наше приложение:
Публикация npm-пакета
Публикация модуля остается упражнением для читателя. Используя команду np , сделать это несложно.
Подсказка: просто запустите npx np в любом пакете, который вы пытаетесь опубликовать.
Готовое приложение можно найти здесь. Чтобы запустить его, используйте команду npx fix-package-lock .