{"id":26218,"library":"remark-lint-final-newline","title":"remark-lint-final-newline","description":"remark-lint rule to warn when a final newline character (\\n) is missing at the end of a file. Part of the remark-lint ecosystem, this plugin enforces POSIX-style file endings. Current stable version is 3.0.1 (ESM-only, requires Node.js 16+). It is included in the `remark-preset-lint-recommended` preset. Unlike some linters that auto-fix, this rule only warns; auto-fixing can be done via `remark-stringify`. No configuration options.","status":"active","version":"3.0.1","language":"javascript","source_language":"en","source_url":"https://github.com/remarkjs/remark-lint#main","tags":["javascript","final","lint","newline","remark","remark-lint","remark-lint-rule","rule","unix","typescript"],"install":[{"cmd":"npm install remark-lint-final-newline","lang":"bash","label":"npm"},{"cmd":"yarn add remark-lint-final-newline","lang":"bash","label":"yarn"},{"cmd":"pnpm add remark-lint-final-newline","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Unified ecosystem core plugin interface","package":"unified","optional":false},{"reason":"Parent lint framework","package":"remark-lint","optional":false},{"reason":"Markdown parser for processing","package":"remark-parse","optional":false},{"reason":"Markdown serializer for fixing","package":"remark-stringify","optional":true}],"imports":[{"note":"Package is ESM-only since v3; CJS require() will fail.","wrong":"const remarkLintFinalNewline = require('remark-lint-final-newline')","symbol":"remarkLintFinalNewline","correct":"import remarkLintFinalNewline from 'remark-lint-final-newline'"},{"note":"Package exports a single default function. No named exports.","symbol":"default","correct":"import remarkLintFinalNewline from 'remark-lint-final-newline'"},{"note":"Used as a unified plugin. No options are accepted.","symbol":"remark-lint-final-newline","correct":".use(remarkLintFinalNewline)"}],"quickstart":{"code":"import { unified } from 'unified';\nimport remarkParse from 'remark-parse';\nimport remarkStringify from 'remark-stringify';\nimport remarkLint from 'remark-lint';\nimport remarkLintFinalNewline from 'remark-lint-final-newline';\nimport { read } from 'to-vfile';\nimport { reporter } from 'vfile-reporter';\n\nconst file = await read('example.md');\n\nawait unified()\n  .use(remarkParse)\n  .use(remarkLint)\n  .use(remarkLintFinalNewline)\n  .use(remarkStringify)\n  .process(file);\n\nconsole.error(reporter(file));","lang":"typescript","description":"Set up unified pipeline with remark-parse, remark-lint, the rule, and remark-stringify to lint and optionally fix missing final newline."},"warnings":[{"fix":"Switch to import syntax and ensure Node.js >=16.","message":"v3 is ESM-only; requires Node.js 16+ and cannot be used with require().","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Do not pass any arguments to .use(remarkLintFinalNewline).","message":"The package does not accept options; passing options may cause unexpected behavior in future versions.","severity":"deprecated","affected_versions":">=3.0.0"},{"fix":"Ensure remark-stringify is included in your unified pipeline.","message":"The rule only warns, it does not fix. Use remark-stringify to auto-add final newlines.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"The rule expects exactly one \\n at EOF. Use remark-stringify to normalize.","message":"The rule checks for a single newline at end of file; multiple newlines or missing newline are flagged.","severity":"gotcha","affected_versions":">=1.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 remarkLintFinalNewline from 'remark-lint-final-newline'","cause":"Using CJS require() with ESM-only package.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module"},{"fix":"npm install remark-lint-final-newline","cause":"Package not installed.","error":"Cannot find module 'remark-lint-final-newline'"},{"fix":"Use default import: import remarkLintFinalNewline from 'remark-lint-final-newline'","cause":"Incorrect import or using the wrong symbol.","error":"TypeError: remarkLintFinalNewline is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}