Форум

Методология

Инструментарий

Платформа

Сообщество

bemhint-deps-schema

Плагин для bemhint, который проверяет, что файлы *.deps.js соответствуют спецификации. Требутеся bemhint версии 0.7.0 или выше.

Установка

$ npm install bemhint-deps-schema

Быстрый старт

Добавьте плагин bemhint-deps-schema в конфигурационный файл .bemhint.js:

module.exports = {
    plugins: {
        'bemhint-deps-schema': true
    }
};

Использование нестандартной схемы

Если в проекте используется нестандартный формат deps.js (кодстайл и др.), плагин можно настроить на использование кастомной json-схемы (путь указывается относительно конфига):

module.exports = {
    plugins: {
        'bemhint-deps-schema': {
            schema: './dir/deps.schema.json'
        }
    }
};

Советуем при написании собственной схемы использовать за основу стандартную схему плагина.

Позиции ошибки

По умолчанию валидатор указывает на место ошибки с помощью пути в JSON-е, например: shouldDeps[1].elem. Для получения позиции ошибки в виде пары строка-колонка нужно реализовать специальную функцию:

module.exports = {
    plugins: {
        'bemhint-deps-schema': {
            /**
             * Вернуть позицию, соответствующую dataPath в content
             *
             * @param {String} content
             * @param {String} dataPath
             *
             * @returns {Location}
             */
            locator: (content, dataPath) => {
                // ...
            }
        }
    }
};

/**
 * @typedef {Object} Location
 *
 * @property {Number} line - номер строки, считая с 1
 * @property {Number} column - номер колонки, считая с 1
 */

Может быть использован сторонний модуль, например Json-file-pointer:

const pointer = require('json-file-pointer');

module.exports = {
    plugins: {
        'bemhint-deps-schema': {
            locator: (content, dataPath) => pointer.getLocationOf(content, dataPath)
        }
    }
};
Если вы заметили ошибку или хотите чем-то дополнить статью, вы всегда можете или написать нам об этом на Гитхабе, или поправить статью с помощью prose.io.