@htmlacademy/courses-config

Конфигурация для остальных репозиториев

Stats

stars 🌟issues ⚠️updated 🛠created 🐣size 🏋️‍♀️
@htmlacademy/courses-config
Minified + gzip package size for @htmlacademy/courses-config in KB

Readme

Дополняемая конфигурация проекта для модулей courses-*

В репозиторий вынесено содержимое конфигурации из courses-core.

Основная цель — использовать конфигурацию с дополнениями, взятыми из произвольного файла так, чтобы облегчить доступ к конфигурации из любого места в скрипте.

Для передачи части конфигурации, перекрывающей основную, можно использовать один из способов:

  • Для скриптов, запускаемых из командной строки достаточно передать ключ --config-path=path/to/config.js. При этом симпортированный из файла конфиг будет объединён с конфигурацией по умолчанию.
  • Если необходимо использовать конфигурацию из кода, нужно получить функцию по require('@htmlacademy/courses-config/config'). В полученную функцию передать в качестве единственного аргумента часть конфигурации, которую нужно перекрыть.

Что для чего нужно

  • express
    • serve — как скрипты взаимодействуют с сервером
      • protocol, host, port — описывают url, по которому доступен девсервер
      • routes — пути к страницам на девсервере
        • courses — путь к списку курсов
        • course — путь к списку заданий курса. Параметр :courseId соответствует айдишнику курса
        • task — путь к заданию. Параметр :courseId соответствует айдишнику курса, :taskId — айдишнику задания
        • check — используется, чтобы указать путь, на который отправляются проверки. Если ключ не указан, проверки отправляются на путь, указанный в task. Параметры те же, что и в task
  • taskLoader
    • types — каталог с файлами-описаниями набора исходных данных для заданий
    • courses — каталог с содержимым курсов
  • serve — отвечает за отображение курсов
    • lang (en|ru) — был добавлен для использования в переводе интерфейса на английский язык. Пока не используется
    • templates, metadata — содержат информацию и шаблоны для отображения страниц девсервера
    • assets — каталог, в котором лежат стили, шрифты и картинки
    • cacheTemplates — этот флаг по умолчанию равен true. Если необходимо редактировать шаблоны и перерисовывать страницы, не перезапуская девсервер, этот флаг нужно сбросить в false
  • bin — раньше содержал пути к phantomjs и compare, теперь содержит только один путь:
    • compare — путь к утилите compare. По умолчанию содержит /usr/bin/compare
  • checks — содержал информацию о скриптах, исполняемых во время серверных проверок
    • baseDir — базовый каталог, в который будут складываться результаты проверок
    • baseUrl — базовый путь по которому будут получены результаты проверок
  • timeout — время в миллисекундах на различные задержки
    • timerDefault — время по умолчанию для интерфейсного таймера
    • updateCode — время, через которое перерисуется preview
    • autosaveCode — время, через которое автосохранится код
    • velocity — время перехода между предыдущим и новым состоянием вкладки «разница» в html-css испытании
    • poll — время опроса сервера по умолчанию
    • task — время, за которое должно посчитаться задание
    • challenge — время, за которое должно посчитаться испытание
  • scripts — содержит настройки для использования экспериментальных фич в courses-scripts
    • statistics — собирать и отправлять статистику использования заданий

FAQ

В модуле используется es6. Как тогда получается использовать его в courses-scripts?

Webpack-овский loader вычисляет конфигурацию, как javascript-объект и вставляет его как JSON.stringify(). Таким образом courses-scripts видит только данные и никакого es6.

Как использовать конфигурацию из других модулей?

const customConfig = /** Загружаем из файла в другом модуле */
const getConfig = require(`@htmlacademy/courses-config/config`);

const config = getConfig(customConfig);

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.