原始问题
如何正确地">配置";(统一的,注释,注释lint)注释lint没有未定义的引用插件/规则";允许";选项,用于注释cli?
我的目标是将规则配置为忽略Azure DevOps Wiki的非标准目录标记[[_TOC_]]
。我的简化设置需要:
- 全局安装的所有软件包。可能不相关
- 父文件夹,其中包含:
package.json
文件- 仅包含一个
Test.md
文件的Test
文件夹,该文件的唯一内容是这一行[[_TOC_]]
- 在工作文件夹为上述父文件夹的命令提示符下,我执行:
remark Test
默认操作
默认操作,即仅在package.json
文件中指定的插件/规则,返回预期的警告。也就是说,可能,这是由于非标准标记[[_TOC_]]
。这是我想要关闭的警告。
package.json(默认)
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references"
]
}
}
执行和预期警告(默认)
C:..>remark Test
testTest.md
1:1-1:10 warning Found reference to undefined definition no-undefined-references remark-lint
1:2-1:9 warning Found reference to undefined definition no-undefined-references remark-lint
‼ 2 warnings
我尝试过的
我已经尝试将remak-lint-no-undefined-references API示例和配置"规则可以以一种标准方式配置"适配到我的package.json
文件中。经过多次尝试和错误,我最终得到了这个看似有效的json:
package.json
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references", [1, {
"allow": ["[[_TOC_]]"]
}]
]
}
}
联机JSON查看器和JSONLint表示它是有效的JSON。但是,remark cli会产生此错误。其他变体产生了不同的错误。我被难住了。
C:..>
TestTest.md
1:1 error Error: Cannot parse file `package.json`
Expected preset, not `1`
at Error (file:///C:/Users/scott.welker/AppData/Roaming/npm/node_modules/remark-cli/node_modules/fault/index.js:39:12)
at file:///C:/Users/scott.welker/AppData/Roaming/npm/node_modules/remark-cli/node_modules/unified-engine/lib/find-up.js:190:15
at done (file:///C:/Users/scott.welker/AppData/Roaming/npm/node_modules/remark-cli/node_modules/trough/index.js:145:7)
× 1 error
2022年3月14日更新
由于在GitHub Issue(#210)上的一些帮助,我已经取得了一些进展。然而,这不是正确的途径,它已经关闭。我的问题仍然存在。
有几件事是显而易见的
- 我最初推断的JSON
package.json
不正确。请参阅下面的破解我的JSON - 我无法理解非标准的Azure DevOps Wiki目录标签
[[_TOC_]]
是如何被解释的。请参阅下面的标签解释(控制台日志) - 我推断的
package.json
似乎仍然不正确。请参阅下面的我的JSON必须仍然错误
破解了我的JSON
为了克服...Error: Cannot parse file 'package.json', Expected preset, not '1'
,我入侵了我的文件,现在我有了以下内容。这一改变克服了错误,使我能够继续,但似乎仍然不正确。请参阅我的JSON必须仍然错误。
package.json文件
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references", {
"allow": ["_TOC_", "[_TOC_]"]
}
]
}
}
标签解释(console.log)
在破解了我的JSON之后,我添加了一个推荐的id
的console.log(..npmnode_modulesremark-lint-no-undefined-referencesindex.js
)。这表明linting将目录标签解释为相关标记的两个独立位_TOC_
和[_TOC_]
。我对此并不感激。然而,下面的研究结果表明,这可能不是一个问题。请参阅我的JSON必须仍然错误。
备注cli
C:..>remark Test
Id: _TOC_
Id: [_TOC_]
TestTest.md
1:1-1:10 warning Found reference to undefined definition no-undefined-references remark-lint
1:2-1:9 warning Found reference to undefined definition no-undefined-references remark-lint
‼ 2 warnings
我的JSON肯定还是错的
参考源中的另一个位置(第126行),当我用这个硬编码声明const allow = new Set(["_TOC_", "[_TOC_]"])
替换const allow
定义时,我得到了所需的行为。例如:
备注cli
C:...>remark Test
TestTest.md: no issues found
接下来的步骤:
- 看看我是否可以放弃
package.json
,转而使用纯javascript。要么我的JSON不正确,要么它没有被正确解释 - 继续使用JSON进行futz。我所推断的很可能是错误的。
- 以下猜测也无法抑制不需要的警告:
package.json
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references", [{
"allow": ["_TOC_", "[_TOC_]"]
}]
]
}
}
2022年3月28日更新
小心 |
---|
虽然此更新中的设置有效,但Test.js 示例代码存在缺陷。请参阅下面的2022年3月30日更新 |
下面的package.json
正确">配置";注释lint没有未定义的引用插件/规则";允许";选项,可与remark cli一起使用。
- 注意:我也放弃了全局安装的程序包,因为我担心它们可能导致了我的问题。请参阅多个全局安装的预设和插件不起作用#165。该转换说明了添加的CCD_依赖性";。请参见以下内容
package.json
我是从2022年3月30日的更新开始工作的,并在统一引擎、配置、模式部分中使用了不同的语法。
同样,我的目标是将规则配置为忽略Azure DevOps Wiki的非标准目录标记[[_TOC_]]
。
{
"remarkConfig": {
"plugins": {
"remark-lint-no-undefined-references": { "allow":[ "_TOC_", "[_TOC_]" ] }
}
},
"dependencies": {
"remark": "^14.0.2",
"remark-lint": "^9.1.1",
"remark-lint-no-undefined-references": "^4.1.1"
}
}
执行和输出
注意:我的调试console.log(...)
仍然存在。
C:..>remark Test
DEBUG remarkCLITest: allow contains 2 items.
TestTest.md: no issues found