UNPKG

enb

Version:

Faster BEM/BEViS assembler

61 lines (56 loc) 1.99 kB
/** * symlink * ======= * * Создает симлинк из одного таргета в другой. Может, например, * использоваться для построения `_?.css` из `?.css` для development-режима. * * **Опции** * * * *String* **fileTarget** — Исходный таргет. Обязательная опция. * * *String* **symlinkTarget** — Результирующий таргет. Обязательная опция. * * **Пример** * * ```javascript * nodeConfig.addTech([ require('enb/techs/symlink'), { * fileTarget: '?.css', * symlinkTarget: '_?.css' * } ]); * ``` */ var inherit = require('inherit'), enb = require('../lib/api'), vfs = enb.asyncFs; module.exports = inherit(enb.BaseTech, { getName: function () { return 'symlink'; }, configure: function () { this._symlinkTarget = this.getRequiredOption('symlinkTarget'); this._fileTarget = this.getRequiredOption('fileTarget'); }, getTargets: function () { return [this.node.unmaskTargetName(this._symlinkTarget)]; }, build: function () { var symlinkTarget = this.node.unmaskTargetName(this._symlinkTarget); var symlinkTargetPath = this.node.resolvePath(symlinkTarget); var fileTarget = this.node.unmaskTargetName(this._fileTarget); var _this = this; function createSymlink() { return vfs.symLink(fileTarget, symlinkTargetPath).then(function () { _this.node.resolveTarget(symlinkTarget); }); } return this.node.requireSources([fileTarget]).then(function () { return vfs.exists(symlinkTargetPath).then(function (exists) { if (exists) { return vfs.remove(symlinkTargetPath).then(createSymlink); } else { return createSymlink(); } }); }); } });