# Опции


Вся конфигураци сборщика находится в одном файле — tars-config.js в корне проекта.

Нужно перезапустить сборку, чтобы изменения применились.


## Изменяемые опции

### autoprefixerConfig

Type: `Array or Boolean`

Default: `['> 1%', 'last 2 versions', 'opera 12.1', 'android 4']`

Конфиг для автопрефиксера (если не знаете, что это, то бегом [сюда](http://css-tricks.com/autoprefixer)). Если кратко, то данный модуль позволяет не писать вендорные префиксы.

В данный конфиг не нужно включать ie8 и ie9, для них сборка стилей происходит отдельно.

Какие еще браузеры доступны, можно глянуть [тут](https://github.com/postcss/autoprefixer#browsers).

Если вы не хотите использовать автопрефиксер, то передайте в данную опцию false.

### postcss

Type: `Array`

Default: `[]`

Example: 
````javascript
postcss: [
        {
            name: 'postcss-short',
            options: {
                deny: ['text']
            }
        }, {
            name: 'postcss-size',
            options: {}
        }
    ]
````

Здесь можно перечислить используемые постпроцессоры. Обязательно выполните установку используемых постпроцессоров.

### useSVG

Type: `Boolean`

Default: `true`

Включение поддержки сборщиком svg-изображений.

### useJsLintAndHint

Type: `Boolean`

Default: `true`

Включение проверки ошибок в js-коде и code-style (опции для code-style находятся в корне, в файле `.jscsrc`. Весь список доступных опций можно найти [тут](http://jscs.info/rules.html)).

### jsPathsToConcatBeforeModulesJs и jsPathsToConcatAfterModulesJs

Type: `Array of Strings`

Default: `[]`

По умолчанию, весь js-код проекта собирается в 1 файл, кроме js-файлов, которые находятся в директории separate-js. Если необходимо включить в сборку файлы из других мест (например, вы создали отдельную директорию для js-файлов), то можно прописать в эту опцию путь или массив путей (паттернов путей, типа controllers/**/*.js) до js-файлов, которые должны попасть в сборку до js-модулей (jsPathsToConcatBeforeModulesJs) и js-файлов, которые должны быть подключены после js модулей (jsPathsToConcatAfterModulesJs). 

Это будет полезно, при разработке сайта на js-фреймворке с какими-либо своими сущностями (контроллер, роутер и т.д.). Вам не требуется лезть в таски, просто создавайте отдельные директории, указывайте, за какими файлами следить.

Также есть возможность отключить linting и hinting в этих файлах (опции `lintJsCodeBeforeModules` и `lintJsCodeAfterModules`).

### useBabel

Type: `Boolean`

Default: `false`

Данная опция позволяет использовать [Babel](https://babeljs.io/) для поддержки ES6(ES7) синтаксиса. Конфиг для babel находит в корне проекта, в файле .babelrc. С доступными опциями .babelc можно ознакомится на [официальном сайте](https://babeljs.io/docs/usage/options/). Вам не нужно задавать опции 'filename' и все что связанно с 'sourcemaps', так как эти оцпии уже заданы в сборщике. Sourcemaps вы можете управлять через опцию в [конфиге сборщика](#sourcemaps).

### sourcemaps

Type: `Object`

Default: 
```javascript
sourcemaps: {
    js: {
        active: true,
        inline: true
    },
    css: {
        active: true,
        inline: true
    }
},
```

Конфиг для sourcemaps. Sourcemaps для js и css работают только в dev-режиме. 
active {Boolean}: использовать sourcemap или нет.
inline {Boolean}: использовать встроенные сорсмапы или генерировать их отдельным файлом.

### notifyConfig

Конфиг для модуля нотификаций.

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

Имеет вложенные опции.

#### useNotify

Type: `Boolean`

Default: `true`

Включение нотификации. Отключить нотификации можно с помощью переменных окружения:
```bash
export DISABLE_NOTIFIER=true;
#или
export NODE_ENV=production;
```
Переменные окружения имеют больший вес и перезаписывают значение в tars-config.js

#### title

Type: `String`

Default: `'TARS notification'`

Каждая нотификация имеет тайтл. Если вы хотите видеть другой тайтл, то смело меняйте эту опцию.

#### sounds

Звуковые уведомления при нотификациях

##### onSuccess

Type: `String, undefined`

Default: `undefined`

В данную опцию передается название системного звука, который будет звучать при нотификации, если сборка прошла успешно. Если звуков не нужно, то просто оставляйте `undefined`

##### onError

Type: `String, undefined`

Default: `undefined`

В данную опцию передается название системного звука, который будет звучать при нотификации, если сборка прошла с ошибками. Если звуков не нужно, то просто оставляйте `undefined`


### browserSyncConfig

Конфиг для модуля browser-sync. Данный модуль реализует возможность livereload в браузере, расшаривание верстки в внешний веб, создание локального сервера.

#### baseDir

Type: `String`

Default: `'./dev'`

Директория, из которой сервер будет брать файлы. Именно там должен находится html-файл указанный в [startUrl](#starturl).

#### port

Type: `Number`

Default: `3004`

Порт, по которому будет доступна верстка при включении локального сервера. Если заданный порт будет занят, то автоматом будет выбран следующий свободный.

#### open

Type: `Boolean`

Default: `true`

Открытие браузера при включении livereload или расшаривании верстки во внешний веб.

#### browser

Type: `String or Array`

Default: `google chrome`

Название браузера, который будет открыт при включении livereload или расшаривании верстки во внешний веб. Также можно указать массив значений, чтобы открыть сразу несколько браузеров.

Доступные браузеры: safari, internet explorer, google chrome, firefox, opera.

#### startUrl

Type: `String`

Default: `'/index.html'`

В данную опцию передается строка с именем страницы, с которой начнется открытие верстки в браузере, при использовании livereload или расшаривании верстки во внешний веб. Путь указывается от папки dev. Именно из папки dev происходит расшаривание верстки.

#### useNotifyInBrowser

Type: `Boolean`

Default: `true`

По умолчанию в браузере показываются уведомления о том, что браузер был перезагружен, js или css обновлен и т.д.


### removeConsoleLog

Type: `Boolean`

Default: `true`

Удаление console.log и alert из js-файлов в сборке. Является опцией, так как иногда требуется оставить console.log в готовой сборке.

### minifyHtml

Type: `Boolean`

Default: `false`

Включение минифицирования html. Если опция устанволена в false, то скомпилированный html будет отформатирован.

### staticPrefix

Type: `String`

Default: `./static/`

Кастомный путь до статики.
Данная опция используется в том случае, если верстка отдается на внедрение в backend. Опция позволяет установить путь до статики, если на этапе внедрения путь должен быть другим, чтобы внедряющий специалист не менял вручную пути в css- и html-файлах, прописываем нужный префикс в данную опцию.

Также опция может быть использована, если в вашем проекте статика берется из определенного места с помощью nginx или любым другим веб-сервером.

Пример, в верстке статика берется из ./public/img/content/img.png, а у backend она берется из http://static-server.com. Тогда, перед сборкой проекта для внедрения необходимо задать в данную опцию http://static-server.com/. Тогда у всех файлов статики будет следующий путь (пример для картинки в html) — http://static-server.com/img/content/sample.jpg

Значение данной опции задает значение плейсхолдеру %=staticPrefix=%, который может использоваться в любых файлах проекта, кроме стилевых.

Если вам это не нужно, то сделайте эту опцию такой же, как и [staticFolderName](#staticfoldername)

### staticPrefixForCss

Type: `String`

Default: `../imageFolderName/`

Кастомный пути до папки со статикой из css-файлов. imageFolderName берется из опции [imagesFolderName](options.md#imagesFolderName)

### buildPath

Type: `String`

Default: `'./builds/'`

В данную опцию передается строка с относительным или абсолютным путем к той папке, куда должен собираться проект.<br/>
Если используется useBuildVersioning (использовать версионирование билдов), то каждый новый билд будет находится в отдельной папке с именем — версией билда, и каждая эта папка будет находится по пути, указанном в buildPath.

### useBuildVersioning

Type: `Boolean`

Default: `true`

Использовать версионирование билдов. Название версии состоит из имени билда + дата создания билда (точность до секунды).

### useArchiver

Type: `Boolean`

Default: `true`

Создание архива с готовой версткой. Архив создается внутри папки с билдом.

### ulimit

Type: `Number`

Default: `4096`

По умолчанию, число одновременно открытых файлов в ОС ограничено. Так как tars работает на gulp, то число одновременно открытых файлов может быть велико. Чтобы избежать проблем с этим, можно настроить ulimit (в нашем случае настраивается число одновременно открытых файлов). Если в проекте используется значительно число файлов и часть из них не попадает в конечную сборку, то просто увеличьте даную опцию.


## Частично изменяемые опции

Данные опции можно менять только перед командой `re-init`, так как ни на какую команду они больше не влияют. Кроме `useImagesForDisplayWithDpi`, об этом подробнее ниже.

### templater

Type: `String`

Default: `handlebars`

В данной опции указывается используемый шаблонизатор. Доступны jade и handlebars. В опцию передается название шаблонизатора с маленькой буквы.

Если вы хотите писать на простом html, то оставьте опцию без изменений.

### cssPreprocessor

Type: `String`

Default: `scss`

В данной опции указывается используемый css-препроцессор. Доступны scss, less или stylus. В опцию передается название css-препроцессора с маленькой буквы.

### useImagesForDisplayWithDpi

Type: `Array`

Default: `[96]`

В данной опции указываются плотности пикселей различных экранов, которые будут поддерживаться вашим проектом. Поддерживаются значения:

* 96 — 1 dppx (обычные экраны)
* 192 — 2 dppx (ретина)
* 288 — 3 dppx (например, nexus 5)
* 384 - 4 dppx (например, nexus 6)

На основе данной опции создаются папки для png-изображений различных размеров, для разных экранов. Подробнее в разделе [Работа с изображениями](images-processing.md).

Данную опцию можно менять когда угодно, но есть пара важных моментов. Если вы меняете данную опцию перед командой `gulp init` или `gulp re-init`, то больше ничего делать не нужно. Если опция меняется потом, то необходимо руками создать (или удалить) директории в папке `static/img/sprite/`. Формат названия папки — значение опции + dpi. Например, `192dpi`.

### fs

Опции для именования основных папок со статикой. Если вы меняете опции из этого блока перед командой `gulp init` или `gulp re-init`, то больше ничего делать не нужно. Если опция меняется потом, то необходимо руками переименовать соответствующие директории.

#### staticFolderName

Type: `String`

Default: `'static'`

Имя папки, в которой будет лежать статика проекта. Если вы только разрабатываете проект локально, то необходимо, чтобы значение этой опции совпадало со значением опции [staticPrefix](#staticPrefix)

#### imagesFolderName

Type: `String`

Default: `'img'`

Имя папки, в которой будут лежать картинки проекта. Чаще всего именна эта папка имеет различные значения, поэтому название этой директории опционально.
