1"use strict";(self.webpackChunktsdoc_org=self.webpackChunktsdoc_org||[]).push([[2798],{5552(e,t,n){n.d(t,{xA:()=>l,yg:()=>d});var r=n(829);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach(function(t){a(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function s(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},p=Object.keys(e);for(r=0;r<p.length;r++)n=p[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);for(r=0;r<p.length;r++)n=p[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var o=r.createContext({}),c=function(e){var t=r.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},l=function(e){var t=c(e.components);return r.createElement(o.Provider,{value:t},e.children)},g={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef(function(e,t){var n=e.components,a=e.mdxType,p=e.originalType,o=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),u=c(n),d=a,m=u["".concat(o,".").concat(d)]||u[d]||g[d]||p;return n?r.createElement(m,i(i({ref:t},l),{},{components:n})):r.createElement(m,i({ref:t},l))});function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var p=n.length,i=new Array(p);i[0]=u;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var c=2;c<p;c++)i[c]=n[c];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},4168(e,t,n){n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>s,metadata:()=>c,toc:()=>g});var r=n(6443),a=n(8338),p=(n(829),n(5552)),i=["components"],s={title:"eslint-plugin-tsdoc"},o=void 0,c={unversionedId:"pages/packages/eslint-plugin-tsdoc",id:"pages/packages/eslint-plugin-tsdoc",title:"eslint-plugin-tsdoc",description:"NPM package",source:"@site/docs/pages/packages/eslint-plugin-tsdoc.md",sourceDirName:"pages/packages",slug:"/pages/packages/eslint-plugin-tsdoc",permalink:"/pages/packages/eslint-plugin-tsdoc",draft:!1,editUrl:"https://github.com/microsoft/rushstack-websites/tree/main/websites/tsdoc.org/docs/pages/packages/eslint-plugin-tsdoc.md",tags:[],version:"current",frontMatter:{title:"eslint-plugin-tsdoc"},sidebar:"docsSidebar",previous:{title:"@microsoft/tsdoc-config",permalink:"/pages/packages/tsdoc-config"},next:{title:"TSDoc spec",permalink:"/pages/spec/overview"}},l={},g=[{value:"Usage",id:"usage",level:2}],u={toc:g};function d(e){var t=e.components,n=(0,a.A)(e,i);return(0,p.yg)("wrapper",(0,r.A)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,p.yg)("head",null,(0,p.yg)("link",{rel:"canonical",href:"https://tsdoc.org/pages/pages/packages/eslint-plugin-tsdoc/"})),(0,p.yg)("p",null,(0,p.yg)("a",{parentName:"p",href:"https://www.npmjs.com/package/eslint-plugin-tsdoc"},"NPM package"),(0,p.yg)("br",null),"\n",(0,p.yg)("a",{parentName:"p",href:"https://github.com/microsoft/tsdoc/blob/main/eslint-plugin/CHANGELOG.md"},"CHANGELOG.md")),(0,p.yg)("p",null,"This ESLint plugin provides a rule for validating that TypeScript doc comments conform to the\n",(0,p.yg)("a",{parentName:"p",href:"https://github.com/microsoft/tsdoc"},"TSDoc specification"),"."),(0,p.yg)("h2",{id:"usage"},"Usage"),(0,p.yg)("ol",null,(0,p.yg)("li",{parentName:"ol"},(0,p.yg)("p",{parentName:"li"},"Configure ESLint for your TypeScript project. See the instructions provided by the\n",(0,p.yg)("a",{parentName:"p",href:"https://github.com/typescript-eslint/typescript-eslint"},"typescript-eslint")," project.\nYou will end up with some dependencies like this:"),(0,p.yg)("p",{parentName:"li"},(0,p.yg)("strong",{parentName:"p"},"my-project/package.json")," (example)"),(0,p.yg)("pre",{parentName:"li"},(0,p.yg)("code",{parentName:"pre",className:"language-ts"}
1,'{\n "name": "my-project",\n "version": "1.0.0",\n "dependencies": {},\n "devDependencies": {\n "@typescript-eslint/eslint-plugin": "~2.6.1",\n "@typescript-eslint/parser": "~2.6.1",\n "eslint": "~6.6.0",\n "typescript": "~3.7.2"\n },\n "scripts": {\n "lint": "eslint -f unix \\"src/**/*.{ts,tsx}\\""\n }\n}\n'))),(0,p.yg)("li",{parentName:"ol"},(0,p.yg)("p",{parentName:"li"},"Add the ",(0,p.yg)("strong",{parentName:"p"},"eslint-plugin-tsdoc")," dependency to your project:"),(0,p.yg)("pre",{parentName:"li"},(0,p.yg)("code",{parentName:"pre",className:"language-bash"},"$ cd my-project\n$ npm install --save-dev eslint-plugin-tsdoc\n"))),(0,p.yg)("li",{parentName:"ol"},(0,p.yg)("p",{parentName:"li"},"In your ESLint config file, add the ",(0,p.yg)("inlineCode",{parentName:"p"},'"eslint-plugin-tsdoc"')," package to your ",(0,p.yg)("inlineCode",{parentName:"p"},"plugins")," field,\nand enable the ",(0,p.yg)("inlineCode",{parentName:"p"},'"tsdoc/syntax"')," rule. For example:"),(0,p.yg)("p",{parentName:"li"},(0,p.yg)("strong",{parentName:"p"},"my-project/.eslintrc.js")," (example)"),(0,p.yg)("pre",{parentName:"li"},(0,p.yg)("code",{parentName:"pre",className:"language-ts"},"module.exports = {\n plugins: ['@typescript-eslint/eslint-plugin', 'eslint-plugin-tsdoc'],\n extends: ['plugin:@typescript-eslint/recommended'],\n parser: '@typescript-eslint/parser',\n parserOptions: {\n project: './tsconfig.json',\n tsconfigRootDir: __dirname,\n ecmaVersion: 2018,\n sourceType: 'module'\n },\n rules: {\n 'tsdoc/syntax': 'warn'\n }\n};\n")))))}d.isMDXComponent=!0}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.