ESLint plugin that enforces exports of declarations like const, type, interface, class, enum
npm install eslint-plugin-required-exportsAn ESLint plugin that enforces exports for top-level declarations like const, function, class, interface, type, and enum.
``bash`
npm install --save-dev eslint-plugin-required-exportsor
pnpm add -D eslint-plugin-required-exportsor
yarn add -D eslint-plugin-required-exports
`js
import requiredExports from 'eslint-plugin-required-exports';
export default [
{
plugins: {
'required-exports': requiredExports,
},
rules: {
'required-exports/required-exports': 'error',
},
},
// or use the recommended config
requiredExports.configs.recommended,
];
`
`json`
{
"plugins": ["required-exports"],
"rules": {
"required-exports/required-exports": "error"
}
}
This rule enforces that top-level declarations must be exported.
`js`
const myConstant = 42;
function myFunction() {}
class MyClass {}
interface MyInterface {}
type MyType = string;
enum MyEnum { A, B }
`js
export const myConstant = 42;
export function myFunction() {}
export class MyClass {}
export interface MyInterface {}
export type MyType = string;
export enum MyEnum { A, B }
// Or using export statements
const myConstant = 42;
export { myConstant };
// Private identifiers are ignored by default
const _privateConstant = 42;
function _privateFunction() {}
`
The rule accepts an options object with the following properties:
`ts`
{
variable?: boolean; // default: true
function?: boolean; // default: true
class?: boolean; // default: true
interface?: boolean; // default: true
type?: boolean; // default: true
enum?: boolean; // default: true
ignorePrivate?: boolean; // default: true
}
#### Examples
`js
// Only check functions and classes
{
"required-exports/required-exports": ["error", {
"variable": false,
"function": true,
"class": true,
"interface": false,
"type": false,
"enum": false
}]
}
// Don't ignore private identifiers
{
"required-exports/required-exports": ["error", {
"ignorePrivate": false
}]
}
`
This rule supports auto-fixing. It will automatically add the export keyword to declarations that are missing it.
`bashInstall dependencies
pnpm install
Release Setup
To create releases, you'll need to configure environment variables:
1. Copy the example environment file:
`bash
cp .env.example .env
`2. Fill in your tokens in
.env:
`bash
# GitHub Personal Access Token for releases
GITHUB_TOKEN=ghp_your_token_here # NPM Token for publishing
NPM_TOKEN=npm_your_token_here
# Git configuration
GIT_USER_NAME="Your Name"
GIT_USER_EMAIL="your.email@example.com"
`3. Create tokens:
- GitHub Token: Go to GitHub Settings > Tokens
- Required scopes:
repo (for private repos) or public_repo (for public repos)
- NPM Token: Go to NPM Settings > Tokens
- Required scope: Automation or Publish4. Run release commands:
`bash
# Dry run to test the release process
pnpm release:dry # Create an actual release
pnpm release
``MIT