Настройки

В config.js вы можете задать разные конфигурации для сайта:

const port = {
  https: 4000,
  http: 3000
};

const hostname = "0.0.0.0";

const i18nOptions = {
  defaultLocale: "en",
  crowdin: {
    id: "cmints-website"
  }
};

const templateData =
{
  site: {
    domain: "cmints.io",
    title: "CMintS",
    description: "CMS created with the internationalization in mind"
  }
};

module.exports = {templateData, i18nOptions, port, hostname};

Этот файл может переписать конфигураций заданные по умолчанию CMintS-ом.

port

Specifies on which port to run the server, by default it's 3000 for http and 4000 for https.

const port = {
  https: 4000,
  http: 3000
};

module.exports = {port};

hostname

Определяет адрес хоста сервера. По умолчанию используется 127.0.0.1.

const hostname = "0.0.0.0";

module.exports = {hostname};

root

Определяет корневой каталог сайта.

const root = "/project-root";

module.exports = {root};

i18nOptions

Используется только для многоязычных проектов:

const i18nOptions = {
  defaultLocale: "en",
  type: "Index",
  prefix: "{",
  postfix: "}",
  crowdin: {
    id: "cmints-website",
    updateOption: "update_as_unapproved"
  }
};

module.exports = {i18nOptions};

defaultLocale

Указывает основной язык проекта. Подробнее о defaultLocale.

type

  • Index (По умолчанию)
  • Double

Существует два способа, генерации многоязычного веб-сайта - дублировать содержание на странице конкретного языка для пути перенаправления при необходимости от одного из версия (пример.: для перенаправления на предпочитаемый язык пользовотельского устроиства) или генерации контента основного язык как корень в директории content . По умолчанию используется опция Index, в этом случае только одна версия языка страницы по умолчанию генерируется. Double позволяет чтобы иметь дублирование основного языка, где вы можете установки например перенаправление с помощью urllocale.

Пример ниже показыват генерацию страницы about когда en используется как основной язык(локаль):

  • about.html
  • en/about.html Double
  • de/about/html

detectLang

Эта опция может только использоваться когда запускается CMintS сервер с опцией i18nOptions.type установленного на Double. Эта опция использует языковые опции пользователя установленные в браузере для переадресации на предпочтительный язык сайта. Эта опция не действует когда вы генерируете статичный контент.

crowdin.id

Идентификатор проекта Crowdin. Узнайте Подробнее про идентификатор crowdin.id

crowdin.updateOption

  • update_as_unapproved(По умолчанию) - Сохранить переводы с отменой их утверждений.
  • update_without_changes - Сохранить переводы с и их утверждения.
  • null - переводы измененных строк будут утеряны.
const i18nOptions = {
  defaultLocale: "en",
  crowdin: {
    id: "cmints-website",
    updateOption: null
  }
};

prefix, postfix

Используется для настройки пользовательского префикса и постфикса для строк интернационализации. Подробнее о пользовательском префиксе и постфиксе.

templateData

данные и функции в шаблонных данных могут быть доступны с .ejs страниц и макета файлов:

Рассмотрим:

/* config.js */

const templateData =
{
  site: {
    domain: "cmints.io",
    title: "CMintS",
    description: "CMS created with the internationalization in mind",
    navigations: [
      {path: "documentation", stringId: "header-menu-item-docs"},
      {path: "presentation", stringId: "header-menu-item-slides"}
    ]
  }
};

module.exports = {templateData};

Таким образом, указанные данные могут быть доступны как в примере:

<!DOCTYPE html>
  <head>
    <title><%= site.title %> | <%= page.title %></title>
    <meta name="twitter:title" content="<%= site.title %> | {page.title}">
  </head>
  <body>
...

Или:

<% for (let navigation of site.navigations) { %>
  <li>
    <a <%-i18n.href(navigation.path)%>
      <% if (navigation.path == page.pathname) { %>class="active"<% } %>>
      {<%-navigation.stringId%>(header)}
    </a>
  </li>
<% } %>

jsModuleOptions

Можно использовать чтобы настроить Разные опции генерации для Модулей JS. Пример ниже показывает как добавить source map к генерируемым файлом для удобства отладки:

const jsModuleOptions = {
  debug: true
}

module.exports = {jsModuleOptions};

Минификация

Для минифицированного вывода JS модулей просто укажите опцию minify:

const jsModuleOptions = {
  minify: true
}

module.exports = {jsModuleOptions};

Можно также использовать различные uglify-es конфигурации для минификации JS модулей. В приведенном ниже примере добавляется sourceMap к минифицированным файлам:

const jsModuleOptions = {
  minify: {
    sourceMap: true
  }
}

module.exports = {jsModuleOptions};

lessOptions

Может использоваться для задачи различных опций к генераций CSS. Пример ниже показывает как добавить source map к генерируемым файлом для отладок:

const lessOptions =
{
  sourceMap: {
    sourceMapFileInline: true
  }
};

module.exports = {lessOptions};

Минификация

Для минифицированного вывода LESS просто укажите опцию minify:

const lessOptions = {
  minify: true
}

module.exports = {lessOptions};

Вы также можете использовать разные clean-css конфигурации для минификации модулей JS. Пример ниже добавляет sourceMap к минифицированному файлу:

const lessOptions = {
  minify: {
    sourceMap: true
  }
}

module.exports = {lessOptions};

configReloadWatchers

config.js does more than configuration and it's can be used for a robust action also you can call other modules and/or JSON files from config.js and you might not want restart the development server each time you update the other file, for that reason you can specify configReloadWatchers:

const configReloadWatchers = ["data.json", "syncinit.js"];
module.exports = {configReloadWatchers};