gpt4 book ai didi

css - 使用包括 BEM 在内的 gulp 验证更少

转载 作者:太空宇宙 更新时间:2023-11-04 03:14:04 24 4
gpt4 key购买 nike

所以我有一个相当大的代码库,它使用更少(很多文件)。我想将 css 转换为使用 BEM(实际上是 BEM 的一个变体),我很想找到一种简单的方法来检查 less 文件,包括命名约定。

有什么办法吗?

所以基本上我想要所有默认的 css lint 东西并另外定义可能不会被破坏的命名约定。

例如类需要以 c-、u- 或 o- 开头,不允许使用其他类。

最佳答案

如果后处理器像 https://github.com/necolas/postcss-bem-linter出于某种原因不会为你工作。您可以编写自己的插件,也可以创建一个 Less 插件。 Less plugin可以是visitors也可以是postprocess,自己用。

E.g. classes need to start with c-, u- or o-, other classes are not permitted.

检查上述要求的访客插件示例:

 <!DOCTYPE html>
<html>
<head>
<title>BEM Validation</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link type="text/css" href="bem.less" rel="stylesheet/less">
<script>
var ValidateBEM = function(less) {
this._visitor = new less.visitors.Visitor(this);
};
ValidateBEM.prototype = {
isReplacing: true,
run: function (root) {
return this._visitor.visit(root);
},
visitRuleset: function (rulesetNode, visitArgs) {
console.log(visitArgs);
if(rulesetNode.selectors) {

for (var i = 0; i < rulesetNode.selectors.length; i++) {

if(rulesetNode.selectors[i].elements[0].value.match(/^\./)){


if(!rulesetNode.selectors[i].elements[0].value.match(/^\.[cuo]-/))
{
console.log(rulesetNode.selectors[i].elements[0]);
throw { type: 'BEM Validation',
message: "class names should start with c-, u- or o-",
filename: rulesetNode.selectors[i].elements[0].currentFileInfo.filename,
index: rulesetNode.selectors[i].elements[0].index };
}

}
}

}

return rulesetNode;
}
};

var ValidateBEMPlugin = {
install: function(less, pluginManager) {
pluginManager.addVisitor(new ValidateBEM(less));
}
};

less = {
env: "development",
plugins: [ValidateBEMPlugin]
};
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/2.4.0/less.min.js"></script>

</head>
<body>
<header>
<h1>header</h1>
</header>




</body>
</html>

bem.less 包含以下类时:

.class {
t:test;
}

在上面将导致如下所示的错误:

enter image description here

Grunt-contrib-less 也允许你使用 Less 插件:

less: {
production: {
options: {
paths: ["assets/css"],
plugins: [
new (require('less-plugin-bem'))({browsers: ["last 2 versions"]}),
] }
}
}

上面使用的插件只能在浏览器中使用,参见How to exend the Less compiler with a custom function leveraging a plugin如何创建 CLI 版本。

关于css - 使用包括 BEM 在内的 gulp 验证更少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com