12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220 |
- /*!
- * @nuxt/config v2.15.8 (c) 2016-2021
- * Released under the MIT License
- * Repository: https://github.com/nuxt/nuxt.js
- * Website: https://nuxtjs.org
- */
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- const lodash = require('lodash');
- const env = require('std-env');
- const utils = require('@nuxt/utils');
- const path = require('path');
- const fs = require('fs');
- const defu = require('defu');
- const consola = require('consola');
- const destr = require('destr');
- const ufo = require('ufo');
- const dotenv = require('dotenv');
- const rc = require('rc9');
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
- function _interopNamespace(e) {
- if (e && e.__esModule) return e;
- var n = Object.create(null);
- if (e) {
- Object.keys(e).forEach(function (k) {
- if (k !== 'default') {
- var d = Object.getOwnPropertyDescriptor(e, k);
- Object.defineProperty(n, k, d.get ? d : {
- enumerable: true,
- get: function () {
- return e[k];
- }
- });
- }
- });
- }
- n['default'] = e;
- return Object.freeze(n);
- }
- const env__default = /*#__PURE__*/_interopDefaultLegacy(env);
- const path__default = /*#__PURE__*/_interopDefaultLegacy(path);
- const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
- const defu__default = /*#__PURE__*/_interopDefaultLegacy(defu);
- const consola__default = /*#__PURE__*/_interopDefaultLegacy(consola);
- const destr__default = /*#__PURE__*/_interopDefaultLegacy(destr);
- const dotenv__default = /*#__PURE__*/_interopDefaultLegacy(dotenv);
- const rc__namespace = /*#__PURE__*/_interopNamespace(rc);
- const _app = () => ({
- vue: {
- config: {
- silent: undefined, // = !dev
- performance: undefined // = dev
- }
- },
- vueMeta: null,
- head: {
- meta: [],
- link: [],
- style: [],
- script: []
- },
- fetch: {
- server: true,
- client: true
- },
- plugins: [],
- extendPlugins: null,
- css: [],
- layouts: {},
- ErrorPage: null,
- loading: {
- color: 'black',
- failedColor: 'red',
- height: '2px',
- throttle: 200,
- duration: 5000,
- continuous: false,
- rtl: false,
- css: true
- },
- loadingIndicator: 'default',
- pageTransition: {
- name: 'page',
- mode: 'out-in',
- appear: false,
- appearClass: 'appear',
- appearActiveClass: 'appear-active',
- appearToClass: 'appear-to'
- },
- layoutTransition: {
- name: 'layout',
- mode: 'out-in'
- },
- features: {
- store: true,
- layouts: true,
- meta: true,
- middleware: true,
- transitions: true,
- deprecations: true,
- validate: true,
- asyncData: true,
- fetch: true,
- clientOnline: true,
- clientPrefetch: true,
- componentAliases: true,
- componentClientOnly: true
- }
- });
- const _common = () => ({
- // Env
- dev: Boolean(env__default['default'].dev),
- test: Boolean(env__default['default'].test),
- debug: undefined, // = dev
- env: {},
- createRequire: undefined,
- // Target
- target: utils.TARGETS.server,
- // Rendering
- ssr: true,
- // Mode (deprecated)
- mode: undefined,
- // Modern
- modern: undefined,
- // Modules
- modules: [],
- buildModules: [],
- _modules: [],
- globalName: undefined,
- globals: {
- id: globalName => `__${globalName}`,
- nuxt: globalName => `$${globalName}`,
- context: globalName => `__${globalName.toUpperCase()}__`,
- pluginPrefix: globalName => globalName,
- readyCallback: globalName => `on${lodash.capitalize(globalName)}Ready`,
- loadedCallback: globalName => `_on${lodash.capitalize(globalName)}Loaded`
- },
- // Server
- serverMiddleware: [],
- // Dirs and extensions
- _nuxtConfigFile: undefined,
- srcDir: undefined,
- buildDir: '.nuxt',
- modulesDir: [
- 'node_modules'
- ],
- dir: {
- assets: 'assets',
- app: 'app',
- layouts: 'layouts',
- middleware: 'middleware',
- pages: 'pages',
- static: 'static',
- store: 'store'
- },
- extensions: [],
- styleExtensions: ['css', 'pcss', 'postcss', 'styl', 'stylus', 'scss', 'sass', 'less'],
- alias: {},
- // Ignores
- ignoreOptions: undefined,
- ignorePrefix: '-',
- ignore: [
- '**/*.test.*',
- '**/*.spec.*'
- ],
- // Watch
- watch: [],
- watchers: {
- rewatchOnRawEvents: undefined,
- webpack: {
- aggregateTimeout: 1000
- },
- chokidar: {
- ignoreInitial: true
- }
- },
- // Editor
- editor: undefined,
- // Hooks
- hooks: null,
- // runtimeConfig
- privateRuntimeConfig: {},
- publicRuntimeConfig: {}
- });
- const build = () => ({
- quiet: Boolean(env__default['default'].ci || env__default['default'].test),
- analyze: false,
- profile: process.argv.includes('--profile'),
- extractCSS: false,
- cssSourceMap: undefined,
- ssr: undefined,
- parallel: false,
- cache: false,
- standalone: false,
- publicPath: '/_nuxt/',
- serverURLPolyfill: 'url',
- filenames: {
- // { isDev, isClient, isServer }
- app: ({ isDev, isModern }) => isDev ? `[name]${isModern ? '.modern' : ''}.js` : `[contenthash:7]${isModern ? '.modern' : ''}.js`,
- chunk: ({ isDev, isModern }) => isDev ? `[name]${isModern ? '.modern' : ''}.js` : `[contenthash:7]${isModern ? '.modern' : ''}.js`,
- css: ({ isDev }) => isDev ? '[name].css' : 'css/[contenthash:7].css',
- img: ({ isDev }) => isDev ? '[path][name].[ext]' : 'img/[name].[contenthash:7].[ext]',
- font: ({ isDev }) => isDev ? '[path][name].[ext]' : 'fonts/[name].[contenthash:7].[ext]',
- video: ({ isDev }) => isDev ? '[path][name].[ext]' : 'videos/[name].[contenthash:7].[ext]'
- },
- loaders: {
- file: { esModule: false },
- fontUrl: { esModule: false, limit: 1000 },
- imgUrl: { esModule: false, limit: 1000 },
- pugPlain: {},
- vue: {
- transformAssetUrls: {
- video: 'src',
- source: 'src',
- object: 'src',
- embed: 'src'
- }
- },
- css: {
- esModule: false,
- modules: {
- compileType: 'icss'
- }
- },
- cssModules: {
- esModule: false,
- modules: {
- localIdentName: '[local]_[hash:base64:5]'
- }
- },
- less: {},
- sass: {
- sassOptions: {
- indentedSyntax: true
- }
- },
- scss: {},
- stylus: {},
- vueStyle: {}
- },
- styleResources: {},
- plugins: [],
- terser: {},
- hardSource: false,
- aggressiveCodeRemoval: false,
- optimizeCSS: undefined,
- optimization: {
- runtimeChunk: 'single',
- minimize: undefined,
- minimizer: undefined,
- splitChunks: {
- chunks: 'all',
- automaticNameDelimiter: '/',
- cacheGroups: {}
- }
- },
- splitChunks: {
- layouts: false,
- pages: true,
- commons: true
- },
- corejs: 'auto',
- babel: {
- configFile: false,
- babelrc: false,
- cacheDirectory: undefined
- },
- transpile: [], // Name of NPM packages to be transpiled
- postcss: {
- preset: {
- // https://cssdb.org/#staging-process
- stage: 2
- }
- },
- html: {
- minify: {
- collapseBooleanAttributes: true,
- decodeEntities: true,
- minifyCSS: true,
- minifyJS: true,
- processConditionalComments: true,
- removeEmptyAttributes: true,
- removeRedundantAttributes: true,
- trimCustomFragments: true,
- useShortDoctype: true
- }
- },
- template: undefined,
- templates: [],
- watch: [],
- devMiddleware: {
- // stats will be printed by webapckbar StateReporter
- stats: 'none'
- },
- hotMiddleware: {},
- stats: {
- excludeAssets: [
- /.map$/,
- /index\..+\.html$/,
- /vue-ssr-(client|modern)-manifest.json/
- ]
- },
- friendlyErrors: true,
- additionalExtensions: [],
- warningIgnoreFilters: [],
- followSymlinks: false,
- loadingScreen: {},
- indicator: {
- position: 'bottom-right',
- backgroundColor: '#2E495E',
- color: '#00C48D'
- }
- });
- const messages = () => ({
- loading: 'Loading...',
- error_404: 'This page could not be found',
- server_error: 'Server error',
- nuxtjs: 'Nuxt',
- back_to_home: 'Back to the home page',
- server_error_details:
- 'An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.',
- client_error: 'Error',
- client_error_details:
- 'An error occurred while rendering the page. Check developer tools console for details.'
- });
- const modes = () => ({
- [utils.MODES.universal]: {
- build: {
- ssr: true
- },
- render: {
- ssr: true
- }
- },
- [utils.MODES.spa]: {
- build: {
- ssr: false
- },
- render: {
- ssr: false
- }
- }
- });
- // TODO: Refactor @nuxt/server related options into `server.js`
- const render = () => ({
- bundleRenderer: {
- shouldPrefetch: () => false,
- shouldPreload: (fileWithoutQuery, asType) => ['script', 'style'].includes(asType),
- runInNewContext: undefined
- },
- crossorigin: undefined,
- resourceHints: true,
- ssr: undefined,
- ssrLog: undefined,
- http2: {
- push: false,
- shouldPush: null,
- pushAssets: null
- },
- static: {
- prefix: true
- },
- compressor: {
- threshold: 0
- },
- etag: {
- weak: false
- },
- csp: false,
- dist: {
- // Don't serve index.html template
- index: false,
- // 1 year in production
- maxAge: '1y'
- },
- // https://github.com/nuxt/serve-placeholder
- fallback: {
- dist: {},
- static: {
- skipUnknown: true,
- handlers: {
- '.htm': false,
- '.html': false
- }
- }
- }
- });
- const router = () => ({
- mode: 'history',
- base: '/',
- routes: [],
- routeNameSplitter: '-',
- middleware: [],
- linkActiveClass: 'nuxt-link-active',
- linkExactActiveClass: 'nuxt-link-exact-active',
- linkPrefetchedClass: false,
- extendRoutes: null,
- scrollBehavior: null,
- parseQuery: false,
- stringifyQuery: false,
- fallback: false,
- prefetchLinks: true,
- prefetchPayloads: true,
- trailingSlash: undefined
- });
- const server = ({ env = {} } = {}) => ({
- https: false,
- port: env.NUXT_PORT ||
- env.PORT ||
- env.npm_package_config_nuxt_port ||
- 3000,
- host: env.NUXT_HOST ||
- env.HOST ||
- env.npm_package_config_nuxt_host ||
- 'localhost',
- socket: env.UNIX_SOCKET ||
- env.npm_package_config_unix_socket,
- timing: false
- });
- const cli = () => ({
- badgeMessages: [],
- bannerColor: 'green'
- });
- const generate = () => ({
- dir: 'dist',
- routes: [],
- exclude: [],
- concurrency: 500,
- interval: 0,
- subFolders: true,
- fallback: '200.html',
- crawler: true,
- manifest: true,
- cache: {
- ignore: [],
- globbyOptions: {
- gitignore: true
- }
- },
- staticAssets: {
- base: undefined, // Default: "/_nuxt/static:
- versionBase: undefined, // Default: "_nuxt/static/{version}""
- dir: 'static',
- version: undefined // Default: "{timeStampSec}"
- }
- });
- const defaultNuxtConfigFile = 'nuxt.config';
- function getDefaultNuxtConfig (options = {}) {
- if (!options.env) {
- options.env = process.env;
- }
- return {
- ..._app(),
- ..._common(),
- build: build(),
- messages: messages(),
- modes: modes(),
- render: render(),
- router: router(),
- server: server(options),
- cli: cli(),
- generate: generate()
- }
- }
- function getNuxtConfig (_options) {
- // Prevent duplicate calls
- if (_options.__normalized__) {
- return _options
- }
- // Clone options to prevent unwanted side-effects
- const options = Object.assign({}, _options);
- options.__normalized__ = true;
- // Normalize options
- if (options.loading === true) {
- delete options.loading;
- }
- if (
- options.router &&
- options.router.middleware &&
- !Array.isArray(options.router.middleware)
- ) {
- options.router.middleware = [options.router.middleware];
- }
- if (options.router && typeof options.router.base === 'string') {
- options._routerBaseSpecified = true;
- }
- // TODO: Remove for Nuxt 3
- // router.scrollBehavior -> app/router.scrollBehavior.js
- if (options.router && typeof options.router.scrollBehavior !== 'undefined') {
- consola__default['default'].warn('`router.scrollBehavior` property is deprecated in favor of using `~/app/router.scrollBehavior.js` file, learn more: https://nuxtjs.org/api/configuration-router#scrollbehavior');
- }
- // TODO: Remove for Nuxt 3
- // transition -> pageTransition
- if (typeof options.transition !== 'undefined') {
- consola__default['default'].warn('`transition` property is deprecated in favor of `pageTransition` and will be removed in Nuxt 3');
- options.pageTransition = options.transition;
- delete options.transition;
- }
- if (typeof options.pageTransition === 'string') {
- options.pageTransition = { name: options.pageTransition };
- }
- if (typeof options.layoutTransition === 'string') {
- options.layoutTransition = { name: options.layoutTransition };
- }
- if (typeof options.extensions === 'string') {
- options.extensions = [options.extensions];
- }
- options.globalName = (utils.isNonEmptyString(options.globalName) && /^[a-zA-Z]+$/.test(options.globalName))
- ? options.globalName.toLowerCase()
- // use `` for preventing replacing to nuxt-edge
- : `nuxt`;
- // Resolve rootDir
- options.rootDir = utils.isNonEmptyString(options.rootDir) ? path__default['default'].resolve(options.rootDir) : process.cwd();
- // Apply defaults by ${buildDir}/dist/build.config.js
- // TODO: Unsafe operation.
- // const buildDir = options.buildDir || defaults.buildDir
- // const buildConfig = resolve(options.rootDir, buildDir, 'build.config.js')
- // if (existsSync(buildConfig)) {
- // defaultsDeep(options, require(buildConfig))
- // }
- // Apply defaults
- const nuxtConfig = getDefaultNuxtConfig();
- nuxtConfig.build._publicPath = nuxtConfig.build.publicPath;
- // Fall back to default if publicPath is falsy
- if (options.build && !options.build.publicPath) {
- options.build.publicPath = undefined;
- }
- lodash.defaultsDeep(options, nuxtConfig);
- // Target
- options.target = options.target || 'server';
- if (!Object.values(utils.TARGETS).includes(options.target)) {
- consola__default['default'].warn(`Unknown target: ${options.target}. Falling back to server`);
- options.target = 'server';
- }
- // Deprecate Mode
- if (options.mode) {
- if ((options.mode === utils.MODES.universal && options.ssr) || (options.mode === utils.MODES.spa && !options.ssr)) {
- consola__default['default'].warn('`mode` option is deprecated. You can safely remove it from `nuxt.config`');
- } else {
- consola__default['default'].warn('`mode` option is deprecated. Please use `ssr: true` for universal mode or `ssr: false` for spa mode and remove `mode` from `nuxt.config`');
- }
- } else {
- // For backward compat we need default value
- options.mode = utils.MODES.universal;
- }
- // SSR root option
- if (options.ssr === false) {
- options.mode = utils.MODES.spa;
- }
- // Apply mode preset
- const modePreset = options.modes[options.mode || utils.MODES.universal];
- if (!modePreset) {
- consola__default['default'].warn(`Unknown mode: ${options.mode}. Falling back to ${utils.MODES.universal}`);
- }
- lodash.defaultsDeep(options, modePreset || options.modes[utils.MODES.universal]);
- // Sanitize router.base
- options.router.base = ufo.withTrailingSlash(ufo.normalizeURL(options.router.base));
- // Legacy support for export
- if (options.export) {
- consola__default['default'].warn('export option is deprecated and will be removed in a future version! Please switch to generate');
- options.generate = defu__default['default'](options.export, options.generate);
- }
- exports.export = options.generate;
- // Check srcDir and generate.dir existence
- const hasSrcDir = utils.isNonEmptyString(options.srcDir);
- const hasGenerateDir = utils.isNonEmptyString(options.generate.dir);
- // Resolve srcDir
- options.srcDir = hasSrcDir
- ? path__default['default'].resolve(options.rootDir, options.srcDir)
- : options.rootDir;
- // Resolve buildDir
- options.buildDir = path__default['default'].resolve(options.rootDir, options.buildDir);
- // Aliases
- const { rootDir, srcDir, dir: { assets: assetsDir, static: staticDir } } = options;
- options.alias = {
- '~~': rootDir,
- '@@': rootDir,
- '~': srcDir,
- '@': srcDir,
- [assetsDir]: path__default['default'].join(srcDir, assetsDir),
- [staticDir]: path__default['default'].join(srcDir, staticDir),
- ...options.alias
- };
- // Default value for _nuxtConfigFile
- if (!options._nuxtConfigFile) {
- options._nuxtConfigFile = path__default['default'].resolve(options.rootDir, `${defaultNuxtConfigFile}.js`);
- }
- if (!options._nuxtConfigFiles) {
- options._nuxtConfigFiles = [
- options._nuxtConfigFile
- ];
- }
- // Watch for config file changes
- options.watch.push(...options._nuxtConfigFiles);
- // Protect rootDir against buildDir
- utils.guardDir(options, 'rootDir', 'buildDir');
- if (hasGenerateDir) {
- // Resolve generate.dir
- options.generate.dir = path__default['default'].resolve(options.rootDir, options.generate.dir);
- // Protect rootDir against buildDir
- utils.guardDir(options, 'rootDir', 'generate.dir');
- }
- if (hasSrcDir) {
- // Protect srcDir against buildDir
- utils.guardDir(options, 'srcDir', 'buildDir');
- if (hasGenerateDir) {
- // Protect srcDir against generate.dir
- utils.guardDir(options, 'srcDir', 'generate.dir');
- }
- }
- // Populate modulesDir
- options.modulesDir = lodash.uniq(
- utils.getMainModule().paths.concat(
- [].concat(options.modulesDir).map(dir => path__default['default'].resolve(options.rootDir, dir))
- )
- );
- const mandatoryExtensions = ['js', 'mjs'];
- options.extensions = mandatoryExtensions
- .filter(ext => !options.extensions.includes(ext))
- .concat(options.extensions);
- // If app.html is defined, set the template path to the user template
- if (options.appTemplatePath === undefined) {
- options.appTemplatePath = path__default['default'].resolve(options.buildDir, 'views/app.template.html');
- if (fs__default['default'].existsSync(path__default['default'].join(options.srcDir, 'app.html'))) {
- options.appTemplatePath = path__default['default'].join(options.srcDir, 'app.html');
- }
- } else {
- options.appTemplatePath = path__default['default'].resolve(options.srcDir, options.appTemplatePath);
- }
- options.build.publicPath = options.build.publicPath.replace(/([^/])$/, '$1/');
- options.build._publicPath = options.build._publicPath.replace(/([^/])$/, '$1/');
- // Ignore publicPath on dev
- if (options.dev && utils.isUrl(options.build.publicPath)) {
- options.build.publicPath = options.build._publicPath;
- }
- // If store defined, update store options to true unless explicitly disabled
- if (
- options.store !== false &&
- fs__default['default'].existsSync(path__default['default'].join(options.srcDir, options.dir.store)) &&
- fs__default['default'].readdirSync(path__default['default'].join(options.srcDir, options.dir.store))
- .find(filename => filename !== 'README.md' && filename[0] !== '.')
- ) {
- options.store = true;
- }
- // SPA loadingIndicator
- if (options.loadingIndicator) {
- // Normalize loadingIndicator
- if (!utils.isPureObject(options.loadingIndicator)) {
- options.loadingIndicator = { name: options.loadingIndicator };
- }
- // Apply defaults
- options.loadingIndicator = Object.assign(
- {
- name: 'default',
- color: (options.loading && options.loading.color) || '#D3D3D3',
- color2: '#F5F5F5',
- background: (options.manifest && options.manifest.theme_color) || 'white',
- dev: options.dev,
- loading: options.messages.loading
- },
- options.loadingIndicator
- );
- }
- // Debug errors
- if (options.debug === undefined) {
- options.debug = options.dev;
- }
- // Validate that etag.hash is a function, if not unset it
- if (options.render.etag) {
- const { hash } = options.render.etag;
- if (hash) {
- const isFn = typeof hash === 'function';
- if (!isFn) {
- options.render.etag.hash = undefined;
- if (options.dev) {
- consola__default['default'].warn(`render.etag.hash should be a function, received ${typeof hash} instead`);
- }
- }
- }
- }
- // Apply default hash to CSP option
- if (options.render.csp) {
- options.render.csp = defu__default['default'](options.render.csp, {
- hashAlgorithm: 'sha256',
- allowedSources: undefined,
- policies: undefined,
- addMeta: Boolean(options.target === utils.TARGETS.static),
- unsafeInlineCompatibility: false,
- reportOnly: options.debug
- });
- // TODO: Remove this if statement in Nuxt 3, we will stop supporting this typo (more on: https://github.com/nuxt/nuxt.js/pull/6583)
- if (options.render.csp.unsafeInlineCompatiblity) {
- consola__default['default'].warn('Using `unsafeInlineCompatiblity` is deprecated and will be removed in Nuxt 3. Use `unsafeInlineCompatibility` instead.');
- options.render.csp.unsafeInlineCompatibility = options.render.csp.unsafeInlineCompatiblity;
- delete options.render.csp.unsafeInlineCompatiblity;
- }
- }
- // cssSourceMap
- if (options.build.cssSourceMap === undefined) {
- options.build.cssSourceMap = options.dev;
- }
- const babelConfig = options.build.babel;
- // babel cacheDirectory
- if (babelConfig.cacheDirectory === undefined) {
- babelConfig.cacheDirectory = options.dev;
- }
- // TODO: remove this warn in Nuxt 3
- if (Array.isArray(babelConfig.presets)) {
- const warnPreset = (presetName) => {
- const oldPreset = '@nuxtjs/babel-preset-app';
- const newPreset = '@nuxt/babel-preset-app';
- if (presetName.includes(oldPreset)) {
- presetName = presetName.replace(oldPreset, newPreset);
- consola__default['default'].warn('@nuxtjs/babel-preset-app has been deprecated, please use @nuxt/babel-preset-app.');
- }
- return presetName
- };
- babelConfig.presets = babelConfig.presets.map((preset) => {
- const hasOptions = Array.isArray(preset);
- if (hasOptions) {
- preset[0] = warnPreset(preset[0]);
- } else if (typeof preset === 'string') {
- preset = warnPreset(preset);
- }
- return preset
- });
- }
- // Vue config
- const vueConfig = options.vue.config;
- if (vueConfig.silent === undefined) {
- vueConfig.silent = !options.dev;
- }
- if (vueConfig.performance === undefined) {
- vueConfig.performance = options.dev;
- }
- // merge custom env with variables
- const eligibleEnvVariables = lodash.pick(process.env, Object.keys(process.env).filter(k => k.startsWith('NUXT_ENV_')));
- Object.assign(options.env, eligibleEnvVariables);
- // Normalize ignore
- options.ignore = options.ignore ? [].concat(options.ignore) : [];
- // Append ignorePrefix glob to ignore
- if (typeof options.ignorePrefix === 'string') {
- options.ignore.push(`**/${options.ignorePrefix}*.*`);
- }
- // Compression middleware legacy
- if (options.render.gzip) {
- consola__default['default'].warn('render.gzip is deprecated and will be removed in a future version! Please switch to render.compressor');
- options.render.compressor = options.render.gzip;
- delete options.render.gzip;
- }
- // If no server-side rendering, add appear true transition
- if (options.render.ssr === false && options.pageTransition) {
- options.pageTransition.appear = true;
- }
- options.render.ssrLog = options.dev
- ? options.render.ssrLog === undefined || options.render.ssrLog
- : false;
- // We assume the SPA fallback path is 404.html (for GitHub Pages, Surge, etc.)
- if (options.generate.fallback === true) {
- options.generate.fallback = '404.html';
- }
- if (options.build.stats === 'none' || options.build.quiet === true) {
- options.build.stats = false;
- }
- // Vendor backward compatibility with nuxt 1.x
- if (typeof options.build.vendor !== 'undefined') {
- delete options.build.vendor;
- consola__default['default'].warn('vendor has been deprecated due to webpack4 optimization');
- }
- // Disable CSS extraction due to incompatibility with thread-loader
- if (options.build.extractCSS && options.build.parallel) {
- options.build.parallel = false;
- consola__default['default'].warn('extractCSS cannot work with parallel build due to limited work pool in thread-loader');
- }
- // build.extractCSS.allChunks has no effect
- if (typeof options.build.extractCSS.allChunks !== 'undefined') {
- consola__default['default'].warn('build.extractCSS.allChunks has no effect from v2.0.0. Please use build.optimization.splitChunks settings instead.');
- }
- // devModules has been renamed to buildModules
- if (typeof options.devModules !== 'undefined') {
- consola__default['default'].warn('`devModules` has been renamed to `buildModules` and will be removed in Nuxt 3.');
- options.buildModules.push(...options.devModules);
- delete options.devModules;
- }
- // Enable minimize for production builds
- if (options.build.optimization.minimize === undefined) {
- options.build.optimization.minimize = !options.dev;
- }
- // Enable optimizeCSS only when extractCSS is enabled
- if (options.build.optimizeCSS === undefined) {
- options.build.optimizeCSS = options.build.extractCSS ? {} : false;
- }
- const { loaders } = options.build;
- const vueLoader = loaders.vue;
- if (vueLoader.productionMode === undefined) {
- vueLoader.productionMode = !options.dev;
- }
- const styleLoaders = [
- 'css', 'cssModules', 'less',
- 'sass', 'scss', 'stylus', 'vueStyle'
- ];
- for (const name of styleLoaders) {
- const loader = loaders[name];
- if (loader && loader.sourceMap === undefined) {
- loader.sourceMap = Boolean(options.build.cssSourceMap);
- }
- }
- options.build.transpile = [].concat(options.build.transpile || []);
- if (options.build.quiet === true) {
- consola__default['default'].level = 0;
- }
- // Use runInNewContext for dev mode by default
- const { bundleRenderer } = options.render;
- if (typeof bundleRenderer.runInNewContext === 'undefined') {
- bundleRenderer.runInNewContext = options.dev;
- }
- // TODO: Remove this if statement in Nuxt 3
- if (options.build.crossorigin) {
- consola__default['default'].warn('Using `build.crossorigin` is deprecated and will be removed in Nuxt 3. Please use `render.crossorigin` instead.');
- options.render.crossorigin = options.build.crossorigin;
- delete options.build.crossorigin;
- }
- const { timing } = options.server;
- if (timing) {
- options.server.timing = { total: true, ...timing };
- }
- if (utils.isPureObject(options.serverMiddleware)) {
- options.serverMiddleware = Object.entries(options.serverMiddleware)
- .map(([path, handler]) => ({ path, handler }));
- }
- // App config (internal for nuxt2 at this stage)
- const useCDN = utils.isUrl(options.build.publicPath) && !options.dev;
- const isRelativePublicPath = ufo.isRelative(options.build.publicPath);
- options.app = defu__default['default'](options.app, {
- basePath: options.router.base,
- assetsPath: isRelativePublicPath ? options.build.publicPath : useCDN ? '/' : ufo.joinURL(options.router.base, options.build.publicPath),
- cdnURL: useCDN ? options.build.publicPath : null
- });
- // Expose app config to $config._app
- options.publicRuntimeConfig = options.publicRuntimeConfig || {};
- options.publicRuntimeConfig._app = options.app;
- // Generate staticAssets
- const { staticAssets } = options.generate;
- if (!staticAssets.version) {
- staticAssets.version = String(Math.round(Date.now() / 1000));
- }
- if (!staticAssets.base) {
- staticAssets.base = ufo.joinURL(options.app.assetsPath, staticAssets.dir);
- }
- if (!staticAssets.versionBase) {
- staticAssets.versionBase = ufo.joinURL(staticAssets.base, staticAssets.version);
- }
- // createRequire
- const isJest = typeof jest !== 'undefined';
- const defaultCreateRequire = isJest ? 'native' : 'jiti';
- options.createRequire = process.env.NUXT_CREATE_REQUIRE || options.createRequire || defaultCreateRequire;
- if (options.createRequire === 'native' || options.createRequire === 'jiti') {
- const useJiti = options.createRequire === 'jiti';
- options.createRequire = p => utils.createRequire(typeof p === 'string' ? p : p.filename, useJiti);
- } else if (typeof options.createRequire !== 'function') {
- throw new TypeError(
- `Unsupported createRequire value ${options.createRequire}! Possible values: "native", "jiti", <Function>`
- )
- }
- // Indicator
- // Change boolean true to default nuxt value
- if (options.build.indicator === true) {
- options.build.indicator = nuxtConfig.build.indicator;
- }
- // ----- Builtin modules -----
- // Loading screen
- // Force disable for production and programmatic users
- if (!options.dev || !options._cli || !utils.getPKG('@nuxt/loading-screen')) {
- options.build.loadingScreen = false;
- }
- if (options.build.loadingScreen) {
- options._modules.push(['@nuxt/loading-screen', options.build.loadingScreen]);
- } else {
- // When loadingScreen is disabled we should also disable build indicator
- options.build.indicator = false;
- }
- // Components Module
- if (!options._start && utils.getPKG('@nuxt/components')) {
- options._modules.push('@nuxt/components');
- }
- // Nuxt Telemetry
- if (
- options.telemetry !== false &&
- !options.test &&
- !destr__default['default'](process.env.NUXT_TELEMETRY_DISABLED) &&
- utils.getPKG('@nuxt/telemetry')
- ) {
- options._modules.push('@nuxt/telemetry');
- }
- return options
- }
- async function loadNuxtConfig ({
- rootDir = '.',
- envConfig = {},
- configFile = defaultNuxtConfigFile,
- configContext = {},
- configOverrides = {}
- } = {}) {
- rootDir = path__default['default'].resolve(rootDir);
- const _require = utils.createRequire(rootDir, true);
- let options = {};
- try {
- configFile = _require.resolve(path__default['default'].resolve(rootDir, configFile));
- } catch (e) {
- if (e.code !== 'MODULE_NOT_FOUND') {
- throw (e)
- } else if (configFile !== defaultNuxtConfigFile) {
- consola__default['default'].fatal('Config file not found: ' + configFile);
- }
- // Skip configFile if cannot resolve
- configFile = undefined;
- }
- // Load env
- envConfig = {
- dotenv: '.env',
- env: process.env,
- expand: true,
- ...envConfig
- };
- const env = loadEnv(envConfig, rootDir);
- // Fill process.env so it is accessible in nuxt.config
- for (const key in env) {
- if (!key.startsWith('_') && envConfig.env[key] === undefined) {
- envConfig.env[key] = env[key];
- }
- }
- if (configFile) {
- // Clear cache
- utils.clearRequireCache(configFile);
- options = _require(configFile) || {};
- if (options.default) {
- options = options.default;
- }
- if (typeof options === 'function') {
- try {
- options = await options(configContext);
- if (options.default) {
- options = options.default;
- }
- } catch (error) {
- consola__default['default'].error(error);
- consola__default['default'].fatal('Error while fetching async configuration');
- }
- }
- // Don't mutate options export
- options = { ...options };
- // Keep _nuxtConfigFile for watching
- options._nuxtConfigFile = configFile;
- // Keep all related files for watching
- options._nuxtConfigFiles = Array.from(utils.scanRequireTree(configFile));
- if (!options._nuxtConfigFiles.includes(configFile)) {
- options._nuxtConfigFiles.unshift(configFile);
- }
- }
- if (typeof options.rootDir !== 'string') {
- options.rootDir = rootDir;
- }
- // Load Combine configs
- // Priority: configOverrides > nuxtConfig > .nuxtrc > .nuxtrc (global)
- options = defu__default['default'](
- configOverrides,
- options,
- rc__namespace.read({ name: '.nuxtrc', dir: options.rootDir }),
- rc__namespace.readUser('.nuxtrc')
- );
- // Load env to options._env
- options._env = env;
- options._envConfig = envConfig;
- if (configContext) { configContext.env = env; }
- // Expand and interpolate runtimeConfig from _env
- if (envConfig.expand) {
- for (const c of ['publicRuntimeConfig', 'privateRuntimeConfig']) {
- if (options[c]) {
- if (typeof options[c] === 'function') {
- options[c] = options[c](env);
- }
- expand(options[c], env, destr__default['default']);
- }
- }
- }
- return options
- }
- function loadEnv (envConfig, rootDir = process.cwd()) {
- const env = Object.create(null);
- // Read dotenv
- if (envConfig.dotenv) {
- envConfig.dotenv = path__default['default'].resolve(rootDir, envConfig.dotenv);
- if (fs__default['default'].existsSync(envConfig.dotenv)) {
- const parsed = dotenv__default['default'].parse(fs__default['default'].readFileSync(envConfig.dotenv, 'utf-8'));
- Object.assign(env, parsed);
- }
- }
- // Apply process.env
- if (!envConfig.env._applied) {
- Object.assign(env, envConfig.env);
- envConfig.env._applied = true;
- }
- // Interpolate env
- if (envConfig.expand) {
- expand(env);
- }
- return env
- }
- // Based on https://github.com/motdotla/dotenv-expand
- function expand (target, source = {}, parse = v => v) {
- function getValue (key) {
- // Source value 'wins' over target value
- return source[key] !== undefined ? source[key] : target[key]
- }
- function interpolate (value, parents = []) {
- if (typeof value !== 'string') {
- return value
- }
- const matches = value.match(/(.?\${?(?:[a-zA-Z0-9_:]+)?}?)/g) || [];
- return parse(matches.reduce((newValue, match) => {
- const parts = /(.?)\${?([a-zA-Z0-9_:]+)?}?/g.exec(match);
- const prefix = parts[1];
- let value, replacePart;
- if (prefix === '\\') {
- replacePart = parts[0];
- value = replacePart.replace('\\$', '$');
- } else {
- const key = parts[2];
- replacePart = parts[0].substring(prefix.length);
- // Avoid recursion
- if (parents.includes(key)) {
- consola__default['default'].warn(`Please avoid recursive environment variables ( loop: ${parents.join(' > ')} > ${key} )`);
- return ''
- }
- value = getValue(key);
- // Resolve recursive interpolations
- value = interpolate(value, [...parents, key]);
- }
- return value !== undefined ? newValue.replace(replacePart, value) : newValue
- }, value))
- }
- for (const key in target) {
- target[key] = interpolate(getValue(key));
- }
- }
- exports.defaultNuxtConfigFile = defaultNuxtConfigFile;
- exports.getDefaultNuxtConfig = getDefaultNuxtConfig;
- exports.getNuxtConfig = getNuxtConfig;
- exports.loadNuxtConfig = loadNuxtConfig;
|