{"id":26272,"library":"remark-lint-no-tabs","title":"remark-lint-no-tabs","description":"Remark-lint rule to warn when hard tabs are used in Markdown instead of spaces. Current stable version is 4.0.1. It is part of the remark-lint monorepo, which is actively maintained with frequent releases. This rule is specific to Markdown, where tabs can cause unexpected rendering due to the hardcoded tab size of 4, making it distinct from general linters. It works with unified and remark-stringify, which automatically uses spaces. No options needed.","status":"active","version":"4.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/remarkjs/remark-lint#main","tags":["javascript","lint","remark","remark-lint","remark-lint-rule","rule","tab","typescript"],"install":[{"cmd":"npm install remark-lint-no-tabs","lang":"bash","label":"npm"},{"cmd":"yarn add remark-lint-no-tabs","lang":"bash","label":"yarn"},{"cmd":"pnpm add remark-lint-no-tabs","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Core unified ecosystem package for processing Markdown","package":"unified","optional":false},{"reason":"Required to enable linting in the unified pipeline","package":"remark-lint","optional":false},{"reason":"Required to parse Markdown into an AST","package":"remark-parse","optional":false},{"reason":"Often used alongside for consistency, though not strictly required for linting","package":"remark-stringify","optional":true}],"imports":[{"note":"Package is ESM-only since v3. Default export is the plugin function.","wrong":"const remarkLintNoTabs = require('remark-lint-no-tabs')","symbol":"remarkLintNoTabs","correct":"import remarkLintNoTabs from 'remark-lint-no-tabs'"},{"note":"remark-lint is a default export, not a named export.","wrong":"import { remarkLint } from 'remark-lint'","symbol":"remarkLint","correct":"import remarkLint from 'remark-lint'"},{"note":"unified is a named export since v9. Default export is deprecated.","wrong":"import unified from 'unified'","symbol":"unified","correct":"import { unified } from 'unified'"}],"quickstart":{"code":"import remarkLint from 'remark-lint'\nimport remarkLintNoTabs from 'remark-lint-no-tabs'\nimport remarkParse from 'remark-parse'\nimport remarkStringify from 'remark-stringify'\nimport { read } from 'to-vfile'\nimport { unified } from 'unified'\nimport { reporter } from 'vfile-reporter'\n\nconst file = await read('example.md')\n\nawait unified()\n  .use(remarkParse)\n  .use(remarkLint)\n  .use(remarkLintNoTabs)\n  .use(remarkStringify)\n  .process(file)\n\nconsole.error(reporter(file))","lang":"typescript","description":"Sets up a unified pipeline with remark, parses a Markdown file, lints for tabs, and reports any issues."},"warnings":[{"fix":"Use import instead of require(). If using CommonJS, use dynamic import() or upgrade to Node.js 16+.","message":"Package is ESM-only since v3. require() will throw ERR_REQUIRE_ESM.","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Remove any options passed to remarkLintNoTabs(). In v3+, the rule has no options.","message":"The previous version 2.x used a different API signature. The plugin no longer accepts options.","severity":"deprecated","affected_versions":"2.x"},{"fix":"Combine with other rules like remark-lint-no-mixed-spaces-and-tabs if needed.","message":"This rule only checks for hard tab characters (U+0009). It does not check for leading spaces or mixed indentation.","severity":"gotcha","affected_versions":"all"},{"fix":"Use default import: import remarkLintNoTabs from 'remark-lint-no-tabs'","message":"The package no longer exports a namespace. Default export is the plugin function.","severity":"breaking","affected_versions":">=3.0.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Change to import statement or use dynamic import: const remarkLintNoTabs = await import('remark-lint-no-tabs')","cause":"Using require() to load an ESM-only package.","error":"ERR_REQUIRE_ESM: require() of ES Module not supported"},{"fix":"Run npm install remark-lint-no-tabs in your project directory.","cause":"Package not installed or module path incorrect.","error":"Cannot find module 'remark-lint-no-tabs'"},{"fix":"Use: import remarkLintNoTabs from 'remark-lint-no-tabs'","cause":"Importing as named export instead of default export.","error":"TypeError: remarkLintNoTabs is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}