Настройки
В 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
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};
markdownOptions
Use
const markdownOptions = {
highlight: (str, lang) => (lang && getLanguage(lang)) ? highlight(lang, str).value : ""
};
Markdown plugins
You can use markdown-it
plugins to extend
markdown parser. That can be done using plugins
markdownOptions
// Open external links in the new tab
const markdownLink = require("markdown-it-link-attributes");
const markdownItFootnote = require("markdown-it-footnote");
const markdownOptions = {
plugins: [
[
markdownLink, {
pattern: /^https?:\/\//,
attrs: {
target: "_blank",
rel: "noopener"
}
}
],
markdownItFootnote
]
};
module.exports = {markdownOptions};
configReloadWatchers
config.js
config.js
configReloadWatchers
const configReloadWatchers = ["data.json", "syncinit.js"];
module.exports = {configReloadWatchers};