Рубрики
Uncategorized

Автоматизация проекта

Этот учебник является следующим на «A приложении RiscoD с Castify!». Дорога к ES импорт Нет… Теги с узлом, застегивают, CICD, ESM.

Этот учебник является следующим на «A приложении RiscoD с Castify!».

Дорога к ES импорт

Node.js использовал систему модуля Commonjs (CJS) с начала, и недавно она добавила поддержку модулям ECMASSCRICT (ESM) ( Без - эксплуатационные модули Флаг ).

Поэтому для обновления этого проекта в модуль ESM есть много возможностей, описанных в Эта статья Module Module Node.js.

Я буду следовать за тем, который имеет смысл для меня в проект, написанный в CJS в качестве первой реализации:

  • Добавить «Тип»: «Модуль» в Package.json.
  • Переименуйте JS Файлы к MJS расширение
  • исправить __dirname Использование, так как он не поддерживается в ESM
  • Удалить все требуется в пользу импорт

Обратите внимание, что это обязательно добавить расширение файла в локальные файлы Импорт:

import authRoutes from './auth.js'
  • Удалить «Используйте строгий» Так как это поведение по умолчанию с ESM
  • Обновите Module.exports к Экспортировать приложение функции по умолчанию (Castify, Opts, Next) {..
  • Исправьте сценарий запуска, поскольку Castify-Cli не поддерживает загрузку ESM прямо сейчас

CI/CD.

Добавление CI/CD в проект довольно просто благодаря Действия GitHub И великое общение вокруг них!

Непрерывная интеграция

Мы хотим автоматически запустить тесты всякий раз, когда есть запрос на тягу, поэтому действия, которые необходимо предпринять:

#...
    steps:
      # checkout the project
      - uses: actions/checkout@v2

      # install nodejs on the Virtual Machine
      - name: Use Node.js
        uses: actions/setup-node@v1
        with:
          node-version: ${{ matrix.node-version }}

      # install the project
      - name: Install
        run: npm install --ignore-scripts

      # run the test on the project itself
      - name: Run tests
        run: npm test

Непрерывная доставка

Доставка наших приложений необходимо просто нажать новые коммиты на сервер удаленного Git Heroku. Более того, для наших клиентов было бы полезно увидеть, какая версия приложения работает и обновлен файл ChangeLog.

Чтобы автоматизировать эти шаги, необходимо определить хороший рабочий процесс в первую очередь.

Для примеров процесс должен отвечать на вопросы, такие как:

  • При освобождении приложения?
  • Какой семевер является новой версией?
  • Какие изменения должны быть написаны в изменении?
  • Должно быть выполнены любые сценарии? — Как обновление базы данных
  • Должно быть отправлено уведомление?
  • Много других головных болей !!

Это приложение будет применять такой процесс:

  • В каждом слиянии в Выпуск ветвь
  • Использование формата сообщений Commit, как Обычные коммиты
  • Поднять новую версию Semver на основе сообщений Commit
  • Тейте версию
  • Создайте описание изменений, группируя сообщения Commit
  • Замораживайте выпуск на Github с текстом ChangeLog
  • Развертывание Героку

Этот список может быть легко преобразован в действие GitHub, где каждый шаг выполнит одну из этих задач, и результат будет таким (опускание параметров):

      - uses: actions/checkout@v2

      - name: Version Bump
        uses: phips28/gh-action-bump-version@master
        ...

      - name: Build Changelog message
        uses: scottbrenner/generate-changelog-action@master
        ...

      - name: Create Github Release
        uses: actions/create-release@latest
        ...

      - name: Deploy to Heroku
        uses: akhileshns/heroku-deploy@v3.4.6
        ...

Проверьте Исходный код чтобы увидеть полный файл.

Конец

В следующем посте мы будем:

  • Добавить новые функции в приложение:
    • Храните токен в cookie
    • Добавьте немного /API конечные точки

Побочные эффекты

Чтобы написать эту статью:

  • Я создал Выпуск к Castify-Cli поддержать ESM
  • Я добавил в GH-Action-Bump-версия Действие GitHub:

    • Поддержка новых сопоставленных строк образец # 36
    • Пропустить фазу мечения # 37.
  • Я зафиксировал расширение панели значка VSCode # 178.

Оригинал: «https://dev.to/eomm/project-automation-2bee»