vercel / next.js

The React Framework
https://nextjs.org
MIT License
125.12k stars 26.73k forks source link

[Feature Request] Ability to extend the webpack `config.extensions` #25807

Closed ctrlaltdylan closed 3 years ago

ctrlaltdylan commented 3 years ago

Describe the feature you'd like to request

Currently it appears that under the hood the Webpack extensions entry is a function.

This makes is difficult to extend to add your own definition. For example, I'm trying to add an extension object to ignore the sharp library.

However, because the webpack.config.extensions is a function, it's not clear how to extend it.

const moduleExports = {
  webpack: (config, options) => {
     config.extensions; // this is a function, not an object.

     return config;
  }
}

Describe the solution you'd like

Documentation on a workaround would be enough. I don't think most NextJS users are trying to change webpack configs too deeply.

Perhaps something like this?

const moduleExports = {
  webpack: (config, options) => {
     config.extensions = (extensions) => {
       return Object.merge(extensions, { foo: 'bar' })
     }
     return config;
  }
}

Describe alternatives you've considered

Tried the above, no luck. I'll need to dive in the source more to find out what's going on but haven't had the chance yet.

mattcarlotta commented 3 years ago

Can you elaborate on the problem you're facing with sharp. Webpack doesn't have a root extensions property. Instead, the only extensions property it has resides within resolve, which deals with resolving imports without an explicit extension:

So instead of this:

import file from "dir/path/to/file.ext"

You can do this:

import file from "dir/path/to/file";

Therefore, I'm not sure how this will be able to apply to your goal:

ignore the sharp library


Typical webpack configs (for development)

