From 4bb0bd0f0ed48834840003361b40ce7be85f1154 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 1 Jun 2021 15:10:32 +0200 Subject: [PATCH] tools,doc: forbid CJS globals in ESM code snippets PR-URL: https://github.com/nodejs/node/pull/38889 Reviewed-By: James M Snell Reviewed-By: Danielle Adams Reviewed-By: Zeyu Yang Reviewed-By: Rich Trott Reviewed-By: Darshan Sen --- .eslintrc.js | 23 +++++++++++++++++++++++ doc/api/esm.md | 2 +- doc/api/packages.md | 8 ++++---- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index f5b3dfa61a8064..f5366997b74265 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -76,6 +76,29 @@ module.exports = { 'doc/api/packages.md/*.js', ], parserOptions: { sourceType: 'module' }, + rules: { 'no-restricted-globals': [ + 'error', + { + name: '__filename', + message: 'Use import.meta.url instead', + }, + { + name: '__dirname', + message: 'Not available in ESM', + }, + { + name: 'exports', + message: 'Not available in ESM', + }, + { + name: 'module', + message: 'Not available in ESM', + }, + { + name: 'require', + message: 'Use import instead', + }, + ] }, }, ], rules: { diff --git a/doc/api/esm.md b/doc/api/esm.md index 571789d79ddf71..af029e36e39c3c 100644 --- a/doc/api/esm.md +++ b/doc/api/esm.md @@ -373,7 +373,7 @@ analysis process. For example, consider a CommonJS module written: -```js +```cjs // cjs.cjs exports.name = 'exported'; ``` diff --git a/doc/api/packages.md b/doc/api/packages.md index 35ed4d4f0246a7..c5dbfa60ecaf50 100644 --- a/doc/api/packages.md +++ b/doc/api/packages.md @@ -659,7 +659,7 @@ import { another } from 'a-package/m.mjs'; Self-referencing is also available when using `require`, both in an ES module, and in a CommonJS one. For example, this code will also work: -```js +```cjs // ./a-module.js const { something } = require('a-package/foo'); // Loads from ./foo.js. ``` @@ -762,7 +762,7 @@ to be treated as ES modules, just as `"type": "commonjs"` would cause them to be treated as CommonJS. See [Enabling](#esm_enabling). -```js +```cjs // ./node_modules/pkg/index.cjs exports.name = 'value'; ``` @@ -875,7 +875,7 @@ CommonJS and ES module instances of the package: CommonJS and ES module versions of the package. For example, if the CommonJS and ES module entry points are `index.cjs` and `index.mjs`, respectively: - ```js + ```cjs // ./node_modules/pkg/index.cjs const state = require('./state.cjs'); module.exports.state = state; @@ -989,7 +989,7 @@ The `"main"` field defines the script that is used when the [package directory is loaded via `require()`](modules.md#modules_folders_as_modules). Its value is a path. -```js +```cjs require('./path/to/directory'); // This resolves to ./path/to/directory/main.js. ```