diff --git a/.eslintrc.js b/.eslintrc.js index 205c9b95d5021e..fe096a7451f376 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -465,7 +465,7 @@ module.exports = { }, }, { - files: ['scripts/**/*.mjs', 'packages/**/*.mjs'], + files: ['**/*.mjs'], rules: { 'import/extensions': ['error', 'ignorePackages'], }, diff --git a/docs/next.config.js b/docs/next.config.mjs similarity index 92% rename from docs/next.config.js rename to docs/next.config.mjs index 752ff6acaae871..55248cc2e94c07 100644 --- a/docs/next.config.js +++ b/docs/next.config.mjs @@ -1,18 +1,23 @@ // @ts-check -const path = require('path'); +import * as path from 'path'; +import * as url from 'url'; +import * as fs from 'fs'; // @ts-ignore -const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); -const pkg = require('../package.json'); -const withDocsInfra = require('./nextConfigDocsInfra'); -const { findPages } = require('./src/modules/utils/find'); -const { +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; +import { createRequire } from 'module'; +import withDocsInfra from './nextConfigDocsInfra.js'; +import { findPages } from './src/modules/utils/find.mjs'; +import { LANGUAGES, LANGUAGES_SSR, LANGUAGES_IGNORE_PAGES, LANGUAGES_IN_PROGRESS, -} = require('./config'); +} from './config.js'; -const workspaceRoot = path.join(__dirname, '../'); +const currentDirectory = url.fileURLToPath(new URL('.', import.meta.url)); +const require = createRequire(import.meta.url); + +const workspaceRoot = path.join(currentDirectory, '../'); const l10nPRInNetlify = /^l10n_/.test(process.env.HEAD || '') && process.env.NETLIFY === 'true'; const vercelDeploy = Boolean(process.env.VERCEL); @@ -20,7 +25,10 @@ const isDeployPreview = Boolean(process.env.PULL_REQUEST_ID); // For crowdin PRs we want to build all locales for testing. const buildOnlyEnglishLocale = isDeployPreview && !l10nPRInNetlify && !vercelDeploy; -module.exports = withDocsInfra({ +const pkgContent = fs.readFileSync(path.resolve(workspaceRoot, 'package.json'), 'utf8'); +const pkg = JSON.parse(pkgContent); + +export default withDocsInfra({ webpack: (config, options) => { const plugins = config.plugins.slice(); diff --git a/docs/src/modules/utils/find.js b/docs/src/modules/utils/find.mjs similarity index 85% rename from docs/src/modules/utils/find.js rename to docs/src/modules/utils/find.mjs index 1c9ca0a1dff28c..cffc301583f296 100644 --- a/docs/src/modules/utils/find.js +++ b/docs/src/modules/utils/find.mjs @@ -1,5 +1,8 @@ -const fs = require('fs'); -const path = require('path'); +import * as fs from 'fs'; +import * as url from 'url'; +import * as path from 'path'; + +const currentDirectory = url.fileURLToPath(new URL('.', import.meta.url)); const pageRegex = /(\.js|\.tsx)$/; const blackList = ['/.eslintrc', '/_document', '/_app']; @@ -19,9 +22,10 @@ const blackList = ['/.eslintrc', '/_document', '/_app']; * @param {NextJSPage[]} pages * @returns {NextJSPage[]} */ -function findPages( +// eslint-disable-next-line import/prefer-default-export +export function findPages( options = {}, - directory = path.resolve(__dirname, '../../../pages'), + directory = path.resolve(currentDirectory, '../../../pages'), pages = [], ) { fs.readdirSync(directory).forEach((item) => { @@ -80,7 +84,3 @@ function findPages( return pages; } - -module.exports = { - findPages, -}; diff --git a/docs/tsconfig.json b/docs/tsconfig.json index 4dc232509b9b8b..1303011574a0c7 100644 --- a/docs/tsconfig.json +++ b/docs/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../tsconfig.json", - "include": ["next-env.d.ts", "types", "src", "pages", "data", "next.config.js"], + "include": ["next-env.d.ts", "types", "src", "pages", "data", "next.config.mjs"], "compilerOptions": { "allowJs": true, "isolatedModules": true,