为 remark-cli 配置 remark-lint-no-undefined-references plugin/rule 'Allow' 选项?
Configure remark-lint-no-undefined-references plugin/rule 'Allow' option for remark-cli?
原问题
我如何正确“configure" the (unified, remark, remark-lint) remark-lint-no-undefined-references plugin/rule "allow" option for use with the remark-cli?
我的目标是 configure the rule to ignore the Azure DevOps Wiki's 非标准 table 内容标签,[[_TOC_]]
。我的简化设置需要:
- 所有包globally installed。可能不相关。
- 我有一个父文件夹:
- 一个
package.json
文件。
- 一个
Test
文件夹只包含一个 Test.md
文件,其内容只有这一行 [[_TOC_]]
.
- 在工作文件夹为上述父文件夹的命令提示符下,我执行:
remark Test
默认操作
默认操作,即只是 package.json
文件中指定的 plugin/rule,returns 预期的警告。这是,大概,由于非标准标签,[[_TOC_]]
。这是我想关闭的警告。
package.json(默认)
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references"
]
}
}
执行和预期警告(默认)
C:\..>remark Test
test\Test.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
我试过的
我已经尝试使 remark-lint-no-undefined-references API example and Configuration, 'rules can be configured in one standard way' 适应我的 package.json
文件。经过反复试验,我得到了这个看似有效的 json:
package.json
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references", [1, {
"allow": ["[[_TOC_]]"]
}]
]
}
}
Online JSON Viewer and JSONLint indicate it's valid JSON. However, remark-cli 产生此错误。其他变化产生不同的错误。我被难住了。
C:\..>
Test\Test.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 日更新
感谢 a bit of help on GitHub Issue (#210),我取得了一些进步。但是,那不是正确的途径,并且已关闭。我的问题仍然存在。
有几件事是显而易见的
- 我最初推断的JSON、
package.json
是不正确的。请参阅下面的 黑掉了我的 JSON。
- 我没能理解内容标签
[[_TOC_]]
的非标准 Azure DevOps Wiki table 是如何解释的。请参阅下面的 标记解释(控制台日志)。
- 我的推断
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
的 recommended console.log (..\npm\node_modules\remark-lint-no-undefined-references\index.js
)。这表明 linting 将内容标签的 table 解释为相关降价的两个独立位,_TOC_
和 [_TOC_]
。我不喜欢这个。但是,以下调查结果表明这可能不是问题。参见 我的 JSON 一定还是错的。
备注-cli
C:\..>remark Test
Id: _TOC_
Id: [_TOC_]
Test\Test.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一定还是错的
参考源 here (line 126) 中的另一个位置,当我用这个硬编码声明 const allow = new Set(["_TOC_", "[_TOC_]"])
替换那个 const allow
定义时,我得到了想要的行为。例如:
备注-cli
C:\...>remark Test
Test\Test.md: no issues found
后续步骤:
- 看看我是否可以放弃
package.json
而改用纯 javascript。我的 JSON 不正确或者没有被正确解释。
- 继续JSON。我的推断很可能是错误的。
- 以下猜测也无法抑制不需要的警告:
package.json
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references", [{
"allow": ["_TOC_", "[_TOC_]"]
}]
]
}
}
更新 03/28/2022
CAUTION!
While the setup in this update is valid, the Test.js
example code is flawed. See 03/30/2022 Update below.
跟进“下一步,看看我是否可以放弃 package.json
而改用纯 javascript。”
我似乎已经让它工作了,只是它抑制了所有警告,而不仅仅是我针对的少数(两个)警告。需要更多的开发和测试。
新设置
- 一个新的父 Node.js 应用程序文件夹,其中我有:
- 选择重新安装所有软件包和一些新软件包,但不是全局(这次):
npm install to-vfile
npm install vfile-reporter
npm install remark
npm install remark-lint
npm install remark-lint-no-undefined-references
node_modules
文件夹。由 npm 安装(依赖项)创建和填充。
- 一个
package.json
文件。由 npm installs 创建和填充。
- 一个
package-lock.json
文件。由 npm installs 创建和填充。
- 同一
Test
文件夹的副本,仅包含一个 Test.md
文件,其内容只有这一行 [[_TOC_]]
。
- 在工作文件夹为上述父文件夹的命令提示符下,我执行我的新节点/javascript代码:
node Test.js
见下文。代码注释说明了所有警告的意外抑制,即使是那些没有针对性的警告。
Test.js
警告! 此代码不正确。请参阅下面的 03/30/2022 更新。
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoUndefinedReferences from 'remark-lint-no-undefined-references'
import {read} from 'to-vfile'
main()
async function main() {
const file = await remark()
.use(remarkLint)
// This useage results in the expected warnings, '...Found reference to undefined definition...'
.use(remarkLintNoUndefinedReferences)
// This usage suppresses the warnings, as desired. However, note the next usage.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '_TOC_', '[_TOC_]' ] }])
// This usage also suppresses the warning but it shoud not have done so.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '...', '…' ] }])
// This usage (and related tests) seem to illustrate that anything in the allowed array suppresses all warnings.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '' ] }])
.process(await read('.\Test\Test.md'))
console.error(reporter(file))
}
更新 03/30/2022
这是一个更正的 Test.js
文件,其中我的无效用法被注释掉,标记为 WRONG
,两个正确的用法标记为 GOOD
。最终用法纠正了我在 03/28/2022 更新中犯的错误。我现在有一个可用的 javascript 版本。我只需要将这个已知的工作版本修改为 remark-cli 的 package.json
文件。越来越近了。
我通过反复试验得出了这个 CORRECT
,可以正常使用。通过将 console.log()
语句添加到 ..\remark-lint-no-undefined-references\index.js
源并根据反复重读 remark-lint Configure 部分的指导调整我的 javascript 代码,我的试错得到了帮助。
Test.js
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoUndefinedReferences from 'remark-lint-no-undefined-references'
import {read} from 'to-vfile'
main()
async function main() {
const file = await remark()
.use(remarkLint)
// WRONG: This usage seems to suppress the warnings, as desired. However, note the next usage.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '_TOC_', '[_TOC_]' ] }])
// WRONG: This usage also seems to supresses the warnings but, it shoud not have done so.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '...', '…' ] }])
// WRONG: This usage (and related tests) seem to illustrate that anything in the allowed array suppresses all warnings.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '' ] }])
// GOOD: This usage results in the expected warnings, '...Found reference to undefined definition...'
//.use(remarkLintNoUndefinedReferences)
// GOOD: This usage seems to be correct!!
.use(remarkLintNoUndefinedReferences, [1, { allow: [ '_TOC_', '[_TOC_]' ] }])
.process(await read('.\Test\Test.md'))
console.error(reporter(file))
}
执行和输出
C:\..>node Test.js
DEBUG remarkTest: allow contains 2 items.
DEBUG remarkTest Id: '_TOC_'
DEBUG remarkTest Id: '[_TOC_]'
.\Test\Test.md: no issues found
下面的package.json
正确"configures" the remark-lint-no-undefined-references plugin/rule "allow" option for use with remark-cli.
- 注意: 我也放弃了全局安装的软件包,这是出于未经证实的担忧,即它们可能对我的问题有所贡献。参见 Multiple globally installed presets and plugins don’t work #165。此转换说明了添加的
package.json
“dependencies”。见下文。
package.json
我是通过 2022 年 3 月 30 日的更新并使用 Unified Engine, Configuration, Schema 部分中说明的不同语法来解决这个问题的。
同样,我的目标是 configure the rule to ignore the Azure DevOps Wiki's non-standard table 的内容标签,[[_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.
Test\Test.md: no issues found
原问题
我如何正确“configure" the (unified, remark, remark-lint) remark-lint-no-undefined-references plugin/rule "allow" option for use with the remark-cli?
我的目标是 configure the rule to ignore the Azure DevOps Wiki's 非标准 table 内容标签,[[_TOC_]]
。我的简化设置需要:
- 所有包globally installed。可能不相关。
- 我有一个父文件夹:
- 一个
package.json
文件。 - 一个
Test
文件夹只包含一个Test.md
文件,其内容只有这一行[[_TOC_]]
.
- 一个
- 在工作文件夹为上述父文件夹的命令提示符下,我执行:
remark Test
默认操作
默认操作,即只是 package.json
文件中指定的 plugin/rule,returns 预期的警告。这是,大概,由于非标准标签,[[_TOC_]]
。这是我想关闭的警告。
package.json(默认)
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references"
]
}
}
执行和预期警告(默认)
C:\..>remark Test
test\Test.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
我试过的
我已经尝试使 remark-lint-no-undefined-references API example and Configuration, 'rules can be configured in one standard way' 适应我的 package.json
文件。经过反复试验,我得到了这个看似有效的 json:
package.json
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references", [1, {
"allow": ["[[_TOC_]]"]
}]
]
}
}
Online JSON Viewer and JSONLint indicate it's valid JSON. However, remark-cli 产生此错误。其他变化产生不同的错误。我被难住了。
C:\..>
Test\Test.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 日更新
感谢 a bit of help on GitHub Issue (#210),我取得了一些进步。但是,那不是正确的途径,并且已关闭。我的问题仍然存在。
有几件事是显而易见的
- 我最初推断的JSON、
package.json
是不正确的。请参阅下面的 黑掉了我的 JSON。 - 我没能理解内容标签
[[_TOC_]]
的非标准 Azure DevOps Wiki table 是如何解释的。请参阅下面的 标记解释(控制台日志)。 - 我的推断
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
的 recommended console.log (..\npm\node_modules\remark-lint-no-undefined-references\index.js
)。这表明 linting 将内容标签的 table 解释为相关降价的两个独立位,_TOC_
和 [_TOC_]
。我不喜欢这个。但是,以下调查结果表明这可能不是问题。参见 我的 JSON 一定还是错的。
备注-cli
C:\..>remark Test
Id: _TOC_
Id: [_TOC_]
Test\Test.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一定还是错的
参考源 here (line 126) 中的另一个位置,当我用这个硬编码声明 const allow = new Set(["_TOC_", "[_TOC_]"])
替换那个 const allow
定义时,我得到了想要的行为。例如:
备注-cli
C:\...>remark Test
Test\Test.md: no issues found
后续步骤:
- 看看我是否可以放弃
package.json
而改用纯 javascript。我的 JSON 不正确或者没有被正确解释。 - 继续JSON。我的推断很可能是错误的。
- 以下猜测也无法抑制不需要的警告:
package.json
{
"remarkConfig": {
"plugins": [
"remark-lint-no-undefined-references", [{
"allow": ["_TOC_", "[_TOC_]"]
}]
]
}
}
更新 03/28/2022
CAUTION! |
---|
While the setup in this update is valid, the Test.js example code is flawed. See 03/30/2022 Update below. |
跟进“下一步,看看我是否可以放弃 package.json
而改用纯 javascript。”
我似乎已经让它工作了,只是它抑制了所有警告,而不仅仅是我针对的少数(两个)警告。需要更多的开发和测试。
新设置
- 一个新的父 Node.js 应用程序文件夹,其中我有:
- 选择重新安装所有软件包和一些新软件包,但不是全局(这次):
npm install to-vfile
npm install vfile-reporter
npm install remark
npm install remark-lint
npm install remark-lint-no-undefined-references
node_modules
文件夹。由 npm 安装(依赖项)创建和填充。- 一个
package.json
文件。由 npm installs 创建和填充。 - 一个
package-lock.json
文件。由 npm installs 创建和填充。 - 同一
Test
文件夹的副本,仅包含一个Test.md
文件,其内容只有这一行[[_TOC_]]
。
- 选择重新安装所有软件包和一些新软件包,但不是全局(这次):
- 在工作文件夹为上述父文件夹的命令提示符下,我执行我的新节点/javascript代码:
node Test.js
见下文。代码注释说明了所有警告的意外抑制,即使是那些没有针对性的警告。
Test.js
警告! 此代码不正确。请参阅下面的 03/30/2022 更新。
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoUndefinedReferences from 'remark-lint-no-undefined-references'
import {read} from 'to-vfile'
main()
async function main() {
const file = await remark()
.use(remarkLint)
// This useage results in the expected warnings, '...Found reference to undefined definition...'
.use(remarkLintNoUndefinedReferences)
// This usage suppresses the warnings, as desired. However, note the next usage.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '_TOC_', '[_TOC_]' ] }])
// This usage also suppresses the warning but it shoud not have done so.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '...', '…' ] }])
// This usage (and related tests) seem to illustrate that anything in the allowed array suppresses all warnings.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '' ] }])
.process(await read('.\Test\Test.md'))
console.error(reporter(file))
}
更新 03/30/2022
这是一个更正的 Test.js
文件,其中我的无效用法被注释掉,标记为 WRONG
,两个正确的用法标记为 GOOD
。最终用法纠正了我在 03/28/2022 更新中犯的错误。我现在有一个可用的 javascript 版本。我只需要将这个已知的工作版本修改为 remark-cli 的 package.json
文件。越来越近了。
我通过反复试验得出了这个 CORRECT
,可以正常使用。通过将 console.log()
语句添加到 ..\remark-lint-no-undefined-references\index.js
源并根据反复重读 remark-lint Configure 部分的指导调整我的 javascript 代码,我的试错得到了帮助。
Test.js
import {reporter} from 'vfile-reporter'
import {remark} from 'remark'
import remarkLint from 'remark-lint'
import remarkLintNoUndefinedReferences from 'remark-lint-no-undefined-references'
import {read} from 'to-vfile'
main()
async function main() {
const file = await remark()
.use(remarkLint)
// WRONG: This usage seems to suppress the warnings, as desired. However, note the next usage.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '_TOC_', '[_TOC_]' ] }])
// WRONG: This usage also seems to supresses the warnings but, it shoud not have done so.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '...', '…' ] }])
// WRONG: This usage (and related tests) seem to illustrate that anything in the allowed array suppresses all warnings.
//.use(remarkLintNoUndefinedReferences[ { allow: [ '' ] }])
// GOOD: This usage results in the expected warnings, '...Found reference to undefined definition...'
//.use(remarkLintNoUndefinedReferences)
// GOOD: This usage seems to be correct!!
.use(remarkLintNoUndefinedReferences, [1, { allow: [ '_TOC_', '[_TOC_]' ] }])
.process(await read('.\Test\Test.md'))
console.error(reporter(file))
}
执行和输出
C:\..>node Test.js
DEBUG remarkTest: allow contains 2 items.
DEBUG remarkTest Id: '_TOC_'
DEBUG remarkTest Id: '[_TOC_]'
.\Test\Test.md: no issues found
下面的package.json
正确"configures" the remark-lint-no-undefined-references plugin/rule "allow" option for use with remark-cli.
- 注意: 我也放弃了全局安装的软件包,这是出于未经证实的担忧,即它们可能对我的问题有所贡献。参见 Multiple globally installed presets and plugins don’t work #165。此转换说明了添加的
package.json
“dependencies”。见下文。
package.json
我是通过 2022 年 3 月 30 日的更新并使用 Unified Engine, Configuration, Schema 部分中说明的不同语法来解决这个问题的。
同样,我的目标是 configure the rule to ignore the Azure DevOps Wiki's non-standard table 的内容标签,[[_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.
Test\Test.md: no issues found