如何从Less visitor插件中从树中删除条目 [英] Howto remove a entry from the tree in a Less visitor plugin

查看:87
本文介绍了如何从Less visitor插件中从树中删除条目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试了以下操作:

module.exports = function(less) {
function RemoveProperty() {
    this._visitor = new less.visitors.Visitor(this);
};

RemoveProperty.prototype = {
    isReplacing: true,
    isPreEvalVisitor: true,
    run: function (root) {
        return this._visitor.visit(root);
    },
    visitRule: function (ruleNode, visitArgs) {
        if(ruleNode.name[0].value != '-some-aribitrary-property')
        {        
            return ruleNode;
        }
        else
        {
            return  new less.tree.Rule([], [], 0,"");
        }   
    }
};
return RemoveProperty;
};

return new less.tree.Rule([], [], 0,"");仍然会导致像: ;这样的空输出,也不会返回任何内容,将给我一个错误:TypeError:无法读取未定义的属性'splice'.

return new less.tree.Rule([], [], 0,""); still result in a empty output like : ; also return nothing will give me an error: TypeError: Cannot read property 'splice' of undefined.

推荐答案

它可以..但从性能的角度来看并不理想..返回一个空数组

It can.. but its not ideal from a performance perspective.. return an empty array

visitRule: function (ruleNode, visitArgs) {
    if (ruleNode.variable) {
        return [];
    }
    return ruleNode;
},

如果您签出toCSS访问者,它会做很多事情.

If you check out the toCSS visitor it does this alot.

但是我认为它也应该允许未定义..将尽快添加.

But I think it should allow undefined too.. Will look at adding that soon.

这篇关于如何从Less visitor插件中从树中删除条目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