Строим простую среду разработки
Node.JS + NVM
Для работы нам понадобится среда выполнения Node.js и менеджер версий nwp (опционально)
Node или Node.js — программная платформа, основанная на движке V8, превращающая JavaScript из узкоспециализированного языка в язык общего назначения.
Node Version Manager, чаще называемый nvm, является наиболее популярным средством установки нескольких версий Node.js
NodeJS потребуется для установки пакетов, модулей и зависимостей проекта, а NVM — для установки, удаления и переключения версий NodeJS. Переключение потребуется вам при работе с проектами, которые написаны под более новую или старую версию NodeJS.
Основные команды NVM
Список установленных версийnvm ls
Список доступных версийnvm list available
Установка последней версииnvm install latest
Установка версии из списка доступныхnvm install <version>
Переключиться на другую версиюnvm use <version>
По желанию вы можете попробовать другие менеджеры версий.
nvs (Node Version Switcher) — это кроссплатформенный вариант nvm с возможностью интеграции с VS Code.
Volta — это новый диспетчер версий, созданный командой LinkedIn. Заявлено, что он отличается увеличенной скоростью и межплатформенной поддержкой.
Структура файлов и каталогов
Для начала давайте ознакомимся с имеющееся структурой каталогов.
Была разработана достаточно продуманная структура файлов и каталогов. Она позволяет удобно взаимодействовать нескольким программам.
Псевдографическое дерево структуры
├───portfolio
└───projects
├───in-process
│ ├───builds
│ │ └───aigen31.github.io
│ ├───sources
│ └───tasks
└───ready
Описание каждого из каталогов
/portfolio (опционально) — сохранение превью для портфолио, далее они идут на публикацию на freelance-площадку.
/projects/in-proggress — проекты, находящиеся в процессе разработки или вероятнее всего будут дорабатываться.
/projects/ready — разработанные проекты.
/projects/builds — папка с собранными сборщиком проектами, которые синхронизируются с удалённым хостингом проектов (в моём случаю GitHub).
/projects/sources — проекты с исходным кодом, над которыми происходит работа.
/projects/tasks — задачи автоматизации Powershell.
Gulp для решения рутинных задач
О моей сборке
Для моих проектов и этой статьи была подготовлена сборка Gulp, вдохновлённая сборкой другого разработчика WebDesign Master. Она была доработана под общие нужды и избавлена от некоторого лишнего кода, который уже был неактуальным с новыми версиями некоторых модулей.
Её полный разбор будет в другой статье.
Основные функции сборщика
Минифицирует CSS, JS и сжимает изображения.
Конвертирует шрифты в разные форматы.
Встраивает HTML код из одного HTML файла в другой.
Запуск проекта
Загрузите проект из Git, распакуйте архив и пройдите до корневого каталога.
В корневом каталоге зайдите в контекстное меню (через ПКМ) с зажатым Shift > "Открыть с помощью Powershell".
Введите команду для разрешения исполнения неподписанных скриптов
set-executionpolicy remotesigned
Установите Gulp глобально (ключ -g)
npm i gulp -g
Инициализируете проект, вводя ваши данные
npm init
Установите зависимости для проекта
npm i
Запустите проект, используя команду
gulp
После этого начнётся запуск задач по умолчанию, в том числе запуск локального сервера BrowserSync, который мониторит изменения HTML/CSS/JS файлов и шрифтов с изображениями.
Сохранение актуальности Gulp
Чтобы данная сборка оставалась актуальной долгое время, пакеты с модулями нужно своевременно обновлять и при необходимости переписывать опции модулей в gulpfile.js.
Для этого нам нужно глобально установить пакет npm-check-updates.
npm-check-updates обновляет в package.json ваши зависимости, игнорируя указанные версии
Основные команды
Проверка версий пакетовncu
Обновление версий в packaje.jsonncu -u
После данных команд выполняем установку пакетовnpm i
Работа с Git
Git — распределённая система управления версиями. Проект был создан Линусом Торвальдсом для управления разработкой ядра Linux, первая версия выпущена 7 апреля 2005 года. На сегодняшний день его поддерживает Джунио Хамано.
Установка Git рекомендуется всем разработчикам, т. к. приходится работать не только с вашими, начатыми с нуля проектами, но и чужими, где уже имеется готовый код.
Для установки рекомендуются базовые знания английского или переводчик, так вы можете поменять настройки под себя и отключить лишние функции. К примеру я убираю пункт с установкой Git Bash.
Git Bash — это командная строка, с помощью которой пользователи могут использовать функции Git. Он эмулирует среду bash в Windows и позволяет пользователю использовать большинство стандартных команд Unix.
Загружаем и устанавливаем Git.
Основные команды
Инициализация проектаgit init
Добавление файлов в репозиторийgit add <file_name>
или точка "." (для добавления всех файлов)
Создание коммита с комментарием (ключ -m)git commit -m "comment"
Обновить удалённую ссылку со связанными объектами. Проще говоря — синхронизировать ваш локальный Git с удалённым (к примеру GitHub)git push -u origin master
(может быть main, если вы поставили данную опцию в Git)
Создание новой ветви и переход к ней (ключ -b)git checkout -b
Переход к другой ветвиgit checkout
Слияние с веткой (вы должны находиться в ветке, в которую будут включаться изменения)git merge
Это команды, которые помогут вам работать с простыми проектами и манипулировать ветками.
Автоматизация с Powershell
PowerShell — расширяемое средство автоматизации от Microsoft с открытым исходным кодом, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев.
Push в Git при мониторинге изменений
Был разработан один из базовых сценариев Powershell, который позволяет избавиться от постоянной монотонной синхронизации с удалённым хостингом Git. Он находится в папке task и мониторит папку /builds/aigen31.github.io
Он работает на основе объекта FileSystemWatcher, который мониторит изменения в указанном каталоге и вызывает по порядку команды
git status
git add .
git commit -m 'update'
git push -u origin master
Считается, что для простых проектов не стоит описывать каждый коммит, т. к. вероятнее всего, над его вёрсткой занимаетесь только вы. В ином случае стоит отказаться от данной автоматизации и писать коммиты осмыслено
Вы можете дописывать сценарии автоматизации по своему желанию, их расположение идеально подходит для манипуляции с проектами. Можете написать в комментариях, что хотели бы предложить
Репозиторий в Git
Для того, чтобы сохранять ваши работы удалённо, рекомендую использовать GitHub в качестве хоста.
Если репозиторий является веб-страницей, то её можно будет подключить к GitHub Pages и использовать в качестве хостинга статичных сайтов.
Бесплатная синхронизация с OneDrive
Сервис OneDrive от Microsoft позволяет синхронизировать рабочие папки (рабочий стол, документы, изображения) с облаком. Для сохранности своих данных рекомендуется синхронизировать в крайнем случае рабочий стол и документы, т. к. изображения на практике могут иметь большой вес, а в бесплатном тарифе OneDrive можно хранить лишь 5гб.
Для увеличения объёма хранилища до 1тб. придётся покупать пакет Office 365 (2300 и более руб./год). Это составляет около 200 руб./месяц
Другие облачные хранилища
Если сравнить Office 365 с Яндекс 360, то при оплате второго сервиса за месяц цена будет равной. Но при полной оплате за год стоимость будет сильно отличаться — 1399 руб./год В Яндекс.Диске так же имеется возможность синхронизации рабочих папок, но она отсутствует в бесплатном тарифе.
Рекомендую для начала опробовать OneDrive для синхронизации, цена не очень разная.
В облаке для безопасности я советую хранить закодированный файл-ключ менеджера паролей KeePassXC (без него мы не сможем войти в базу), о котором будет рассказано в следующем разделе.
Локальный менеджер паролей KeePassXC
KeePassXC - бесплатный менеджер паролей с открытым исходным кодом. Все началось с сообщества KeePassX. Он построен с использованием библиотек Qt5, что делает его мультиплатформенным приложением, которое можно запускать в Linux, Windows и macOS
Хранение паролей в KeePassXC и похожих менеджерах имеет ряд плюсов:
Можно добавлять пароли из таблицы CSV и любых других мест (игровые аккаунты, различные браузеры и сервисы).
Защита с помощью закодированного файла и пароля, который имеется только у вас. Его стоит хранить в нескольких местах, чтобы точно не потерять. Иначе вы утеряете доступ к базе данных.
Сортировка по группам.
Существуют онлайн менеджеры паролей и зачастую они платные. Этот менеджер хранит всё локально и он бесплатный. От подобных онлайн платформ смысл появляется тогда, когда нужно открыть /общий доступ к паролям, в нашем случае такое не требуется.
Подключение по FTP и SSH посредством встроенных функций Windows 10
FTP
Если вам не нужны все возможности различных FTP-клиентов, то вы можете спокойно подключаться к серверу через проводник с помощью этих действий:
Зайдите в контекстное меню
Выберете пункт "Добавить новый элемент в сетевое окружение"
Следуете инструкциям
SSH через OpenSSH от Microsoft
OpenSSH — это средство подключения для удаленного входа, использующее протокол SSH
Проверьте наличие OpenSSH через "Параметры" > "Приложения" > "Приложения и возможности" > "Дополнительные компоненты". Вероятнее всего, он уже будет установлен, как это было у меня, в ином случае установите клиент через пункт "Добавить компонент".
Подключение происходит с помощью следующей команды в терминалеssh username@servername
Заключение
Мы поверхностно разобрались в среде разработки для работы с HTML/CSS/JS: установили NodeJS и менеджером версий, немного изучили автоматизацию работы с помощью Gulp и Powershell (более подробный разбор будет в другой статье), узнали про применение Git для гибкого изменения проектов и их хранения на удалённом хостинге. После этой статьи некоторые разделы будут разветвляться на другие, более углублённые.
Так же не забыли про безопасность и сохранность данных, которая очень нужна, чтобы был обходной путь при потери или поломки рабочего устройства, либо же кражи или утечки информации.
Надеюсь, это было полезно для вас, спасибо за чтение статьи!
Терминология
Зависимость — объект, который может быть использован как сервис.
Инициализация — создание, активация, подготовка к работе, определение параметров. Приведение программы или устройства в состояние готовности к использованию.
Ключ — опция, которая немного изменяет действие команды
Коммит — операция, которая отправляет последние изменения исходного кода в репозиторий, делая эти изменения частью основной ревизии репозитория
Модуль — это просто файл. Один скрипт – это один модуль
Нативный (родной) код — это код, поставляемый разработчиками технологии.
Пакет — файл или каталог, который описывается файлом.
Репозиторий — место, где хранятся и поддерживаются какие-либо данные.
Терминал — программа или устройство, используемая для взаимодействия пользователя с компьютером или компьютерной системой, локальной или удалённой
Система управления версиями — программное обеспечение для облегчения работы с изменяющейся информацией.
Среда выполнения — вычислительное окружение, необходимое для выполнения компьютерной программы и доступное во время выполнения компьютерной программы.
Источники
https://ru.wikipedia.org/wiki/Node.js
https://docs.microsoft.com/ru-ru/windows/dev-environment/javascript/nodejs-on-windows
https://github.com/aigen31/gulp
https://www.npmjs.com/package/npm-check-updates
https://ru.wikipedia.org/wiki/Git
https://ru.wikipedia.org/wiki/PowerShell
https://en.wikipedia.org/wiki/KeePassXC
https://docs.microsoft.com/ru-ru/windows-server/administration/openssh/openssh_install_firstuse
Комментарии (20)
endlessnights
15.11.2021 23:45aigen31.github.io
404
File not found
А насчёт onedrive и прочих — это если нужно хранить целиком все данные проекта, с учетом медиа, но обычно, на тот же github льют исходники, а медиа и бд оставляют у себя, потому что они всё равно плавающие и изменяемые чаще, да и занимают больше места, тот же gitignore — решение данной проблемы.aigen31 Автор
16.11.2021 09:33+1Да, как раз проекты и стоит хранить в Git. Я обобщил сохранность всех файлов, которые даже могут быть связаны с проектами, но там не находятся. Допустим вам дали доступ к админке сайта, и вы сохраните инфу в менеджер паролей, а ваша БД паролей будет находиться в документах. Или другие файлы
Понимаю, что возможно в статье что-то объяснено непонятно, но имеется ввиду так
aigen31 Автор
16.11.2021 09:47Да, по поводу aigen31.github.io. Из-за проверки модератором не мог выложить ссылку на исходники моей среды разработки. Сегодня сделаю обновление
khv2online
16.11.2021 09:33не хватает:
- нормального html-шаблонизатора
- инкрементальных пересборок стилей/скриптов
- вывода сообщений об ошибках сборки в браузер или через системные push уведомления
- сборки и раздачи в tmpfs (или хотябы указания папки для сборки)
- соурсмапов
- разделения на прод/дев сборки
- ....
короче всего не хватает - пилить и пилить еще....ZdraviiSmisl
16.11.2021 09:41Посоветуйте ресурс или статью, где можно ознакомиться с "максимальной автоматизацией проекта".
khv2online
16.11.2021 12:46Кто же Вам расскажет как реально получить конкурентное преимущество и делать деньги? )))
Тем более потребности у всех разные, gulp лучше собирать под конкретные процессы.
Но могу порекоммендовать посмотреть на: gulp-esbuild, gulp-progeny+gulp-filter, gulp-mem, gulp-pug, gulp-touch-fd, gulp-postcss, gulp-stylus, gulp-prettier+gulp-stylelint… Может что-то будет полезным.
MaximZeb
16.11.2021 09:33Очень поверхностно, особенно Gulp)
aigen31 Автор
16.11.2021 09:42Да, я написал ранее, что для этого будет отдельная статья. Просто развёрнуто будет очень длинно и запутанно. А это немного другая тема
ZdraviiSmisl
16.11.2021 10:15Где можно посмотреть развёрнуто?
aigen31 Автор
16.11.2021 10:34Скоро буду писать статьи, которые будут разветвляться от этой. Лично уведомлю вас :)
zzzzzzzzzzzz
Но это же жесть!
(Или, если хотите не так эмоционально -- антипаттерн)
aigen31 Автор
Здравствуйте! Предлагайте свой вариант автоматического push
venanen
Зачем?
aigen31 Автор
Почему никто не может предложить альтернативного варианта? Если вам не нужна автоматизация git push, то не делайте. Лично я каждое действие в коммитах не расписываю, у меня проекты небольшие и работаю один. В больших проектах с командой естественно нужно без автоматизации и прописывать каждый комментарий
Определение из википедии
Powershell мониторит файлы и автоматизирует однотипную команду? - Автоматизирует. Является ли это костылём - нет. Потому что это встроенная функция Powershell, которая как раз и нужна для похожих ситуаций
Разве что можно сделать push через какой-нибудь модуль NodeJS, но у меня этого не удалось
Мне не хочется каждый раз прописывать, если за меня это может делать программа:
venanen
Еще раз. Зачем? Зачем каждый символ комитить? Чтобы потом в этих коммитах не найти нужную версию? Вы хотите этим добиться чего? Автобекапа? Если есть риск, что все сгорит в любой момент времени - и держать файлы больше минуты без пуша - страшно, то onedrive, который автоматически все сохраняет себе. А у гита цель не просто сохранять файлы в облако, гит - это Version Control System, система, которая должна хранить не просто файлы, а версии продукта. А вы сделали из гитхаба просто облако.
aigen31 Автор
А, так вы не так поняли. Я не каждый символ коммичу, а только когда сделаю прод сборку (то есть сделаю билд). До этого момента ничего коммититься не будет. Никто не собирается каждый символ коммитить
Более конкретно про алгоритм:
Работаю над проектом
Завершаю задачу
Делаю билд проекта. Одна копия в папку dist, другая в локальный Git репозиторий
Powershell подхватывает изменения файлов, и выполняет команды
Получаем обновление в удалённом Git
Хранить версии продукта в моём случае не нужно
venanen
Тогда зачем нужен Powershell? Если можно просто дописать команды гита в package.json?
aigen31 Автор
Хорошая идея, но у меня все проекты находятся в одном репозитории (а там много package.json), потому что GitHub мне нужен зачастую из-за GitHub Pages, чтобы отображать статичные страницы
Думаю, мне просто стоит в статье более подробно описать структуру происходящего, а то явно много чего непонятно :)
venanen
У меня закрадывается мысль, что не совсем понимаете как и для чего нужна VCS. Все проекты в одном репозитории - это как вообще? Зачем? Это удобно? В каком смысле много package.json? Зачем? Так много вопросов, и так мало ответов