diff --git a/.eslintrc.cjs b/.eslintrc.cjs index b3c31d519d30d5..555654b9690922 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -175,19 +175,8 @@ module.exports = defineConfig({ 'n/no-extraneous-require': 'off', 'n/no-missing-import': 'off', 'n/no-missing-require': 'off', - // engine field doesn't exist in playgrounds - 'n/no-unsupported-features/es-builtins': [ - 'error', - { - version: pkg.engines.node, - }, - ], - 'n/no-unsupported-features/node-builtins': [ - 'error', - { - version: pkg.engines.node, - }, - ], + 'n/no-unsupported-features/es-builtins': 'off', + 'n/no-unsupported-features/node-builtins': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', }, }, @@ -216,6 +205,24 @@ module.exports = defineConfig({ 'i/no-commonjs': 'error', }, }, + { + files: ['playground/**/__tests__/**'], + rules: { + // engine field doesn't exist in playgrounds + 'n/no-unsupported-features/es-builtins': [ + 'error', + { + version: pkg.engines.node, + }, + ], + 'n/no-unsupported-features/node-builtins': [ + 'error', + { + version: pkg.engines.node, + }, + ], + }, + }, { files: [ 'playground/tsconfig-json/**', diff --git a/package.json b/package.json index ec47953defb963..bd65a95529d13d 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "eslint": "^8.57.0", "eslint-define-config": "^2.1.0", "eslint-plugin-i": "^2.29.1", - "eslint-plugin-n": "^16.6.2", + "eslint-plugin-n": "^17.2.0", "eslint-plugin-regexp": "^2.5.0", "execa": "^8.0.1", "feed": "^4.2.2", diff --git a/packages/vite/index.cjs b/packages/vite/index.cjs index 7e5fec44e90637..ef2a182045698e 100644 --- a/packages/vite/index.cjs +++ b/packages/vite/index.cjs @@ -6,6 +6,7 @@ warnCjsUsage() module.exports.defineConfig = (config) => config // proxy cjs utils (sync functions) +// eslint-disable-next-line n/no-missing-require -- will be generated by build Object.assign(module.exports, require('./dist/node-cjs/publicUtils.cjs')) // async functions, can be redirect from ESM build diff --git a/packages/vite/src/node/ssr/runtime/__tests__/fixtures/circular/circular-index.js b/packages/vite/src/node/ssr/runtime/__tests__/fixtures/circular/circular-index.js index 9fdf137a639c8b..cf87d0e9c4e9f1 100644 --- a/packages/vite/src/node/ssr/runtime/__tests__/fixtures/circular/circular-index.js +++ b/packages/vite/src/node/ssr/runtime/__tests__/fixtures/circular/circular-index.js @@ -3,6 +3,5 @@ export { b } from './circular-b' // since there is no .accept, it does full reload import.meta.hot.on('vite:beforeFullReload', () => { - // eslint-disable-next-line no-console console.log('full reload') }) diff --git a/packages/vite/src/node/ssr/runtime/__tests__/fixtures/cjs-external-non-existing.js b/packages/vite/src/node/ssr/runtime/__tests__/fixtures/cjs-external-non-existing.js index 2b67706ca1dcfb..905b2492e757d3 100644 --- a/packages/vite/src/node/ssr/runtime/__tests__/fixtures/cjs-external-non-existing.js +++ b/packages/vite/src/node/ssr/runtime/__tests__/fixtures/cjs-external-non-existing.js @@ -1,4 +1,3 @@ import { nonExisting } from '@vitejs/cjs-external' -// eslint-disable-next-line no-console console.log(nonExisting) diff --git a/packages/vite/src/node/ssr/runtime/__tests__/fixtures/esm-external-non-existing.js b/packages/vite/src/node/ssr/runtime/__tests__/fixtures/esm-external-non-existing.js index 7a1d8a07ebc60a..3d5265ce521c06 100644 --- a/packages/vite/src/node/ssr/runtime/__tests__/fixtures/esm-external-non-existing.js +++ b/packages/vite/src/node/ssr/runtime/__tests__/fixtures/esm-external-non-existing.js @@ -1,4 +1,3 @@ import { nonExisting } from '@vitejs/esm-external' -// eslint-disable-next-line no-console console.log(nonExisting) diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index 90fa8daa038b74..b9ceece25f40f2 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -196,6 +196,7 @@ function testCaseInsensitiveFS() { } export const urlCanParse = + // eslint-disable-next-line n/no-unsupported-features/node-builtins URL.canParse ?? // URL.canParse is supported from Node.js 18.17.0+, 20.0.0+ ((path: string, base?: string | undefined): boolean => { diff --git a/packages/vite/src/runtime/sourcemap/index.ts b/packages/vite/src/runtime/sourcemap/index.ts index 8329c27013eb9a..648c5e52717fc2 100644 --- a/packages/vite/src/runtime/sourcemap/index.ts +++ b/packages/vite/src/runtime/sourcemap/index.ts @@ -8,6 +8,7 @@ export function enableSourceMapSupport(runtime: ViteRuntime): () => void { `Cannot use "sourcemapInterceptor: 'node'" because global "process" variable is not available.`, ) } + /* eslint-disable n/no-unsupported-features/node-builtins -- process.setSourceMapsEnabled and process.sourceMapsEnabled */ if (typeof process.setSourceMapsEnabled !== 'function') { throw new TypeError( `Cannot use "sourcemapInterceptor: 'node'" because "process.setSourceMapsEnabled" function is not available. Please use Node >= 16.6.0.`, @@ -16,6 +17,7 @@ export function enableSourceMapSupport(runtime: ViteRuntime): () => void { const isEnabledAlready = process.sourceMapsEnabled ?? false process.setSourceMapsEnabled(true) return () => !isEnabledAlready && process.setSourceMapsEnabled(false) + /* eslint-enable n/no-unsupported-features/node-builtins */ } return interceptStackTrace( runtime, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5183f84f16c70b..603da0897e4f80 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -97,8 +97,8 @@ importers: specifier: ^2.29.1 version: 2.29.1(@typescript-eslint/parser@7.5.0)(eslint@8.57.0) eslint-plugin-n: - specifier: ^16.6.2 - version: 16.6.2(eslint@8.57.0) + specifier: ^17.2.0 + version: 17.2.0(eslint@8.57.0) eslint-plugin-regexp: specifier: ^2.5.0 version: 2.5.0(eslint@8.57.0) @@ -1997,6 +1997,7 @@ packages: /@babel/highlight@7.24.2: resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} engines: {node: '>=6.9.0'} + requiresBuild: true dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 @@ -5251,12 +5252,6 @@ packages: engines: {node: '>=6'} dev: true - /builtins@5.0.1: - resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} - dependencies: - semver: 7.6.0 - dev: true - /bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -5922,6 +5917,14 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + /enhanced-resolve@5.16.0: + resolution: {integrity: sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: true + /entities@4.4.0: resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} engines: {node: '>=0.12'} @@ -6176,23 +6179,20 @@ packages: - supports-color dev: true - /eslint-plugin-n@16.6.2(eslint@8.57.0): - resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==} - engines: {node: '>=16.0.0'} + /eslint-plugin-n@17.2.0(eslint@8.57.0): + resolution: {integrity: sha512-XBkFQxjTFKy9oc925ezHcDoZ8VLdGfxRkdZf0poR4TjC+zvm28pG2Tc7ZZpD1/UxSAzbw6Zz0WpnpUX3KruAAA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: '>=7.0.0' + eslint: '>=8.23.0' dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - builtins: 5.0.1 + enhanced-resolve: 5.16.0 eslint: 8.57.0 eslint-plugin-es-x: 7.5.0(eslint@8.57.0) get-tsconfig: 4.7.2 - globals: 13.24.0 + globals: 14.0.0 ignore: 5.2.4 - is-builtin-module: 3.2.1 - is-core-module: 2.13.1 - minimatch: 3.1.2 - resolve: 1.22.4 + minimatch: 9.0.3 semver: 7.6.0 dev: true @@ -6770,6 +6770,11 @@ packages: type-fest: 0.20.2 dev: true + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: true + /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -9633,6 +9638,11 @@ packages: transitivePeerDependencies: - ts-node + /tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + /tar@6.1.11: resolution: {integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==} engines: {node: '>= 10'}