UNPKG

eslint-plugin-import

Version:
82 lines (53 loc) • 2.12 kB
# import/enforce-node-protocol-usage šŸ”§ This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix). <!-- end auto-generated rule header --> Enforce either using, or omitting, the `node:` protocol when importing Node.js builtin modules. ## Rule Details This rule enforces that builtins node imports are using, or omitting, the `node:` protocol. Determining whether a specifier is a core module depends on the node version being used to run `eslint`. This version can be specified in the configuration with the [`import/node-version` setting](../../README.md#importnode-version). Reasons to prefer using the protocol include: - the code is more explicitly and clearly referencing a Node.js built-in module Reasons to prefer omitting the protocol include: - some tools don't support the `node:` protocol - the code is more portable, because import maps and automatic polyfilling can be used ## Options The rule requires a single string option which may be one of: - `'always'` - enforces that builtins node imports are using the `node:` protocol. - `'never'` - enforces that builtins node imports are not using the `node:` protocol. ## Examples ### `'always'` āŒ Invalid ```js import fs from 'fs'; export { promises } from 'fs'; // require const fs = require('fs/promises'); ``` āœ… Valid ```js import fs from 'node:fs'; export { promises } from 'node:fs'; import * as test from 'node:test'; // require const fs = require('node:fs/promises'); ``` ### `'never'` āŒ Invalid ```js import fs from 'node:fs'; export { promises } from 'node:fs'; // require const fs = require('node:fs/promises'); ``` āœ… Valid ```js import fs from 'fs'; export { promises } from 'fs'; // require const fs = require('fs/promises'); // This rule will not enforce not using `node:` protocol when the module is only available under the `node:` protocol. import * as test from 'node:test'; ``` ## When Not To Use It If you don't want to consistently enforce using, or omitting, the `node:` protocol when importing Node.js builtin modules.