Client (v4) ```json { "externals": [ "next" ], "optimization": { "noEmitOnErrors": true, "checkWasmTypes": false, "nodeEnv": false, "splitChunks": { "cacheGroups": { "default": false, "vendors": false } }, "runtimeChunk": { "name": "webpack" }, "minimize": false, "minimizer": [ "compiler=>{// @ts-ignore No typings yet\nconst{TerserPlugin}=require('./webpack/plugins/terser-webpack-plugin/src/index.js');new TerserPlugin({cacheDir:_path.default.join(distDir,'cache','next-minifier'),parallel:config.experimental.cpus,terserOptions}).apply(compiler);}", "compiler=>{const{CssMinimizerPlugin}=require('./webpack/plugins/css-minimizer-plugin');new CssMinimizerPlugin({postcssOptions:{map:{// `inline: false` generates the source map in a separate file.\n// Otherwise, the CSS file is needlessly large.\ninline:false,// `annotation: false` skips appending the `sourceMappingURL`\n// to the end of the CSS file. Webpack already handles this.\nannotation:false}}}).apply(compiler);}" ] }, "context": "/home/m6d/Desktop/my-app", "node": { "setImmediate": false }, "entry": "async()=>{return{...(clientEntries?clientEntries:{}),...entrypoints};}", "watchOptions": { "aggregateTimeout": 5, "ignored": [ "**/.git/**", "**/node_modules/**", "**/.next/**", "**/.#*" ] }, "output": { "path": "/home/m6d/Desktop/my-app/.next", "filename": "static/chunks/[name].js", "library": "_N_E", "libraryTarget": "assign", "hotUpdateChunkFilename": "static/webpack/[id].[hash].hot-update.js", "hotUpdateMainFilename": "static/webpack/[hash].hot-update.json", "chunkFilename": "static/chunks/[name].js", "strictModuleExceptionHandling": true, "futureEmitAssets": false, "webassemblyModuleFilename": "static/wasm/[modulehash].wasm" }, "performance": false, "resolve": { "extensions": [ ".mjs", ".js", ".jsx", ".json", ".wasm" ], "modules": [ "node_modules" ], "alias": { "next": "/home/m6d/Desktop/my-app/node_modules/next", "private-next-pages": "/home/m6d/Desktop/my-app/pages", "private-dot-next": "/home/m6d/Desktop/my-app/.next", "unfetch$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/fetch/index.js", "isomorphic-unfetch$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/fetch/index.js", "whatwg-fetch$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/fetch/whatwg-fetch.js", "object-assign$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object-assign.js", "object.assign/auto": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/auto.js", "object.assign/implementation": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/implementation.js", "object.assign$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/index.js", "object.assign/polyfill": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/polyfill.js", "object.assign/shim": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/shim.js", "url": "/home/m6d/Desktop/my-app/node_modules/native-url/dist/index.js", "/home/m6d/Desktop/my-app/node_modules/next/dist/next-server/lib/router/utils/resolve-rewrites.js": "/home/m6d/Desktop/my-app/node_modules/next/dist/next-server/lib/router/utils/resolve-rewrites-noop.js" }, "mainFields": [ "browser", "module", "main" ], "plugins": [ { "apply": "function nothing() {\n // ¯\\_(ツ)_/¯\n}", "makePlugin": "(locator, filter) => process.versions.pnp ? {\n apply: makeResolver(locator, filter),\n} : {\n apply: nothing,\n}", "moduleLoader": "module => process.versions.pnp ? {\n apply: makeResolver(getModuleLocator(module)),\n} : {\n apply: nothing,\n}", "topLevelLoader": { "apply": "function nothing() {\n // ¯\\_(ツ)_/¯\n}" }, "bind": "(filter, module, dependency) => process.versions.pnp ? {\n apply: makeResolver(dependency ? getDependencyLocator(getModuleLocator(module), dependency) : getModuleLocator(module), filter),\n} : {\n apply: nothing,\n}", "tsLoaderOptions": "(options = {}) => process.versions.pnp ? Object.assign({}, options, {\n resolveModuleName: resolveModuleName,\n resolveTypeReferenceDirective: resolveModuleName,\n}) : options", "forkTsCheckerOptions": "(options = {}) => process.versions.pnp ? Object.assign({}, options, {\n resolveModuleNameModule: require.resolve(`./ts`),\n resolveTypeReferenceDirectiveModule: require.resolve(`./ts`),\n}) : options" } ] }, "resolveLoader": { "alias": { "emit-file-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/emit-file-loader", "error-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/error-loader", "next-babel-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-babel-loader", "next-client-pages-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader", "next-serverless-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-serverless-loader", "noop-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/noop-loader", "next-style-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-style-loader" }, "modules": [ "node_modules" ], "plugins": [ { "apply": "function nothing() {\n // ¯\\_(ツ)_/¯\n}", "makePlugin": "(locator, filter) => process.versions.pnp ? {\n apply: makeResolver(locator, filter),\n} : {\n apply: nothing,\n}", "moduleLoader": "module => process.versions.pnp ? {\n apply: makeResolver(getModuleLocator(module)),\n} : {\n apply: nothing,\n}", "topLevelLoader": { "apply": "function nothing() {\n // ¯\\_(ツ)_/¯\n}" }, "bind": "(filter, module, dependency) => process.versions.pnp ? {\n apply: makeResolver(dependency ? getDependencyLocator(getModuleLocator(module), dependency) : getModuleLocator(module), filter),\n} : {\n apply: nothing,\n}", "tsLoaderOptions": "(options = {}) => process.versions.pnp ? Object.assign({}, options, {\n resolveModuleName: resolveModuleName,\n resolveTypeReferenceDirective: resolveModuleName,\n}) : options", "forkTsCheckerOptions": "(options = {}) => process.versions.pnp ? Object.assign({}, options, {\n resolveModuleNameModule: require.resolve(`./ts`),\n resolveTypeReferenceDirectiveModule: require.resolve(`./ts`),\n}) : options" } ] }, "module": { "rules": [ { "test": "/\\.(tsx|ts|js|mjs|jsx)$/", "include": [ "/home/m6d/Desktop/my-app", "/next[\\\\/]dist[\\\\/]next-server[\\\\/]lib/", "/next[\\\\/]dist[\\\\/]client/", "/next[\\\\/]dist[\\\\/]pages/", "/[\\\\/](strip-ansi|ansi-regex)[\\\\/]/" ], "exclude": "excludePath=>{if(babelIncludeRegexes.some(r=>r.test(excludePath))){return false;}return /node_modules/.test(excludePath);}", "use": [ "/home/m6d/Desktop/my-app/node_modules/@next/react-refresh-utils/loader.js", { "loader": "next-babel-loader", "options": { "isServer": false, "distDir": "/home/m6d/Desktop/my-app/.next", "pagesDir": "/home/m6d/Desktop/my-app/pages", "cwd": "/home/m6d/Desktop/my-app", "cache": true, "development": true, "hasReactRefresh": true, "hasJsxRuntime": true } } ] }, { "oneOf": [ { "test": "/a^/", "loader": "noop-loader", "options": { "__next_css_remove": true } }, { "test": "/\\.(css|scss|sass)(\\.webpack\\[javascript\\/auto\\])?$/", "issuer": "/pages[\\\\/]_document\\./", "use": { "loader": "error-loader", "options": { "reason": "CSS \u001b[1mcannot\u001b[22m be imported within \u001b[36mpages/_document.js\u001b[39m. Please move global styles to \u001b[36mpages/_app.js\u001b[39m." } } }, { "sideEffects": false, "test": "/\\.module\\.css$/", "issuer": { "and": [ "/home/m6d/Desktop/my-app" ], "not": [ "/node_modules/" ] }, "use": [ { "loader": "next-style-loader", "options": { "insert": "function(element){// These elements should always exist. If they do not,\n// this code should fail.\nvar anchorElement=document.querySelector('#__next_css__DO_NOT_USE__');var parentNode=anchorElement.parentNode;// Normally \n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 1, "sourceMap": true, "esModule": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)", "modules": { "exportLocalsConvention": "asIs", "exportOnlyLocals": false, "mode": "pure", "getLocalIdent": "function getCssModuleLocalIdent(context,_,exportName,options){const relativePath=_path.default.relative(context.rootContext,context.resourcePath).replace(/\\\\+/g,'/');// Generate a more meaningful name (parent folder) when the user names the\n// file `index.module.css`.\nconst fileNameOrFolder=regexLikeIndexModule.test(relativePath)?'[folder]':'[name]';// Generate a hash to make the class name unique.\nconst hash=_loaderUtils.default.getHashDigest(Buffer.from(`filePath:${relativePath}#className:${exportName}`),'md5','base64',5);// Have webpack interpolate the `[folder]` or `[name]` to its real value.\nreturn _loaderUtils.default.interpolateName(context,fileNameOrFolder+'_'+exportName+'__'+hash,options).replace(// Webpack name interpolation returns `about.module_root__2oFM9` for\n// `.root {}` inside a file named `about.module.css`. Let's simplify\n// this.\n/\\.module_/,'_')// Replace invalid symbols with underscores instead of escaping\n// https://mathiasbynens.be/notes/css-escapes#identifiers-strings\n.replace(/[^a-zA-Z0-9-_]/g,'_')// \"they cannot start with a digit, two hyphens, or a hyphen followed by a digit [sic]\"\n// https://www.w3.org/TR/CSS21/syndata.html#characters\n.replace(/^(\\d|--|-\\d)/,'__$1');}" } } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } } ] }, { "sideEffects": false, "test": "/\\.module\\.(scss|sass)$/", "issuer": { "and": [ "/home/m6d/Desktop/my-app" ], "not": [ "/node_modules/" ] }, "use": [ { "loader": "next-style-loader", "options": { "insert": "function(element){// These elements should always exist. If they do not,\n// this code should fail.\nvar anchorElement=document.querySelector('#__next_css__DO_NOT_USE__');var parentNode=anchorElement.parentNode;// Normally \n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 3, "sourceMap": true, "esModule": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)", "modules": { "exportLocalsConvention": "asIs", "exportOnlyLocals": false, "mode": "pure", "getLocalIdent": "function getCssModuleLocalIdent(context,_,exportName,options){const relativePath=_path.default.relative(context.rootContext,context.resourcePath).replace(/\\\\+/g,'/');// Generate a more meaningful name (parent folder) when the user names the\n// file `index.module.css`.\nconst fileNameOrFolder=regexLikeIndexModule.test(relativePath)?'[folder]':'[name]';// Generate a hash to make the class name unique.\nconst hash=_loaderUtils.default.getHashDigest(Buffer.from(`filePath:${relativePath}#className:${exportName}`),'md5','base64',5);// Have webpack interpolate the `[folder]` or `[name]` to its real value.\nreturn _loaderUtils.default.interpolateName(context,fileNameOrFolder+'_'+exportName+'__'+hash,options).replace(// Webpack name interpolation returns `about.module_root__2oFM9` for\n// `.root {}` inside a file named `about.module.css`. Let's simplify\n// this.\n/\\.module_/,'_')// Replace invalid symbols with underscores instead of escaping\n// https://mathiasbynens.be/notes/css-escapes#identifiers-strings\n.replace(/[^a-zA-Z0-9-_]/g,'_')// \"they cannot start with a digit, two hyphens, or a hyphen followed by a digit [sic]\"\n// https://www.w3.org/TR/CSS21/syndata.html#characters\n.replace(/^(\\d|--|-\\d)/,'__$1');}" } } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/resolve-url-loader/index.js", "options": { "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/sass-loader/cjs.js", "options": { "sourceMap": true, "sassOptions": {} } } ] }, { "test": [ "/\\.module\\.css$/", "/\\.module\\.(scss|sass)$/" ], "use": { "loader": "error-loader", "options": { "reason": "CSS Modules \u001b[1mcannot\u001b[22m be imported from within \u001b[1mnode_modules\u001b[22m.\nRead more: https://nextjs.org/docs/messages/css-modules-npm" } } }, { "sideEffects": true, "test": "/(?\n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 1, "sourceMap": true, "modules": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } } ] }, { "sideEffects": true, "test": "/(?\n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 1, "sourceMap": true, "modules": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } } ] }, { "sideEffects": true, "test": "/(?\n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 3, "sourceMap": true, "modules": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/resolve-url-loader/index.js", "options": { "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/sass-loader/cjs.js", "options": { "sourceMap": true, "sassOptions": {} } } ] }, { "test": [ "/(?\u001b[22m. Please move all global CSS imports to \u001b[36mpages/_app.js\u001b[39m. Or convert the import to Component-Level CSS (CSS Modules).\nRead more: https://nextjs.org/docs/messages/css-global" } } }, { "issuer": "/\\.(css|scss|sass)(\\.webpack\\[javascript\\/auto\\])?$/", "exclude": [ "/\\.(js|mjs|jsx|ts|tsx)$/", "/\\.html$/", "/\\.json$/", "/\\.webpack\\[[^\\]]+\\]$/" ], "use": { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/file-loader/cjs.js", "options": { "name": "static/media/[name].[hash].[ext]" } } } ] } ], "strictExportPresence": true }, "plugins": [ { "webpackMajorVersion": 4, "Template": "class Template {\n\t/**\n\t *\n\t * @param {Function} fn a runtime function (.runtime.js) \"template\"\n\t * @returns {string} the updated and normalized function string\n\t */\n\tstatic getFunctionContent(fn) {\n\t\treturn fn\n\t\t\t.toString()\n\t\t\t.replace(FUNCTION_CONTENT_REGEX, \"\")\n\t\t\t.replace(INDENT_MULTILINE_REGEX, \"\")\n\t\t\t.replace(LINE_SEPARATOR_REGEX, \"\\n\");\n\t}\n\n\t/**\n\t * @param {string} str the string converted to identifier\n\t * @returns {string} created identifier\n\t */\n\tstatic toIdentifier(str) {\n\t\tif (typeof str !== \"string\") return \"\";\n\t\treturn str\n\t\t\t.replace(IDENTIFIER_NAME_REPLACE_REGEX, \"_$1\")\n\t\t\t.replace(IDENTIFIER_ALPHA_NUMERIC_NAME_REPLACE_REGEX, \"_\");\n\t}\n\t/**\n\t *\n\t * @param {string} str string to be converted to commented in bundle code\n\t * @returns {string} returns a commented version of string\n\t */\n\tstatic toComment(str) {\n\t\tif (!str) return \"\";\n\t\treturn `/*! ${str.replace(COMMENT_END_REGEX, \"* /\")} */`;\n\t}\n\n\t/**\n\t *\n\t * @param {string} str string to be converted to \"normal comment\"\n\t * @returns {string} returns a commented version of string\n\t */\n\tstatic toNormalComment(str) {\n\t\tif (!str) return \"\";\n\t\treturn `/* ${str.replace(COMMENT_END_REGEX, \"* /\")} */`;\n\t}\n\n\t/**\n\t * @param {string} str string path to be normalized\n\t * @returns {string} normalized bundle-safe path\n\t */\n\tstatic toPath(str) {\n\t\tif (typeof str !== \"string\") return \"\";\n\t\treturn str\n\t\t\t.replace(PATH_NAME_NORMALIZE_REPLACE_REGEX, \"-\")\n\t\t\t.replace(MATCH_PADDED_HYPHENS_REPLACE_REGEX, \"\");\n\t}\n\n\t// map number to a single character a-z, A-Z or <_ + number> if number is too big\n\t/**\n\t *\n\t * @param {number} n number to convert to ident\n\t * @returns {string} returns single character ident\n\t */\n\tstatic numberToIdentifer(n) {\n\t\t// lower case\n\t\tif (n < DELTA_A_TO_Z) {\n\t\t\treturn String.fromCharCode(START_LOWERCASE_ALPHABET_CODE + n);\n\t\t}\n\n\t\t// upper case\n\t\tif (n < DELTA_A_TO_Z * 2) {\n\t\t\treturn String.fromCharCode(\n\t\t\t\tSTART_UPPERCASE_ALPHABET_CODE + n - DELTA_A_TO_Z\n\t\t\t);\n\t\t}\n\n\t\t// use multiple letters\n\t\treturn (\n\t\t\tTemplate.numberToIdentifer(n % (2 * DELTA_A_TO_Z)) +\n\t\t\tTemplate.numberToIdentifer(Math.floor(n / (2 * DELTA_A_TO_Z)))\n\t\t);\n\t}\n\n\t/**\n\t *\n\t * @param {string | string[]} s string to convert to identity\n\t * @returns {string} converted identity\n\t */\n\tstatic indent(s) {\n\t\tif (Array.isArray(s)) {\n\t\t\treturn s.map(Template.indent).join(\"\\n\");\n\t\t} else {\n\t\t\tconst str = s.trimRight();\n\t\t\tif (!str) return \"\";\n\t\t\tconst ind = str[0] === \"\\n\" ? \"\" : \"\\t\";\n\t\t\treturn ind + str.replace(/\\n([^\\n])/g, \"\\n\\t$1\");\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param {string|string[]} s string to create prefix for\n\t * @param {string} prefix prefix to compose\n\t * @returns {string} returns new prefix string\n\t */\n\tstatic prefix(s, prefix) {\n\t\tconst str = Template.asString(s).trim();\n\t\tif (!str) return \"\";\n\t\tconst ind = str[0] === \"\\n\" ? \"\" : prefix;\n\t\treturn ind + str.replace(/\\n([^\\n])/g, \"\\n\" + prefix + \"$1\");\n\t}\n\n\t/**\n\t *\n\t * @param {string|string[]} str string or string collection\n\t * @returns {string} returns a single string from array\n\t */\n\tstatic asString(str) {\n\t\tif (Array.isArray(str)) {\n\t\t\treturn str.join(\"\\n\");\n\t\t}\n\t\treturn str;\n\t}\n\n\t/**\n\t * @typedef {Object} WithId\n\t * @property {string|number} id\n\t */\n\n\t/**\n\t * @param {WithId[]} modules a collection of modules to get array bounds for\n\t * @returns {[number, number] | false} returns the upper and lower array bounds\n\t * or false if not every module has a number based id\n\t */\n\tstatic getModulesArrayBounds(modules) {\n\t\tlet maxId = -Infinity;\n\t\tlet minId = Infinity;\n\t\tfor (const module of modules) {\n\t\t\tif (typeof module.id !== \"number\") return false;\n\t\t\tif (maxId < module.id) maxId = /** @type {number} */ (module.id);\n\t\t\tif (minId > module.id) minId = /** @type {number} */ (module.id);\n\t\t}\n\t\tif (minId < 16 + (\"\" + minId).length) {\n\t\t\t// add minId x ',' instead of 'Array(minId).concat(…)'\n\t\t\tminId = 0;\n\t\t}\n\t\tconst objectOverhead = modules\n\t\t\t.map(module => (module.id + \"\").length + 2)\n\t\t\t.reduce((a, b) => a + b, -1);\n\t\tconst arrayOverhead =\n\t\t\tminId === 0 ? maxId : 16 + (\"\" + minId).length + maxId;\n\t\treturn arrayOverhead < objectOverhead ? [minId, maxId] : false;\n\t}\n\n\t/**\n\t * @param {Chunk} chunk chunk whose modules will be rendered\n\t * @param {ModuleFilterPredicate} filterFn function used to filter modules from chunk to render\n\t * @param {ModuleTemplate} moduleTemplate ModuleTemplate instance used to render modules\n\t * @param {TODO | TODO[]} dependencyTemplates templates needed for each module to render dependencies\n\t * @param {string=} prefix applying prefix strings\n\t * @returns {ConcatSource} rendered chunk modules in a Source object\n\t */\n\tstatic renderChunkModules(\n\t\tchunk,\n\t\tfilterFn,\n\t\tmoduleTemplate,\n\t\tdependencyTemplates,\n\t\tprefix = \"\"\n\t) {\n\t\tconst source = new ConcatSource();\n\t\tconst modules = chunk.getModules().filter(filterFn);\n\t\tlet removedModules;\n\t\tif (chunk instanceof HotUpdateChunk) {\n\t\t\tremovedModules = chunk.removedModules;\n\t\t}\n\t\tif (\n\t\t\tmodules.length === 0 &&\n\t\t\t(!removedModules || removedModules.length === 0)\n\t\t) {\n\t\t\tsource.add(\"[]\");\n\t\t\treturn source;\n\t\t}\n\t\t/** @type {{id: string|number, source: Source|string}[]} */\n\t\tconst allModules = modules.map(module => {\n\t\t\treturn {\n\t\t\t\tid: module.id,\n\t\t\t\tsource: moduleTemplate.render(module, dependencyTemplates, {\n\t\t\t\t\tchunk\n\t\t\t\t})\n\t\t\t};\n\t\t});\n\t\tif (removedModules && removedModules.length > 0) {\n\t\t\tfor (const id of removedModules) {\n\t\t\t\tallModules.push({\n\t\t\t\t\tid,\n\t\t\t\t\tsource: \"false\"\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tconst bounds = Template.getModulesArrayBounds(allModules);\n\t\tif (bounds) {\n\t\t\t// Render a spare array\n\t\t\tconst minId = bounds[0];\n\t\t\tconst maxId = bounds[1];\n\t\t\tif (minId !== 0) {\n\t\t\t\tsource.add(`Array(${minId}).concat(`);\n\t\t\t}\n\t\t\tsource.add(\"[\\n\");\n\t\t\t/** @type {Map} */\n\t\t\tconst modules = new Map();\n\t\t\tfor (const module of allModules) {\n\t\t\t\tmodules.set(module.id, module);\n\t\t\t}\n\t\t\tfor (let idx = minId; idx <= maxId; idx++) {\n\t\t\t\tconst module = modules.get(idx);\n\t\t\t\tif (idx !== minId) {\n\t\t\t\t\tsource.add(\",\\n\");\n\t\t\t\t}\n\t\t\t\tsource.add(`/* ${idx} */`);\n\t\t\t\tif (module) {\n\t\t\t\t\tsource.add(\"\\n\");\n\t\t\t\t\tsource.add(module.source);\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource.add(\"\\n\" + prefix + \"]\");\n\t\t\tif (minId !== 0) {\n\t\t\t\tsource.add(\")\");\n\t\t\t}\n\t\t} else {\n\t\t\t// Render an object\n\t\t\tsource.add(\"{\\n\");\n\t\t\tallModules.sort(stringifyIdSortPredicate).forEach((module, idx) => {\n\t\t\t\tif (idx !== 0) {\n\t\t\t\t\tsource.add(\",\\n\");\n\t\t\t\t}\n\t\t\t\tsource.add(`\\n/***/ ${JSON.stringify(module.id)}:\\n`);\n\t\t\t\tsource.add(module.source);\n\t\t\t});\n\t\t\tsource.add(`\\n\\n${prefix}}`);\n\t\t}\n\t\treturn source;\n\t}\n}" }, {}, { "definitions": { "process.env.NODE_ENV": "\"development\"", "process.browser": "true", "process.env.__NEXT_DIST_DIR": "\"/home/m6d/Desktop/my-app/.next\"", "process.env.__NEXT_TRAILING_SLASH": "false", "process.env.__NEXT_BUILD_INDICATOR": "true", "process.env.__NEXT_PLUGINS": "false", "process.env.__NEXT_STRICT_MODE": "false", "process.env.__NEXT_REACT_ROOT": "false", "process.env.__NEXT_OPTIMIZE_FONTS": "false", "process.env.__NEXT_OPTIMIZE_IMAGES": "false", "process.env.__NEXT_OPTIMIZE_CSS": "false", "process.env.__NEXT_SCRIPT_LOADER": "false", "process.env.__NEXT_SCROLL_RESTORATION": "false", "process.env.__NEXT_IMAGE_OPTS": "{\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image\",\"loader\":\"default\",\"domains\":[],\"enableBlurryPlaceholder\":false}", "process.env.__NEXT_ROUTER_BASEPATH": "\"\"", "process.env.__NEXT_HAS_REWRITES": "false", "process.env.__NEXT_I18N_SUPPORT": "false", "process.env.__NEXT_ANALYTICS_ID": "\"\"" } }, { "filename": "react-loadable-manifest.json", "pagesDir": "/home/m6d/Desktop/my-app/pages" }, { "ampPages": {} }, { "prevAssets": null, "previousOutputPathsWebpack5": {}, "currentOutputPathsWebpack5": {} }, { "options": {}, "fullBuildTimeout": 200, "requestTimeout": 10000 }, { "buildId": "development", "rewrites": { "beforeFiles": [], "afterFiles": [], "fallback": [] }, "isDevFallback": false }, {}, {} ], "mode": "development", "name": "client", "target": "web", "bail": false, "devtool": "eval-source-map" } ```
Server (v4) ```json { "externals": [ "(context,request,callback)=>handleExternals(context,request,()=>(resolveContext,requestToResolve)=>new Promise(resolve=>resolve(require.resolve(requestToResolve,{paths:[resolveContext]})))).then(result=>callback(undefined,result),callback)" ], "optimization": { "noEmitOnErrors": true, "checkWasmTypes": false, "nodeEnv": false, "splitChunks": false, "minimize": false, "minimizer": [ "compiler=>{// @ts-ignore No typings yet\nconst{TerserPlugin}=require('./webpack/plugins/terser-webpack-plugin/src/index.js');new TerserPlugin({cacheDir:_path.default.join(distDir,'cache','next-minifier'),parallel:config.experimental.cpus,terserOptions}).apply(compiler);}", "compiler=>{const{CssMinimizerPlugin}=require('./webpack/plugins/css-minimizer-plugin');new CssMinimizerPlugin({postcssOptions:{map:{// `inline: false` generates the source map in a separate file.\n// Otherwise, the CSS file is needlessly large.\ninline:false,// `annotation: false` skips appending the `sourceMappingURL`\n// to the end of the CSS file. Webpack already handles this.\nannotation:false}}}).apply(compiler);}" ] }, "context": "/home/m6d/Desktop/my-app", "node": { "setImmediate": false }, "entry": "async()=>{return{...(clientEntries?clientEntries:{}),...entrypoints};}", "watchOptions": { "aggregateTimeout": 5, "ignored": [ "**/.git/**", "**/node_modules/**", "**/.next/**", "**/.#*" ] }, "output": { "path": "/home/m6d/Desktop/my-app/.next/server", "filename": "[name].js", "libraryTarget": "commonjs2", "hotUpdateChunkFilename": "static/webpack/[id].[hash].hot-update.js", "hotUpdateMainFilename": "static/webpack/[hash].hot-update.json", "chunkFilename": "[name].js", "strictModuleExceptionHandling": true, "futureEmitAssets": false, "webassemblyModuleFilename": "static/wasm/[modulehash].wasm" }, "performance": false, "resolve": { "extensions": [ ".js", ".mjs", ".jsx", ".json", ".wasm" ], "modules": [ "node_modules" ], "alias": { "next": "/home/m6d/Desktop/my-app/node_modules/next", "private-next-pages": "/home/m6d/Desktop/my-app/pages", "private-dot-next": "/home/m6d/Desktop/my-app/.next", "/home/m6d/Desktop/my-app/node_modules/next/dist/next-server/lib/router/utils/resolve-rewrites.js": "/home/m6d/Desktop/my-app/node_modules/next/dist/next-server/lib/router/utils/resolve-rewrites-noop.js" }, "mainFields": [ "main", "module" ], "plugins": [ { "apply": "function nothing() {\n // ¯\\_(ツ)_/¯\n}", "makePlugin": "(locator, filter) => process.versions.pnp ? {\n apply: makeResolver(locator, filter),\n} : {\n apply: nothing,\n}", "moduleLoader": "module => process.versions.pnp ? {\n apply: makeResolver(getModuleLocator(module)),\n} : {\n apply: nothing,\n}", "topLevelLoader": { "apply": "function nothing() {\n // ¯\\_(ツ)_/¯\n}" }, "bind": "(filter, module, dependency) => process.versions.pnp ? {\n apply: makeResolver(dependency ? getDependencyLocator(getModuleLocator(module), dependency) : getModuleLocator(module), filter),\n} : {\n apply: nothing,\n}", "tsLoaderOptions": "(options = {}) => process.versions.pnp ? Object.assign({}, options, {\n resolveModuleName: resolveModuleName,\n resolveTypeReferenceDirective: resolveModuleName,\n}) : options", "forkTsCheckerOptions": "(options = {}) => process.versions.pnp ? Object.assign({}, options, {\n resolveModuleNameModule: require.resolve(`./ts`),\n resolveTypeReferenceDirectiveModule: require.resolve(`./ts`),\n}) : options" } ] }, "resolveLoader": { "alias": { "emit-file-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/emit-file-loader", "error-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/error-loader", "next-babel-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-babel-loader", "next-client-pages-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader", "next-serverless-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-serverless-loader", "noop-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/noop-loader", "next-style-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-style-loader" }, "modules": [ "node_modules" ], "plugins": [ { "apply": "function nothing() {\n // ¯\\_(ツ)_/¯\n}", "makePlugin": "(locator, filter) => process.versions.pnp ? {\n apply: makeResolver(locator, filter),\n} : {\n apply: nothing,\n}", "moduleLoader": "module => process.versions.pnp ? {\n apply: makeResolver(getModuleLocator(module)),\n} : {\n apply: nothing,\n}", "topLevelLoader": { "apply": "function nothing() {\n // ¯\\_(ツ)_/¯\n}" }, "bind": "(filter, module, dependency) => process.versions.pnp ? {\n apply: makeResolver(dependency ? getDependencyLocator(getModuleLocator(module), dependency) : getModuleLocator(module), filter),\n} : {\n apply: nothing,\n}", "tsLoaderOptions": "(options = {}) => process.versions.pnp ? Object.assign({}, options, {\n resolveModuleName: resolveModuleName,\n resolveTypeReferenceDirective: resolveModuleName,\n}) : options", "forkTsCheckerOptions": "(options = {}) => process.versions.pnp ? Object.assign({}, options, {\n resolveModuleNameModule: require.resolve(`./ts`),\n resolveTypeReferenceDirectiveModule: require.resolve(`./ts`),\n}) : options" } ] }, "module": { "rules": [ { "test": "/\\.(tsx|ts|js|mjs|jsx)$/", "include": [ "/home/m6d/Desktop/my-app", "/next[\\\\/]dist[\\\\/]next-server[\\\\/]lib/", "/next[\\\\/]dist[\\\\/]client/", "/next[\\\\/]dist[\\\\/]pages/", "/[\\\\/](strip-ansi|ansi-regex)[\\\\/]/" ], "exclude": "excludePath=>{if(babelIncludeRegexes.some(r=>r.test(excludePath))){return false;}return /node_modules/.test(excludePath);}", "use": { "loader": "next-babel-loader", "options": { "isServer": true, "distDir": "/home/m6d/Desktop/my-app/.next", "pagesDir": "/home/m6d/Desktop/my-app/pages", "cwd": "/home/m6d/Desktop/my-app", "cache": true, "development": true, "hasReactRefresh": false, "hasJsxRuntime": true } } }, { "oneOf": [ { "test": "/a^/", "loader": "noop-loader", "options": { "__next_css_remove": true } }, { "test": "/\\.(css|scss|sass)(\\.webpack\\[javascript\\/auto\\])?$/", "issuer": "/pages[\\\\/]_document\\./", "use": { "loader": "error-loader", "options": { "reason": "CSS \u001b[1mcannot\u001b[22m be imported within \u001b[36mpages/_document.js\u001b[39m. Please move global styles to \u001b[36mpages/_app.js\u001b[39m." } } }, { "sideEffects": false, "test": "/\\.module\\.css$/", "issuer": { "and": [ "/home/m6d/Desktop/my-app" ], "not": [ "/node_modules/" ] }, "use": [ { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 1, "sourceMap": true, "esModule": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)", "modules": { "exportLocalsConvention": "asIs", "exportOnlyLocals": true, "mode": "pure", "getLocalIdent": "function getCssModuleLocalIdent(context,_,exportName,options){const relativePath=_path.default.relative(context.rootContext,context.resourcePath).replace(/\\\\+/g,'/');// Generate a more meaningful name (parent folder) when the user names the\n// file `index.module.css`.\nconst fileNameOrFolder=regexLikeIndexModule.test(relativePath)?'[folder]':'[name]';// Generate a hash to make the class name unique.\nconst hash=_loaderUtils.default.getHashDigest(Buffer.from(`filePath:${relativePath}#className:${exportName}`),'md5','base64',5);// Have webpack interpolate the `[folder]` or `[name]` to its real value.\nreturn _loaderUtils.default.interpolateName(context,fileNameOrFolder+'_'+exportName+'__'+hash,options).replace(// Webpack name interpolation returns `about.module_root__2oFM9` for\n// `.root {}` inside a file named `about.module.css`. Let's simplify\n// this.\n/\\.module_/,'_')// Replace invalid symbols with underscores instead of escaping\n// https://mathiasbynens.be/notes/css-escapes#identifiers-strings\n.replace(/[^a-zA-Z0-9-_]/g,'_')// \"they cannot start with a digit, two hyphens, or a hyphen followed by a digit [sic]\"\n// https://www.w3.org/TR/CSS21/syndata.html#characters\n.replace(/^(\\d|--|-\\d)/,'__$1');}" } } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } } ] }, { "sideEffects": false, "test": "/\\.module\\.(scss|sass)$/", "issuer": { "and": [ "/home/m6d/Desktop/my-app" ], "not": [ "/node_modules/" ] }, "use": [ { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 3, "sourceMap": true, "esModule": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)", "modules": { "exportLocalsConvention": "asIs", "exportOnlyLocals": true, "mode": "pure", "getLocalIdent": "function getCssModuleLocalIdent(context,_,exportName,options){const relativePath=_path.default.relative(context.rootContext,context.resourcePath).replace(/\\\\+/g,'/');// Generate a more meaningful name (parent folder) when the user names the\n// file `index.module.css`.\nconst fileNameOrFolder=regexLikeIndexModule.test(relativePath)?'[folder]':'[name]';// Generate a hash to make the class name unique.\nconst hash=_loaderUtils.default.getHashDigest(Buffer.from(`filePath:${relativePath}#className:${exportName}`),'md5','base64',5);// Have webpack interpolate the `[folder]` or `[name]` to its real value.\nreturn _loaderUtils.default.interpolateName(context,fileNameOrFolder+'_'+exportName+'__'+hash,options).replace(// Webpack name interpolation returns `about.module_root__2oFM9` for\n// `.root {}` inside a file named `about.module.css`. Let's simplify\n// this.\n/\\.module_/,'_')// Replace invalid symbols with underscores instead of escaping\n// https://mathiasbynens.be/notes/css-escapes#identifiers-strings\n.replace(/[^a-zA-Z0-9-_]/g,'_')// \"they cannot start with a digit, two hyphens, or a hyphen followed by a digit [sic]\"\n// https://www.w3.org/TR/CSS21/syndata.html#characters\n.replace(/^(\\d|--|-\\d)/,'__$1');}" } } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/resolve-url-loader/index.js", "options": { "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/sass-loader/cjs.js", "options": { "sourceMap": true, "sassOptions": {} } } ] }, { "test": [ "/\\.module\\.css$/", "/\\.module\\.(scss|sass)$/" ], "use": { "loader": "error-loader", "options": { "reason": "CSS Modules \u001b[1mcannot\u001b[22m be imported from within \u001b[1mnode_modules\u001b[22m.\nRead more: https://nextjs.org/docs/messages/css-modules-npm" } } }, { "test": [ "/(?\u001b[22m. Please move all global CSS imports to \u001b[36mpages/_app.js\u001b[39m. Or convert the import to Component-Level CSS (CSS Modules).\nRead more: https://nextjs.org/docs/messages/css-global" } } } ] } ], "strictExportPresence": true }, "plugins": [ {}, { "definitions": { "process.env.NODE_ENV": "\"development\"", "process.browser": "false", "process.env.__NEXT_TRAILING_SLASH": "false", "process.env.__NEXT_BUILD_INDICATOR": "true", "process.env.__NEXT_PLUGINS": "false", "process.env.__NEXT_STRICT_MODE": "false", "process.env.__NEXT_REACT_ROOT": "false", "process.env.__NEXT_OPTIMIZE_FONTS": "false", "process.env.__NEXT_OPTIMIZE_IMAGES": "false", "process.env.__NEXT_OPTIMIZE_CSS": "false", "process.env.__NEXT_SCRIPT_LOADER": "false", "process.env.__NEXT_SCROLL_RESTORATION": "false", "process.env.__NEXT_IMAGE_OPTS": "{\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image\",\"loader\":\"default\",\"domains\":[],\"enableBlurryPlaceholder\":false}", "process.env.__NEXT_ROUTER_BASEPATH": "\"\"", "process.env.__NEXT_HAS_REWRITES": "false", "process.env.__NEXT_I18N_SUPPORT": "false", "process.env.__NEXT_ANALYTICS_ID": "\"\"", "global.GENTLY": "false" } }, { "prevAssets": null, "previousOutputPathsWebpack5": {}, "currentOutputPathsWebpack5": {} }, { "serverless": false, "dev": true }, { "options": { "outputPath": "/home/m6d/Desktop/my-app/.next/server" } }, {}, {}, {} ], "mode": "development", "name": "server", "target": "node", "bail": false, "devtool": "eval-source-map" } ```
Client (v5) ```json { "externals": [ "next" ], "optimization": { "emitOnErrors": false, "checkWasmTypes": false, "nodeEnv": false, "splitChunks": { "cacheGroups": { "default": false, "vendors": false } }, "runtimeChunk": { "name": "webpack" }, "minimize": false, "minimizer": [ "compiler=>{// @ts-ignore No typings yet\nconst{TerserPlugin}=require('./webpack/plugins/terser-webpack-plugin/src/index.js');new TerserPlugin({cacheDir:_path.default.join(distDir,'cache','next-minifier'),parallel:config.experimental.cpus,terserOptions}).apply(compiler);}", "compiler=>{const{CssMinimizerPlugin}=require('./webpack/plugins/css-minimizer-plugin');new CssMinimizerPlugin({postcssOptions:{map:{// `inline: false` generates the source map in a separate file.\n// Otherwise, the CSS file is needlessly large.\ninline:false,// `annotation: false` skips appending the `sourceMappingURL`\n// to the end of the CSS file. Webpack already handles this.\nannotation:false}}}).apply(compiler);}" ], "providedExports": false, "usedExports": false }, "context": "/home/m6d/Desktop/my-app", "node": {}, "entry": "async()=>{return{...(clientEntries?clientEntries:{}),...entrypoints};}", "watchOptions": { "aggregateTimeout": 5, "ignored": [ "**/.git/**", "**/node_modules/**", "**/.next/**", "**/.#*" ] }, "output": { "environment": { "arrowFunction": false, "bigIntLiteral": false, "const": false, "destructuring": false, "dynamicImport": false, "forOf": false, "module": false }, "path": "/home/m6d/Desktop/my-app/.next", "filename": "static/chunks/[name].js", "library": "_N_E", "libraryTarget": "assign", "hotUpdateChunkFilename": "static/webpack/[id].[fullhash].hot-update.js", "hotUpdateMainFilename": "static/webpack/[fullhash].hot-update.json", "chunkFilename": "static/chunks/[name].js", "strictModuleExceptionHandling": true, "webassemblyModuleFilename": "static/wasm/[modulehash].wasm" }, "performance": false, "resolve": { "extensions": [ ".mjs", ".js", ".jsx", ".json", ".wasm" ], "modules": [ "node_modules" ], "alias": { "next": "/home/m6d/Desktop/my-app/node_modules/next", "private-next-pages": "/home/m6d/Desktop/my-app/pages", "private-dot-next": "/home/m6d/Desktop/my-app/.next", "unfetch$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/fetch/index.js", "isomorphic-unfetch$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/fetch/index.js", "whatwg-fetch$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/fetch/whatwg-fetch.js", "object-assign$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object-assign.js", "object.assign/auto": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/auto.js", "object.assign/implementation": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/implementation.js", "object.assign$": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/index.js", "object.assign/polyfill": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/polyfill.js", "object.assign/shim": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/polyfills/object.assign/shim.js", "url": "/home/m6d/Desktop/my-app/node_modules/native-url/dist/index.js", "/home/m6d/Desktop/my-app/node_modules/next/dist/next-server/lib/router/utils/resolve-rewrites.js": false }, "fallback": { "assert": "/home/m6d/Desktop/my-app/node_modules/assert/build/assert.js", "buffer": "/home/m6d/Desktop/my-app/node_modules/buffer/index.js", "constants": "/home/m6d/Desktop/my-app/node_modules/constants-browserify/constants.json", "crypto": "/home/m6d/Desktop/my-app/node_modules/crypto-browserify/index.js", "domain": "/home/m6d/Desktop/my-app/node_modules/domain-browser/source/index.js", "http": "/home/m6d/Desktop/my-app/node_modules/stream-http/index.js", "https": "/home/m6d/Desktop/my-app/node_modules/https-browserify/index.js", "os": "/home/m6d/Desktop/my-app/node_modules/os-browserify/browser.js", "path": "/home/m6d/Desktop/my-app/node_modules/path-browserify/index.js", "punycode": "punycode", "process": "/home/m6d/Desktop/my-app/node_modules/process/browser.js", "querystring": "/home/m6d/Desktop/my-app/node_modules/querystring-es3/index.js", "stream": "/home/m6d/Desktop/my-app/node_modules/stream-browserify/index.js", "string_decoder": "string_decoder", "sys": "/home/m6d/Desktop/my-app/node_modules/util/util.js", "timers": "/home/m6d/Desktop/my-app/node_modules/timers-browserify/main.js", "tty": "/home/m6d/Desktop/my-app/node_modules/tty-browserify/index.js", "util": "/home/m6d/Desktop/my-app/node_modules/util/util.js", "vm": "/home/m6d/Desktop/my-app/node_modules/vm-browserify/index.js", "zlib": "/home/m6d/Desktop/my-app/node_modules/browserify-zlib/lib/index.js" }, "mainFields": [ "browser", "module", "main" ], "plugins": [] }, "resolveLoader": { "alias": { "emit-file-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/emit-file-loader", "error-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/error-loader", "next-babel-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-babel-loader", "next-client-pages-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader", "next-serverless-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-serverless-loader", "noop-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/noop-loader", "next-style-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-style-loader" }, "modules": [ "node_modules" ], "plugins": [] }, "module": { "rules": [ { "test": "/\\.m?js/", "resolve": { "fullySpecified": false } }, { "test": "/\\.(tsx|ts|js|mjs|jsx)$/", "include": [ "/home/m6d/Desktop/my-app", "/next[\\\\/]dist[\\\\/]next-server[\\\\/]lib/", "/next[\\\\/]dist[\\\\/]client/", "/next[\\\\/]dist[\\\\/]pages/", "/[\\\\/](strip-ansi|ansi-regex)[\\\\/]/" ], "exclude": "excludePath=>{if(babelIncludeRegexes.some(r=>r.test(excludePath))){return false;}return /node_modules/.test(excludePath);}", "use": [ "/home/m6d/Desktop/my-app/node_modules/@next/react-refresh-utils/loader.js", { "loader": "next-babel-loader", "options": { "isServer": false, "distDir": "/home/m6d/Desktop/my-app/.next", "pagesDir": "/home/m6d/Desktop/my-app/pages", "cwd": "/home/m6d/Desktop/my-app", "cache": false, "development": true, "hasReactRefresh": true, "hasJsxRuntime": true } } ] }, { "oneOf": [ { "test": "/a^/", "loader": "noop-loader", "options": { "__next_css_remove": true } }, { "test": "/\\.(css|scss|sass)(\\.webpack\\[javascript\\/auto\\])?$/", "issuer": "/pages[\\\\/]_document\\./", "use": { "loader": "error-loader", "options": { "reason": "CSS \u001b[1mcannot\u001b[22m be imported within \u001b[36mpages/_document.js\u001b[39m. Please move global styles to \u001b[36mpages/_app.js\u001b[39m." } } }, { "sideEffects": false, "test": "/\\.module\\.css$/", "issuer": { "and": [ "/home/m6d/Desktop/my-app" ], "not": [ "/node_modules/" ] }, "use": [ { "loader": "next-style-loader", "options": { "insert": "function(element){// These elements should always exist. If they do not,\n// this code should fail.\nvar anchorElement=document.querySelector('#__next_css__DO_NOT_USE__');var parentNode=anchorElement.parentNode;// Normally \n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 1, "sourceMap": true, "esModule": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)", "modules": { "exportLocalsConvention": "asIs", "exportOnlyLocals": false, "mode": "pure", "getLocalIdent": "function getCssModuleLocalIdent(context,_,exportName,options){const relativePath=_path.default.relative(context.rootContext,context.resourcePath).replace(/\\\\+/g,'/');// Generate a more meaningful name (parent folder) when the user names the\n// file `index.module.css`.\nconst fileNameOrFolder=regexLikeIndexModule.test(relativePath)?'[folder]':'[name]';// Generate a hash to make the class name unique.\nconst hash=_loaderUtils.default.getHashDigest(Buffer.from(`filePath:${relativePath}#className:${exportName}`),'md5','base64',5);// Have webpack interpolate the `[folder]` or `[name]` to its real value.\nreturn _loaderUtils.default.interpolateName(context,fileNameOrFolder+'_'+exportName+'__'+hash,options).replace(// Webpack name interpolation returns `about.module_root__2oFM9` for\n// `.root {}` inside a file named `about.module.css`. Let's simplify\n// this.\n/\\.module_/,'_')// Replace invalid symbols with underscores instead of escaping\n// https://mathiasbynens.be/notes/css-escapes#identifiers-strings\n.replace(/[^a-zA-Z0-9-_]/g,'_')// \"they cannot start with a digit, two hyphens, or a hyphen followed by a digit [sic]\"\n// https://www.w3.org/TR/CSS21/syndata.html#characters\n.replace(/^(\\d|--|-\\d)/,'__$1');}" } } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } } ] }, { "sideEffects": false, "test": "/\\.module\\.(scss|sass)$/", "issuer": { "and": [ "/home/m6d/Desktop/my-app" ], "not": [ "/node_modules/" ] }, "use": [ { "loader": "next-style-loader", "options": { "insert": "function(element){// These elements should always exist. If they do not,\n// this code should fail.\nvar anchorElement=document.querySelector('#__next_css__DO_NOT_USE__');var parentNode=anchorElement.parentNode;// Normally \n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 3, "sourceMap": true, "esModule": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)", "modules": { "exportLocalsConvention": "asIs", "exportOnlyLocals": false, "mode": "pure", "getLocalIdent": "function getCssModuleLocalIdent(context,_,exportName,options){const relativePath=_path.default.relative(context.rootContext,context.resourcePath).replace(/\\\\+/g,'/');// Generate a more meaningful name (parent folder) when the user names the\n// file `index.module.css`.\nconst fileNameOrFolder=regexLikeIndexModule.test(relativePath)?'[folder]':'[name]';// Generate a hash to make the class name unique.\nconst hash=_loaderUtils.default.getHashDigest(Buffer.from(`filePath:${relativePath}#className:${exportName}`),'md5','base64',5);// Have webpack interpolate the `[folder]` or `[name]` to its real value.\nreturn _loaderUtils.default.interpolateName(context,fileNameOrFolder+'_'+exportName+'__'+hash,options).replace(// Webpack name interpolation returns `about.module_root__2oFM9` for\n// `.root {}` inside a file named `about.module.css`. Let's simplify\n// this.\n/\\.module_/,'_')// Replace invalid symbols with underscores instead of escaping\n// https://mathiasbynens.be/notes/css-escapes#identifiers-strings\n.replace(/[^a-zA-Z0-9-_]/g,'_')// \"they cannot start with a digit, two hyphens, or a hyphen followed by a digit [sic]\"\n// https://www.w3.org/TR/CSS21/syndata.html#characters\n.replace(/^(\\d|--|-\\d)/,'__$1');}" } } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/resolve-url-loader/index.js", "options": { "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/sass-loader/cjs.js", "options": { "sourceMap": true, "sassOptions": {} } } ] }, { "test": [ "/\\.module\\.css$/", "/\\.module\\.(scss|sass)$/" ], "use": { "loader": "error-loader", "options": { "reason": "CSS Modules \u001b[1mcannot\u001b[22m be imported from within \u001b[1mnode_modules\u001b[22m.\nRead more: https://nextjs.org/docs/messages/css-modules-npm" } } }, { "sideEffects": true, "test": "/(?\n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 1, "sourceMap": true, "modules": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } } ] }, { "sideEffects": true, "test": "/(?\n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 1, "sourceMap": true, "modules": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } } ] }, { "sideEffects": true, "test": "/(?\n// Each style tag should be placed right before our\n// anchor. By inserting before and not after, we do not\n// need to track the last inserted element.\nparentNode.insertBefore(element,anchorElement);}" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 3, "sourceMap": true, "modules": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)" } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/resolve-url-loader/index.js", "options": { "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/sass-loader/cjs.js", "options": { "sourceMap": true, "sassOptions": {} } } ] }, { "test": [ "/(?\u001b[22m. Please move all global CSS imports to \u001b[36mpages/_app.js\u001b[39m. Or convert the import to Component-Level CSS (CSS Modules).\nRead more: https://nextjs.org/docs/messages/css-global" } } }, { "issuer": "/\\.(css|scss|sass)(\\.webpack\\[javascript\\/auto\\])?$/", "exclude": [ "/\\.(js|mjs|jsx|ts|tsx)$/", "/\\.html$/", "/\\.json$/", "/\\.webpack\\[[^\\]]+\\]$/" ], "use": { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/file-loader/cjs.js", "options": { "name": "static/media/[name].[hash].[ext]" } } } ] } ], "strictExportPresence": false }, "plugins": [ { "webpackMajorVersion": 5, "RuntimeGlobals": { "require": "__webpack_require__", "requireScope": "__webpack_require__.*", "exports": "__webpack_exports__", "thisAsExports": "top-level-this-exports", "returnExportsFromRuntime": "return-exports-from-runtime", "module": "module", "moduleId": "module.id", "moduleLoaded": "module.loaded", "publicPath": "__webpack_require__.p", "entryModuleId": "__webpack_require__.s", "moduleCache": "__webpack_require__.c", "moduleFactories": "__webpack_require__.m", "moduleFactoriesAddOnly": "__webpack_require__.m (add only)", "ensureChunk": "__webpack_require__.e", "ensureChunkHandlers": "__webpack_require__.f", "ensureChunkIncludeEntries": "__webpack_require__.f (include entries)", "prefetchChunk": "__webpack_require__.E", "prefetchChunkHandlers": "__webpack_require__.F", "preloadChunk": "__webpack_require__.G", "preloadChunkHandlers": "__webpack_require__.H", "definePropertyGetters": "__webpack_require__.d", "makeNamespaceObject": "__webpack_require__.r", "createFakeNamespaceObject": "__webpack_require__.t", "compatGetDefaultExport": "__webpack_require__.n", "harmonyModuleDecorator": "__webpack_require__.hmd", "nodeModuleDecorator": "__webpack_require__.nmd", "getFullHash": "__webpack_require__.h", "wasmInstances": "__webpack_require__.w", "instantiateWasm": "__webpack_require__.v", "uncaughtErrorHandler": "__webpack_require__.oe", "scriptNonce": "__webpack_require__.nc", "loadScript": "__webpack_require__.l", "createScriptUrl": "__webpack_require__.tu", "chunkName": "__webpack_require__.cn", "runtimeId": "__webpack_require__.j", "getChunkScriptFilename": "__webpack_require__.u", "getChunkUpdateScriptFilename": "__webpack_require__.hu", "startup": "__webpack_require__.x", "startupNoDefault": "__webpack_require__.x (no default handler)", "startupOnlyAfter": "__webpack_require__.x (only after)", "startupOnlyBefore": "__webpack_require__.x (only before)", "chunkCallback": "webpackChunk", "startupEntrypoint": "__webpack_require__.X", "onChunksLoaded": "__webpack_require__.O", "externalInstallChunk": "__webpack_require__.C", "interceptModuleExecution": "__webpack_require__.i", "global": "__webpack_require__.g", "shareScopeMap": "__webpack_require__.S", "initializeSharing": "__webpack_require__.I", "currentRemoteGetScope": "__webpack_require__.R", "getUpdateManifestFilename": "__webpack_require__.hmrF", "hmrDownloadManifest": "__webpack_require__.hmrM", "hmrDownloadUpdateHandlers": "__webpack_require__.hmrC", "hmrModuleData": "__webpack_require__.hmrD", "hmrInvalidateModuleHandlers": "__webpack_require__.hmrI", "amdDefine": "__webpack_require__.amdD", "amdOptions": "__webpack_require__.amdO", "system": "__webpack_require__.System", "hasOwnProperty": "__webpack_require__.o", "systemContext": "__webpack_require__.y", "baseURI": "__webpack_require__.b", "relativeUrl": "__webpack_require__.U", "asyncModule": "__webpack_require__.a" }, "RuntimeModule": "class RuntimeModule extends Module {\n\t/**\n\t * @param {string} name a readable name\n\t * @param {number=} stage an optional stage\n\t */\n\tconstructor(name, stage = 0) {\n\t\tsuper(\"runtime\");\n\t\tthis.name = name;\n\t\tthis.stage = stage;\n\t\tthis.buildMeta = {};\n\t\tthis.buildInfo = {};\n\t\t/** @type {Compilation} */\n\t\tthis.compilation = undefined;\n\t\t/** @type {Chunk} */\n\t\tthis.chunk = undefined;\n\t\t/** @type {ChunkGraph} */\n\t\tthis.chunkGraph = undefined;\n\t\tthis.fullHash = false;\n\t\t/** @type {string} */\n\t\tthis._cachedGeneratedCode = undefined;\n\t}\n\n\t/**\n\t * @param {Compilation} compilation the compilation\n\t * @param {Chunk} chunk the chunk\n\t * @param {ChunkGraph} chunkGraph the chunk graph\n\t * @returns {void}\n\t */\n\tattach(compilation, chunk, chunkGraph = compilation.chunkGraph) {\n\t\tthis.compilation = compilation;\n\t\tthis.chunk = chunk;\n\t\tthis.chunkGraph = chunkGraph;\n\t}\n\n\t/**\n\t * @returns {string} a unique identifier of the module\n\t */\n\tidentifier() {\n\t\treturn `webpack/runtime/${this.name}`;\n\t}\n\n\t/**\n\t * @param {RequestShortener} requestShortener the request shortener\n\t * @returns {string} a user readable identifier of the module\n\t */\n\treadableIdentifier(requestShortener) {\n\t\treturn `webpack/runtime/${this.name}`;\n\t}\n\n\t/**\n\t * @param {NeedBuildContext} context context info\n\t * @param {function(WebpackError=, boolean=): void} callback callback function, returns true, if the module needs a rebuild\n\t * @returns {void}\n\t */\n\tneedBuild(context, callback) {\n\t\treturn callback(null, false);\n\t}\n\n\t/**\n\t * @param {WebpackOptions} options webpack options\n\t * @param {Compilation} compilation the compilation\n\t * @param {ResolverWithOptions} resolver the resolver\n\t * @param {InputFileSystem} fs the file system\n\t * @param {function(WebpackError=): void} callback callback function\n\t * @returns {void}\n\t */\n\tbuild(options, compilation, resolver, fs, callback) {\n\t\t// do nothing\n\t\t// should not be called as runtime modules are added later to the compilation\n\t\tcallback();\n\t}\n\n\t/**\n\t * @param {Hash} hash the hash used to track dependencies\n\t * @param {UpdateHashContext} context context\n\t * @returns {void}\n\t */\n\tupdateHash(hash, context) {\n\t\thash.update(this.name);\n\t\thash.update(`${this.stage}`);\n\t\ttry {\n\t\t\tif (this.fullHash) {\n\t\t\t\t// Do not use getGeneratedCode here, because i. e. compilation hash might be not\n\t\t\t\t// ready at this point. We will cache it later instead.\n\t\t\t\thash.update(this.generate());\n\t\t\t} else {\n\t\t\t\thash.update(this.getGeneratedCode());\n\t\t\t}\n\t\t} catch (err) {\n\t\t\thash.update(err.message);\n\t\t}\n\t\tsuper.updateHash(hash, context);\n\t}\n\n\t/**\n\t * @returns {Set} types available (do not mutate)\n\t */\n\tgetSourceTypes() {\n\t\treturn TYPES;\n\t}\n\n\t/**\n\t * @param {CodeGenerationContext} context context for code generation\n\t * @returns {CodeGenerationResult} result\n\t */\n\tcodeGeneration(context) {\n\t\tconst sources = new Map();\n\t\tconst generatedCode = this.getGeneratedCode();\n\t\tif (generatedCode) {\n\t\t\tsources.set(\n\t\t\t\t\"runtime\",\n\t\t\t\tthis.useSourceMap || this.useSimpleSourceMap\n\t\t\t\t\t? new OriginalSource(generatedCode, this.identifier())\n\t\t\t\t\t: new RawSource(generatedCode)\n\t\t\t);\n\t\t}\n\t\treturn {\n\t\t\tsources,\n\t\t\truntimeRequirements: null\n\t\t};\n\t}\n\n\t/**\n\t * @param {string=} type the source type for which the size should be estimated\n\t * @returns {number} the estimated size of the module (must be non-zero)\n\t */\n\tsize(type) {\n\t\ttry {\n\t\t\tconst source = this.getGeneratedCode();\n\t\t\treturn source ? source.length : 0;\n\t\t} catch (e) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\t/* istanbul ignore next */\n\t/**\n\t * @abstract\n\t * @returns {string} runtime code\n\t */\n\tgenerate() {\n\t\tconst AbstractMethodError = __webpack_require__(67113);\n\t\tthrow new AbstractMethodError();\n\t}\n\n\t/**\n\t * @returns {string} runtime code\n\t */\n\tgetGeneratedCode() {\n\t\tif (this._cachedGeneratedCode) {\n\t\t\treturn this._cachedGeneratedCode;\n\t\t}\n\t\treturn (this._cachedGeneratedCode = this.generate());\n\t}\n\n\t/**\n\t * @returns {boolean} true, if the runtime module should get it's own scope\n\t */\n\tshouldIsolate() {\n\t\treturn true;\n\t}\n}", "Template": "class Template {\n\t/**\n\t *\n\t * @param {Function} fn a runtime function (.runtime.js) \"template\"\n\t * @returns {string} the updated and normalized function string\n\t */\n\tstatic getFunctionContent(fn) {\n\t\treturn fn\n\t\t\t.toString()\n\t\t\t.replace(FUNCTION_CONTENT_REGEX, \"\")\n\t\t\t.replace(INDENT_MULTILINE_REGEX, \"\")\n\t\t\t.replace(LINE_SEPARATOR_REGEX, \"\\n\");\n\t}\n\n\t/**\n\t * @param {string} str the string converted to identifier\n\t * @returns {string} created identifier\n\t */\n\tstatic toIdentifier(str) {\n\t\tif (typeof str !== \"string\") return \"\";\n\t\treturn str\n\t\t\t.replace(IDENTIFIER_NAME_REPLACE_REGEX, \"_$1\")\n\t\t\t.replace(IDENTIFIER_ALPHA_NUMERIC_NAME_REPLACE_REGEX, \"_\");\n\t}\n\t/**\n\t *\n\t * @param {string} str string to be converted to commented in bundle code\n\t * @returns {string} returns a commented version of string\n\t */\n\tstatic toComment(str) {\n\t\tif (!str) return \"\";\n\t\treturn `/*! ${str.replace(COMMENT_END_REGEX, \"* /\")} */`;\n\t}\n\n\t/**\n\t *\n\t * @param {string} str string to be converted to \"normal comment\"\n\t * @returns {string} returns a commented version of string\n\t */\n\tstatic toNormalComment(str) {\n\t\tif (!str) return \"\";\n\t\treturn `/* ${str.replace(COMMENT_END_REGEX, \"* /\")} */`;\n\t}\n\n\t/**\n\t * @param {string} str string path to be normalized\n\t * @returns {string} normalized bundle-safe path\n\t */\n\tstatic toPath(str) {\n\t\tif (typeof str !== \"string\") return \"\";\n\t\treturn str\n\t\t\t.replace(PATH_NAME_NORMALIZE_REPLACE_REGEX, \"-\")\n\t\t\t.replace(MATCH_PADDED_HYPHENS_REPLACE_REGEX, \"\");\n\t}\n\n\t// map number to a single character a-z, A-Z or multiple characters if number is too big\n\t/**\n\t * @param {number} n number to convert to ident\n\t * @returns {string} returns single character ident\n\t */\n\tstatic numberToIdentifier(n) {\n\t\tif (n >= NUMBER_OF_IDENTIFIER_START_CHARS) {\n\t\t\t// use multiple letters\n\t\t\treturn (\n\t\t\t\tTemplate.numberToIdentifier(n % NUMBER_OF_IDENTIFIER_START_CHARS) +\n\t\t\t\tTemplate.numberToIdentifierContinuation(\n\t\t\t\t\tMath.floor(n / NUMBER_OF_IDENTIFIER_START_CHARS)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t// lower case\n\t\tif (n < DELTA_A_TO_Z) {\n\t\t\treturn String.fromCharCode(START_LOWERCASE_ALPHABET_CODE + n);\n\t\t}\n\t\tn -= DELTA_A_TO_Z;\n\n\t\t// upper case\n\t\tif (n < DELTA_A_TO_Z) {\n\t\t\treturn String.fromCharCode(START_UPPERCASE_ALPHABET_CODE + n);\n\t\t}\n\n\t\tif (n === DELTA_A_TO_Z) return \"_\";\n\t\treturn \"$\";\n\t}\n\n\t/**\n\t * @param {number} n number to convert to ident\n\t * @returns {string} returns single character ident\n\t */\n\tstatic numberToIdentifierContinuation(n) {\n\t\tif (n >= NUMBER_OF_IDENTIFIER_CONTINUATION_CHARS) {\n\t\t\t// use multiple letters\n\t\t\treturn (\n\t\t\t\tTemplate.numberToIdentifierContinuation(\n\t\t\t\t\tn % NUMBER_OF_IDENTIFIER_CONTINUATION_CHARS\n\t\t\t\t) +\n\t\t\t\tTemplate.numberToIdentifierContinuation(\n\t\t\t\t\tMath.floor(n / NUMBER_OF_IDENTIFIER_CONTINUATION_CHARS)\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\t// lower case\n\t\tif (n < DELTA_A_TO_Z) {\n\t\t\treturn String.fromCharCode(START_LOWERCASE_ALPHABET_CODE + n);\n\t\t}\n\t\tn -= DELTA_A_TO_Z;\n\n\t\t// upper case\n\t\tif (n < DELTA_A_TO_Z) {\n\t\t\treturn String.fromCharCode(START_UPPERCASE_ALPHABET_CODE + n);\n\t\t}\n\t\tn -= DELTA_A_TO_Z;\n\n\t\t// numbers\n\t\tif (n < 10) {\n\t\t\treturn `${n}`;\n\t\t}\n\n\t\tif (n === 10) return \"_\";\n\t\treturn \"$\";\n\t}\n\n\t/**\n\t *\n\t * @param {string | string[]} s string to convert to identity\n\t * @returns {string} converted identity\n\t */\n\tstatic indent(s) {\n\t\tif (Array.isArray(s)) {\n\t\t\treturn s.map(Template.indent).join(\"\\n\");\n\t\t} else {\n\t\t\tconst str = s.trimRight();\n\t\t\tif (!str) return \"\";\n\t\t\tconst ind = str[0] === \"\\n\" ? \"\" : \"\\t\";\n\t\t\treturn ind + str.replace(/\\n([^\\n])/g, \"\\n\\t$1\");\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param {string|string[]} s string to create prefix for\n\t * @param {string} prefix prefix to compose\n\t * @returns {string} returns new prefix string\n\t */\n\tstatic prefix(s, prefix) {\n\t\tconst str = Template.asString(s).trim();\n\t\tif (!str) return \"\";\n\t\tconst ind = str[0] === \"\\n\" ? \"\" : prefix;\n\t\treturn ind + str.replace(/\\n([^\\n])/g, \"\\n\" + prefix + \"$1\");\n\t}\n\n\t/**\n\t *\n\t * @param {string|string[]} str string or string collection\n\t * @returns {string} returns a single string from array\n\t */\n\tstatic asString(str) {\n\t\tif (Array.isArray(str)) {\n\t\t\treturn str.join(\"\\n\");\n\t\t}\n\t\treturn str;\n\t}\n\n\t/**\n\t * @typedef {Object} WithId\n\t * @property {string|number} id\n\t */\n\n\t/**\n\t * @param {WithId[]} modules a collection of modules to get array bounds for\n\t * @returns {[number, number] | false} returns the upper and lower array bounds\n\t * or false if not every module has a number based id\n\t */\n\tstatic getModulesArrayBounds(modules) {\n\t\tlet maxId = -Infinity;\n\t\tlet minId = Infinity;\n\t\tfor (const module of modules) {\n\t\t\tconst moduleId = module.id;\n\t\t\tif (typeof moduleId !== \"number\") return false;\n\t\t\tif (maxId < moduleId) maxId = moduleId;\n\t\t\tif (minId > moduleId) minId = moduleId;\n\t\t}\n\t\tif (minId < 16 + (\"\" + minId).length) {\n\t\t\t// add minId x ',' instead of 'Array(minId).concat(…)'\n\t\t\tminId = 0;\n\t\t}\n\t\t// start with -1 because the first module needs no comma\n\t\tlet objectOverhead = -1;\n\t\tfor (const module of modules) {\n\t\t\t// module id + colon + comma\n\t\t\tobjectOverhead += `${module.id}`.length + 2;\n\t\t}\n\t\t// number of commas, or when starting non-zero the length of Array(minId).concat()\n\t\tconst arrayOverhead = minId === 0 ? maxId : 16 + `${minId}`.length + maxId;\n\t\treturn arrayOverhead < objectOverhead ? [minId, maxId] : false;\n\t}\n\n\t/**\n\t * @param {RenderContext} renderContext render context\n\t * @param {Module[]} modules modules to render (should be ordered by identifier)\n\t * @param {function(Module): Source} renderModule function to render a module\n\t * @param {string=} prefix applying prefix strings\n\t * @returns {Source} rendered chunk modules in a Source object\n\t */\n\tstatic renderChunkModules(renderContext, modules, renderModule, prefix = \"\") {\n\t\tconst { chunkGraph } = renderContext;\n\t\tvar source = new ConcatSource();\n\t\tif (modules.length === 0) {\n\t\t\treturn null;\n\t\t}\n\t\t/** @type {{id: string|number, source: Source|string}[]} */\n\t\tconst allModules = modules.map(module => {\n\t\t\treturn {\n\t\t\t\tid: chunkGraph.getModuleId(module),\n\t\t\t\tsource: renderModule(module) || \"false\"\n\t\t\t};\n\t\t});\n\t\tconst bounds = Template.getModulesArrayBounds(allModules);\n\t\tif (bounds) {\n\t\t\t// Render a spare array\n\t\t\tconst minId = bounds[0];\n\t\t\tconst maxId = bounds[1];\n\t\t\tif (minId !== 0) {\n\t\t\t\tsource.add(`Array(${minId}).concat(`);\n\t\t\t}\n\t\t\tsource.add(\"[\\n\");\n\t\t\t/** @type {Map} */\n\t\t\tconst modules = new Map();\n\t\t\tfor (const module of allModules) {\n\t\t\t\tmodules.set(module.id, module);\n\t\t\t}\n\t\t\tfor (let idx = minId; idx <= maxId; idx++) {\n\t\t\t\tconst module = modules.get(idx);\n\t\t\t\tif (idx !== minId) {\n\t\t\t\t\tsource.add(\",\\n\");\n\t\t\t\t}\n\t\t\t\tsource.add(`/* ${idx} */`);\n\t\t\t\tif (module) {\n\t\t\t\t\tsource.add(\"\\n\");\n\t\t\t\t\tsource.add(module.source);\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource.add(\"\\n\" + prefix + \"]\");\n\t\t\tif (minId !== 0) {\n\t\t\t\tsource.add(\")\");\n\t\t\t}\n\t\t} else {\n\t\t\t// Render an object\n\t\t\tsource.add(\"{\\n\");\n\t\t\tfor (let i = 0; i < allModules.length; i++) {\n\t\t\t\tconst module = allModules[i];\n\t\t\t\tif (i !== 0) {\n\t\t\t\t\tsource.add(\",\\n\");\n\t\t\t\t}\n\t\t\t\tsource.add(`\\n/***/ ${JSON.stringify(module.id)}:\\n`);\n\t\t\t\tsource.add(module.source);\n\t\t\t}\n\t\t\tsource.add(`\\n\\n${prefix}}`);\n\t\t}\n\t\treturn source;\n\t}\n\n\t/**\n\t * @param {RuntimeModule[]} runtimeModules array of runtime modules in order\n\t * @param {RenderContext & { codeGenerationResults?: CodeGenerationResults, useStrict?: boolean }} renderContext render context\n\t * @returns {Source} rendered runtime modules in a Source object\n\t */\n\tstatic renderRuntimeModules(runtimeModules, renderContext) {\n\t\tconst source = new ConcatSource();\n\t\tfor (const module of runtimeModules) {\n\t\t\tconst codeGenerationResults = renderContext.codeGenerationResults;\n\t\t\tlet runtimeSource;\n\t\t\tif (codeGenerationResults) {\n\t\t\t\truntimeSource = codeGenerationResults.getSource(\n\t\t\t\t\tmodule,\n\t\t\t\t\trenderContext.chunk.runtime,\n\t\t\t\t\t\"runtime\"\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst codeGenResult = module.codeGeneration({\n\t\t\t\t\tchunkGraph: renderContext.chunkGraph,\n\t\t\t\t\tdependencyTemplates: renderContext.dependencyTemplates,\n\t\t\t\t\tmoduleGraph: renderContext.moduleGraph,\n\t\t\t\t\truntimeTemplate: renderContext.runtimeTemplate,\n\t\t\t\t\truntime: renderContext.chunk.runtime\n\t\t\t\t});\n\t\t\t\tif (!codeGenResult) continue;\n\t\t\t\truntimeSource = codeGenResult.sources.get(\"runtime\");\n\t\t\t}\n\t\t\tif (runtimeSource) {\n\t\t\t\tsource.add(Template.toNormalComment(module.identifier()) + \"\\n\");\n\t\t\t\tif (!module.shouldIsolate()) {\n\t\t\t\t\tsource.add(runtimeSource);\n\t\t\t\t} else if (renderContext.runtimeTemplate.supportsArrowFunction()) {\n\t\t\t\t\tsource.add(\"(() => {\\n\");\n\t\t\t\t\tif (renderContext.useStrict) source.add('\\t\"use strict\";\\n');\n\t\t\t\t\tsource.add(new PrefixSource(\"\\t\", runtimeSource));\n\t\t\t\t\tsource.add(\"\\n})();\\n\\n\");\n\t\t\t\t} else {\n\t\t\t\t\tsource.add(\"!function() {\\n\");\n\t\t\t\t\tif (renderContext.useStrict) source.add('\\t\"use strict\";\\n');\n\t\t\t\t\tsource.add(new PrefixSource(\"\\t\", runtimeSource));\n\t\t\t\t\tsource.add(\"\\n}();\\n\\n\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn source;\n\t}\n\n\t/**\n\t * @param {RuntimeModule[]} runtimeModules array of runtime modules in order\n\t * @param {RenderContext} renderContext render context\n\t * @returns {Source} rendered chunk runtime modules in a Source object\n\t */\n\tstatic renderChunkRuntimeModules(runtimeModules, renderContext) {\n\t\treturn new PrefixSource(\n\t\t\t\"/******/ \",\n\t\t\tnew ConcatSource(\n\t\t\t\t\"function(__webpack_require__) { // webpackRuntimeModules\\n\",\n\t\t\t\t'\"use strict\";\\n\\n',\n\t\t\t\tthis.renderRuntimeModules(runtimeModules, renderContext),\n\t\t\t\t\"}\\n\"\n\t\t\t)\n\t\t);\n\t}\n}" }, { "definitions": { "Buffer": [ "buffer", "Buffer" ], "process": [ "process" ] } }, { "definitions": { "process.env.NODE_ENV": "\"development\"", "process.browser": "true", "process.env.__NEXT_DIST_DIR": "\"/home/m6d/Desktop/my-app/.next\"", "process.env.__NEXT_TRAILING_SLASH": "false", "process.env.__NEXT_BUILD_INDICATOR": "true", "process.env.__NEXT_PLUGINS": "false", "process.env.__NEXT_STRICT_MODE": "false", "process.env.__NEXT_REACT_ROOT": "false", "process.env.__NEXT_OPTIMIZE_FONTS": "false", "process.env.__NEXT_OPTIMIZE_IMAGES": "false", "process.env.__NEXT_OPTIMIZE_CSS": "false", "process.env.__NEXT_SCRIPT_LOADER": "false", "process.env.__NEXT_SCROLL_RESTORATION": "false", "process.env.__NEXT_IMAGE_OPTS": "{\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image\",\"loader\":\"default\",\"domains\":[],\"enableBlurryPlaceholder\":false}", "process.env.__NEXT_ROUTER_BASEPATH": "\"\"", "process.env.__NEXT_HAS_REWRITES": "false", "process.env.__NEXT_I18N_SUPPORT": "false", "process.env.__NEXT_ANALYTICS_ID": "\"\"" } }, { "filename": "react-loadable-manifest.json", "pagesDir": "/home/m6d/Desktop/my-app/pages" }, { "ampPages": {} }, { "prevAssets": null, "previousOutputPathsWebpack5": {}, "currentOutputPathsWebpack5": {} }, { "options": {} }, { "buildId": "development", "rewrites": { "beforeFiles": [], "afterFiles": [], "fallback": [] }, "isDevFallback": false }, {}, {} ], "snapshot": { "managedPaths": [ "/home/m6d/Desktop/my-app/node_modules" ] }, "cache": { "type": "filesystem", "version": "10.2.3|{\"pageExtensions\":[\"tsx\",\"ts\",\"jsx\",\"js\"],\"trailingSlash\":false,\"buildActivity\":true,\"plugins\":false,\"reactStrictMode\":false,\"optimizeFonts\":true,\"optimizeImages\":false,\"optimizeCss\":false,\"scrollRestoration\":false,\"basePath\":\"\",\"pageEnv\":false,\"excludeDefaultMomentLocales\":false,\"assetPrefix\":\"\",\"disableOptimizedLoading\":true,\"target\":\"server\",\"reactProductionProfiling\":false,\"webpack\":true,\"hasRewrites\":false}", "cacheDirectory": "/home/m6d/Desktop/my-app/.next/cache/webpack", "buildDependencies": { "config": [ "/home/m6d/Desktop/my-app/next.config.js" ] } }, "mode": "development", "name": "client", "target": "web", "bail": false, "devtool": "eval-source-map" } ```
Server (v5) ```json { "externals": [ "({context,request,getResolve})=>handleExternals(context,request,getResolve)" ], "optimization": { "emitOnErrors": false, "checkWasmTypes": false, "nodeEnv": false, "splitChunks": { "filename": "[name].js", "chunks": "all", "minSize": 1000 }, "runtimeChunk": { "name": "webpack-runtime" }, "minimize": false, "minimizer": [ "compiler=>{// @ts-ignore No typings yet\nconst{TerserPlugin}=require('./webpack/plugins/terser-webpack-plugin/src/index.js');new TerserPlugin({cacheDir:_path.default.join(distDir,'cache','next-minifier'),parallel:config.experimental.cpus,terserOptions}).apply(compiler);}", "compiler=>{const{CssMinimizerPlugin}=require('./webpack/plugins/css-minimizer-plugin');new CssMinimizerPlugin({postcssOptions:{map:{// `inline: false` generates the source map in a separate file.\n// Otherwise, the CSS file is needlessly large.\ninline:false,// `annotation: false` skips appending the `sourceMappingURL`\n// to the end of the CSS file. Webpack already handles this.\nannotation:false}}}).apply(compiler);}" ], "providedExports": false, "usedExports": false }, "context": "/home/m6d/Desktop/my-app", "node": {}, "entry": "async()=>{return{...(clientEntries?clientEntries:{}),...entrypoints};}", "watchOptions": { "aggregateTimeout": 5, "ignored": [ "**/.git/**", "**/node_modules/**", "**/.next/**", "**/.#*" ] }, "output": { "environment": { "arrowFunction": false, "bigIntLiteral": false, "const": false, "destructuring": false, "dynamicImport": false, "forOf": false, "module": false }, "path": "/home/m6d/Desktop/my-app/.next/server", "filename": "[name].js", "libraryTarget": "commonjs2", "hotUpdateChunkFilename": "static/webpack/[id].[fullhash].hot-update.js", "hotUpdateMainFilename": "static/webpack/[fullhash].hot-update.json", "chunkFilename": "[name].js", "strictModuleExceptionHandling": true, "webassemblyModuleFilename": "static/wasm/[modulehash].wasm" }, "performance": false, "resolve": { "extensions": [ ".js", ".mjs", ".jsx", ".json", ".wasm" ], "modules": [ "node_modules" ], "alias": { "next": "/home/m6d/Desktop/my-app/node_modules/next", "private-next-pages": "/home/m6d/Desktop/my-app/pages", "private-dot-next": "/home/m6d/Desktop/my-app/.next", "/home/m6d/Desktop/my-app/node_modules/next/dist/next-server/lib/router/utils/resolve-rewrites.js": false }, "mainFields": [ "main", "module" ], "plugins": [] }, "resolveLoader": { "alias": { "emit-file-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/emit-file-loader", "error-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/error-loader", "next-babel-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-babel-loader", "next-client-pages-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-client-pages-loader", "next-serverless-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-serverless-loader", "noop-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/noop-loader", "next-style-loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/build/webpack/loaders/next-style-loader" }, "modules": [ "node_modules" ], "plugins": [] }, "module": { "rules": [ { "test": "/\\.m?js/", "resolve": { "fullySpecified": false } }, { "test": "/\\.(tsx|ts|js|mjs|jsx)$/", "include": [ "/home/m6d/Desktop/my-app", "/next[\\\\/]dist[\\\\/]next-server[\\\\/]lib/", "/next[\\\\/]dist[\\\\/]client/", "/next[\\\\/]dist[\\\\/]pages/", "/[\\\\/](strip-ansi|ansi-regex)[\\\\/]/" ], "exclude": "excludePath=>{if(babelIncludeRegexes.some(r=>r.test(excludePath))){return false;}return /node_modules/.test(excludePath);}", "use": { "loader": "next-babel-loader", "options": { "isServer": true, "distDir": "/home/m6d/Desktop/my-app/.next", "pagesDir": "/home/m6d/Desktop/my-app/pages", "cwd": "/home/m6d/Desktop/my-app", "cache": false, "development": true, "hasReactRefresh": false, "hasJsxRuntime": true } } }, { "oneOf": [ { "test": "/a^/", "loader": "noop-loader", "options": { "__next_css_remove": true } }, { "test": "/\\.(css|scss|sass)(\\.webpack\\[javascript\\/auto\\])?$/", "issuer": "/pages[\\\\/]_document\\./", "use": { "loader": "error-loader", "options": { "reason": "CSS \u001b[1mcannot\u001b[22m be imported within \u001b[36mpages/_document.js\u001b[39m. Please move global styles to \u001b[36mpages/_app.js\u001b[39m." } } }, { "sideEffects": false, "test": "/\\.module\\.css$/", "issuer": { "and": [ "/home/m6d/Desktop/my-app" ], "not": [ "/node_modules/" ] }, "use": [ { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 1, "sourceMap": true, "esModule": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)", "modules": { "exportLocalsConvention": "asIs", "exportOnlyLocals": true, "mode": "pure", "getLocalIdent": "function getCssModuleLocalIdent(context,_,exportName,options){const relativePath=_path.default.relative(context.rootContext,context.resourcePath).replace(/\\\\+/g,'/');// Generate a more meaningful name (parent folder) when the user names the\n// file `index.module.css`.\nconst fileNameOrFolder=regexLikeIndexModule.test(relativePath)?'[folder]':'[name]';// Generate a hash to make the class name unique.\nconst hash=_loaderUtils.default.getHashDigest(Buffer.from(`filePath:${relativePath}#className:${exportName}`),'md5','base64',5);// Have webpack interpolate the `[folder]` or `[name]` to its real value.\nreturn _loaderUtils.default.interpolateName(context,fileNameOrFolder+'_'+exportName+'__'+hash,options).replace(// Webpack name interpolation returns `about.module_root__2oFM9` for\n// `.root {}` inside a file named `about.module.css`. Let's simplify\n// this.\n/\\.module_/,'_')// Replace invalid symbols with underscores instead of escaping\n// https://mathiasbynens.be/notes/css-escapes#identifiers-strings\n.replace(/[^a-zA-Z0-9-_]/g,'_')// \"they cannot start with a digit, two hyphens, or a hyphen followed by a digit [sic]\"\n// https://www.w3.org/TR/CSS21/syndata.html#characters\n.replace(/^(\\d|--|-\\d)/,'__$1');}" } } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } } ] }, { "sideEffects": false, "test": "/\\.module\\.(scss|sass)$/", "issuer": { "and": [ "/home/m6d/Desktop/my-app" ], "not": [ "/node_modules/" ] }, "use": [ { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/css-loader/cjs.js", "options": { "importLoaders": 3, "sourceMap": true, "esModule": false, "url": "function cssFileResolve(url,_resourcePath){if(url.startsWith('/')){return false;}return true;}", "import": "(url,_,resourcePath)=>(0,_fileResolve.cssFileResolve)(url,resourcePath)", "modules": { "exportLocalsConvention": "asIs", "exportOnlyLocals": true, "mode": "pure", "getLocalIdent": "function getCssModuleLocalIdent(context,_,exportName,options){const relativePath=_path.default.relative(context.rootContext,context.resourcePath).replace(/\\\\+/g,'/');// Generate a more meaningful name (parent folder) when the user names the\n// file `index.module.css`.\nconst fileNameOrFolder=regexLikeIndexModule.test(relativePath)?'[folder]':'[name]';// Generate a hash to make the class name unique.\nconst hash=_loaderUtils.default.getHashDigest(Buffer.from(`filePath:${relativePath}#className:${exportName}`),'md5','base64',5);// Have webpack interpolate the `[folder]` or `[name]` to its real value.\nreturn _loaderUtils.default.interpolateName(context,fileNameOrFolder+'_'+exportName+'__'+hash,options).replace(// Webpack name interpolation returns `about.module_root__2oFM9` for\n// `.root {}` inside a file named `about.module.css`. Let's simplify\n// this.\n/\\.module_/,'_')// Replace invalid symbols with underscores instead of escaping\n// https://mathiasbynens.be/notes/css-escapes#identifiers-strings\n.replace(/[^a-zA-Z0-9-_]/g,'_')// \"they cannot start with a digit, two hyphens, or a hyphen followed by a digit [sic]\"\n// https://www.w3.org/TR/CSS21/syndata.html#characters\n.replace(/^(\\d|--|-\\d)/,'__$1');}" } } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/postcss-loader/cjs.js", "options": { "postcssOptions": { "plugins": [ "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}", "(...args)=>{if(result===undefined)result=fn();if(result.postcss===true){return result(...args);}else if(result.postcss){return result.postcss;}return result;}" ], "config": false }, "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/resolve-url-loader/index.js", "options": { "sourceMap": true } }, { "loader": "/home/m6d/Desktop/my-app/node_modules/next/dist/compiled/sass-loader/cjs.js", "options": { "sourceMap": true, "sassOptions": {} } } ] }, { "test": [ "/\\.module\\.css$/", "/\\.module\\.(scss|sass)$/" ], "use": { "loader": "error-loader", "options": { "reason": "CSS Modules \u001b[1mcannot\u001b[22m be imported from within \u001b[1mnode_modules\u001b[22m.\nRead more: https://nextjs.org/docs/messages/css-modules-npm" } } }, { "test": [ "/(?\u001b[22m. Please move all global CSS imports to \u001b[36mpages/_app.js\u001b[39m. Or convert the import to Component-Level CSS (CSS Modules).\nRead more: https://nextjs.org/docs/messages/css-global" } } } ] } ], "strictExportPresence": false }, "plugins": [ { "definitions": { "process.env.NODE_ENV": "\"development\"", "process.browser": "false", "process.env.__NEXT_TRAILING_SLASH": "false", "process.env.__NEXT_BUILD_INDICATOR": "true", "process.env.__NEXT_PLUGINS": "false", "process.env.__NEXT_STRICT_MODE": "false", "process.env.__NEXT_REACT_ROOT": "false", "process.env.__NEXT_OPTIMIZE_FONTS": "false", "process.env.__NEXT_OPTIMIZE_IMAGES": "false", "process.env.__NEXT_OPTIMIZE_CSS": "false", "process.env.__NEXT_SCRIPT_LOADER": "false", "process.env.__NEXT_SCROLL_RESTORATION": "false", "process.env.__NEXT_IMAGE_OPTS": "{\"deviceSizes\":[640,750,828,1080,1200,1920,2048,3840],\"imageSizes\":[16,32,48,64,96,128,256,384],\"path\":\"/_next/image\",\"loader\":\"default\",\"domains\":[],\"enableBlurryPlaceholder\":false}", "process.env.__NEXT_ROUTER_BASEPATH": "\"\"", "process.env.__NEXT_HAS_REWRITES": "false", "process.env.__NEXT_I18N_SUPPORT": "false", "process.env.__NEXT_ANALYTICS_ID": "\"\"", "global.GENTLY": "false" } }, { "prevAssets": null, "previousOutputPathsWebpack5": {}, "currentOutputPathsWebpack5": {} }, { "serverless": false, "dev": true }, {}, {}, {} ], "dependencies": [ "client" ], "snapshot": { "managedPaths": [ "/home/m6d/Desktop/my-app/node_modules" ] }, "cache": { "type": "filesystem", "version": "10.2.3|{\"pageExtensions\":[\"tsx\",\"ts\",\"jsx\",\"js\"],\"trailingSlash\":false,\"buildActivity\":true,\"plugins\":false,\"reactStrictMode\":false,\"optimizeFonts\":true,\"optimizeImages\":false,\"optimizeCss\":false,\"scrollRestoration\":false,\"basePath\":\"\",\"pageEnv\":false,\"excludeDefaultMomentLocales\":false,\"assetPrefix\":\"\",\"disableOptimizedLoading\":true,\"target\":\"server\",\"reactProductionProfiling\":false,\"webpack\":true,\"hasRewrites\":false}", "cacheDirectory": "/home/m6d/Desktop/my-app/.next/cache/webpack", "buildDependencies": { "config": [ "/home/m6d/Desktop/my-app/next.config.js" ] } }, "mode": "development", "name": "server", "target": "node", "bail": false, "devtool": "eval-source-map" } ```