# Работа с JS


На данный момент сборщик работает только с обычным js. Если требуется использовать coffeescript или TypeScript или что-то еще, то можно поправить таск js-processing или написать мне, если ничего не получается.

На данный момент имеется поддержка ES6(ES.Next) синтаксиса с помощью [Babel](https://babeljs.io/). К сожалению импорты пока не доступны, так как нет модуля, который разрешит все зависимости на клиете, но работа над этим уже ведется. В остальном все достпуно. Для включения поддержки ES6(ES.Next) синтаксиса нужно использовать опцию [useBabel](options.md#usebabel) (по умолчанию выключено). Если вам необходимо исключить какие-либо файлы из обработки Babel, то вы можете добавить в начало названия этих файлов "babel_ignore_" или добавить их в секцию igonre в .babelrc в корне проекта.

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

По умолчанию js находится в 2-ух местах:

* В папке со статикой, в подпапке с именем js
* В каждом отдельном модуле.

Можно добавить свои папки для js, используя соответствующую [опцию](options.md#jspathstoconcatbeforemodulesjs-%D0%B8-jspathstoconcataftermodulesjs) в конфиге сборщика.

Весь js-код собирается в один отдельный файл, кроме js-файлов, которые находятся в директории separate-js. Эти файлы просто переносятся как есть в готовую сборку. Примером такого файла является html5shiv.js

Файлы собираются в следующем порядке:

* static/js/framework (включая подпапки)
* static/js/libraries (включая подпапки)
* static/js/plugins (включая подпапки)
* все файлы, пути к которым находятся в опции jsPathsToConcatBeforeModulesJs
* js-файлы модулей
* все файлы, пути к которым находятся в опции jsPathsToConcatAfterModulesJs

Перед сборкой в один файл весь js-код (кроме файлов из static/js) проверяется на соответствие code-style (который описан в конфигурационном файле .jscsrc в коре проекта), а также производится поиск ошибок. Данный проверки [опциональны](options.md#usejslintandhint).

Проверкой файлов из jsPathsToConcatBeforeModulesJs и jsPathsToConcatAfterModulesJs можно управлять отдельно, опциями lintJsCodeBeforeModules и lintJsCodeAfterModules.

Если требуется отключить проверку отдельного файла, то нужно добавить в начало его имени '_'.
