Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added metaTechs option (WIP) #13

Closed
wants to merge 1 commit into from
Closed

Added metaTechs option (WIP) #13

wants to merge 1 commit into from

Conversation

blond
Copy link
Member

@blond blond commented Jan 14, 2015

Resolved #11

  • Moved make ?.css, ?.js and ?.html targets to lib/meta-techs.
  • Added metaTechs option.

Example:

var cssTech = require('enb/techs/css');

module.exports = function (config) {
    config.includeConfig('enb-bem-specs');

    var specs = config.module('enb-bem-specs').createConfigurator('specs');

    specs.configure({
        destPath: 'set.specs',
        levels: ['blocks'],
        sourceLevels: [
            { path: '../libs/bem-core/common.blocks', check: false },
            { path: '../libs/bem-pr/spec.blocks', check: false },
            { path: 'blocks', check: true }
        ],
        metaTechs: {
            css: metaCss
        }
    });
};

// make `?.css` with `cssTech`
function metaCss(opts) {
    return function (nodeConfig) {
        nodeConfig.addTech([cssTech, { 
            target: opts.target, 
            filesTarget: opts.filesTarget 
        }]);
    };
};

@blond
Copy link
Member Author

blond commented Jan 14, 2015

@narqo
Copy link

narqo commented Jan 14, 2015

What semantics does the "meta" part of the option have here?

@arikon
Copy link
Member

arikon commented Jan 18, 2015

+1 к @narqo.

Что обозначают ключи (css) в хеше metaTechs?

@blond
Copy link
Member Author

blond commented Jan 18, 2015

Что обозначают ключи (css) в хеше metaTechs?

metaTechs это что-то вроде плагина с точки зрения enb-bem-techs и что-то вроде обёртки над несколькими enb-технологиями (поэтому и meta). С помощью мета технологий можно переопределить сборку css, js и html таргетов.

У мета-технологии есть опции, в которых хранится информация о том, что можно взять на вход и куда нужно записать результат. Для каждого таргета набор опций свой: https://github.com/enb-bem/enb-bem-specs/blob/issue-11/lib/node-configurator.js#L26-L41.

По умолчанию, сейчас css собирается с помощью enb-stylus, к js добавляется клиенский BEMHTML, и html собирается с помощью BEMHTML.

Пример того, как написать свою мета-технологию выше в коде: функция metaCss, это просто обёртка над enb/techs/css технологией.

@arikon
Copy link
Member

arikon commented Jan 28, 2015

@andrewblond Можно ли при помощи metaTechs указать сборку новых технологий (не css, js и html)? Или это только про переопределение вот этих трёх?

@blond
Copy link
Member Author

blond commented Jan 28, 2015

@arikon, только про переопределение. Зачем хотеть собирать что-то ещё?

@arikon
Copy link
Member

arikon commented Feb 5, 2015

@andrewblond Мне в целом не нравится решение про metaTechs. Объяснить не могу, кроме того, что оно смахивает на костыль. А альтернативу предложить тоже не могу.

Можем обсудить голосом.

@arikon
Copy link
Member

arikon commented Feb 5, 2015

/cc @j0tunn

@blond
Copy link
Member Author

blond commented Jul 2, 2015

Решили, что будем делать опции, вместо мета-технологий.

@blond blond closed this Jul 2, 2015
@blond blond removed the review label Jul 2, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Ability to specify custom techs to build
4 participants