mirror of
https://github.com/nuxt/nuxt.git
synced 2024-11-11 16:43:55 +00:00
567dc860c1
* feat: new filenames structure * refactor: codes format * refactor: remove [path] in output filename * refactor: use chunkhash for js files * refactor: remove normalizeFileName
245 lines
5.5 KiB
JavaScript
245 lines
5.5 KiB
JavaScript
import path from 'path'
|
|
import fs from 'fs'
|
|
import env from 'std-env'
|
|
|
|
const nuxtDir = fs.existsSync(path.resolve(__dirname, '..', 'package.json'))
|
|
? path.resolve(__dirname, '..') // dist
|
|
: path.resolve(__dirname, '..', '..') // src
|
|
|
|
export default {
|
|
// Information about running environment
|
|
dev: Boolean(env.dev),
|
|
debug: undefined, // = dev
|
|
|
|
// Mode
|
|
mode: 'universal',
|
|
|
|
// Server options
|
|
server: {
|
|
port: process.env.NUXT_PORT ||
|
|
process.env.PORT ||
|
|
process.env.npm_package_config_nuxt_port,
|
|
host: process.env.NUXT_HOST ||
|
|
process.env.HOST ||
|
|
process.env.npm_package_config_nuxt_host
|
|
},
|
|
|
|
// Dirs
|
|
srcDir: undefined,
|
|
buildDir: '.nuxt',
|
|
nuxtDir,
|
|
nuxtAppDir: path.resolve(nuxtDir, 'lib', 'app'),
|
|
modulesDir: ['node_modules'], // ~> relative to options.rootDir
|
|
|
|
// Ignore
|
|
ignorePrefix: '-',
|
|
ignore: [
|
|
'**/*.test.*',
|
|
'**/*.spec.*'
|
|
],
|
|
|
|
extensions: [],
|
|
|
|
build: {
|
|
quiet: Boolean(env.ci || env.test),
|
|
analyze: false,
|
|
profile: process.argv.includes('--profile'),
|
|
extractCSS: false,
|
|
cssSourceMap: undefined,
|
|
ssr: undefined,
|
|
parallel: false,
|
|
cache: false,
|
|
publicPath: '/_nuxt/',
|
|
filenames: {
|
|
// { isDev, isClient, isServer }
|
|
app: ({ isDev }) => isDev ? '[name].js' : '[chunkhash].js',
|
|
chunk: ({ isDev }) => isDev ? '[name].js' : '[chunkhash].js',
|
|
css: ({ isDev }) => isDev ? '[name].js' : '[contenthash].css',
|
|
img: ({ isDev }) => isDev ? '[path][name].[ext]' : 'img/[hash:7].[ext]',
|
|
font: ({ isDev }) => isDev ? '[path][name].[ext]' : 'fonts/[hash:7].[ext]',
|
|
video: ({ isDev }) => isDev ? '[path][name].[ext]' : 'videos/[hash:7].[ext]'
|
|
},
|
|
styleResources: {},
|
|
plugins: [],
|
|
optimization: {
|
|
splitChunks: {
|
|
chunks: 'all',
|
|
automaticNameDelimiter: '.',
|
|
name: undefined,
|
|
cacheGroups: {}
|
|
}
|
|
},
|
|
splitChunks: {
|
|
layouts: false,
|
|
pages: true,
|
|
commons: true
|
|
},
|
|
babel: {
|
|
babelrc: false,
|
|
cacheDirectory: undefined
|
|
},
|
|
transpile: [], // Name of NPM packages to be transpiled
|
|
vueLoader: {},
|
|
postcss: {
|
|
preset: {
|
|
// https://cssdb.org/#staging-process
|
|
stage: 2
|
|
}
|
|
},
|
|
templates: [],
|
|
watch: [],
|
|
devMiddleware: {},
|
|
hotMiddleware: {},
|
|
stats: {
|
|
chunks: false,
|
|
children: false,
|
|
modules: false,
|
|
colors: true,
|
|
warnings: true,
|
|
errors: true,
|
|
excludeAssets: [
|
|
/.map$/,
|
|
/index\..+\.html$/,
|
|
/vue-ssr-client-manifest.json/
|
|
]
|
|
}
|
|
},
|
|
generate: {
|
|
dir: 'dist',
|
|
routes: [],
|
|
concurrency: 500,
|
|
interval: 0,
|
|
subFolders: true,
|
|
fallback: '200.html',
|
|
minify: {
|
|
collapseBooleanAttributes: true,
|
|
collapseWhitespace: false,
|
|
decodeEntities: true,
|
|
minifyCSS: true,
|
|
minifyJS: true,
|
|
processConditionalComments: true,
|
|
removeAttributeQuotes: false,
|
|
removeComments: false,
|
|
removeEmptyAttributes: true,
|
|
removeOptionalTags: false,
|
|
removeRedundantAttributes: true,
|
|
removeScriptTypeAttributes: false,
|
|
removeStyleLinkTypeAttributes: false,
|
|
removeTagWhitespace: false,
|
|
sortAttributes: true,
|
|
sortClassName: false,
|
|
trimCustomFragments: true,
|
|
useShortDoctype: true
|
|
}
|
|
},
|
|
env: {},
|
|
head: {
|
|
meta: [],
|
|
link: [],
|
|
style: [],
|
|
script: []
|
|
},
|
|
plugins: [],
|
|
css: [],
|
|
modules: [],
|
|
layouts: {},
|
|
serverMiddleware: [],
|
|
ErrorPage: null,
|
|
loading: {
|
|
color: 'black',
|
|
failedColor: 'red',
|
|
height: '2px',
|
|
duration: 5000,
|
|
rtl: false
|
|
},
|
|
loadingIndicator: 'default',
|
|
transition: {
|
|
name: 'page',
|
|
mode: 'out-in',
|
|
appear: false,
|
|
appearClass: 'appear',
|
|
appearActiveClass: 'appear-active',
|
|
appearToClass: 'appear-to'
|
|
},
|
|
layoutTransition: {
|
|
name: 'layout',
|
|
mode: 'out-in'
|
|
},
|
|
dir: {
|
|
assets: 'assets',
|
|
layouts: 'layouts',
|
|
middleware: 'middleware',
|
|
pages: 'pages',
|
|
static: 'static',
|
|
store: 'store'
|
|
},
|
|
vue: {
|
|
config: {
|
|
silent: undefined, // = !dev
|
|
performance: undefined // = dev
|
|
}
|
|
},
|
|
router: {
|
|
mode: 'history',
|
|
base: '/',
|
|
routes: [],
|
|
middleware: [],
|
|
linkActiveClass: 'nuxt-link-active',
|
|
linkExactActiveClass: 'nuxt-link-exact-active',
|
|
extendRoutes: null,
|
|
scrollBehavior: null,
|
|
parseQuery: false,
|
|
stringifyQuery: false,
|
|
fallback: false
|
|
},
|
|
render: {
|
|
bundleRenderer: {
|
|
shouldPrefetch: () => false
|
|
},
|
|
resourceHints: true,
|
|
ssr: undefined,
|
|
http2: {
|
|
push: false,
|
|
shouldPush: null
|
|
},
|
|
static: {
|
|
prefix: true
|
|
},
|
|
gzip: {
|
|
threshold: 0
|
|
},
|
|
etag: {
|
|
weak: false
|
|
},
|
|
csp: false,
|
|
dist: {
|
|
// Don't serve index.html template
|
|
index: false,
|
|
// 1 year in production
|
|
maxAge: '1y'
|
|
}
|
|
},
|
|
// User-defined changes
|
|
watch: [],
|
|
watchers: {
|
|
webpack: {},
|
|
chokidar: {
|
|
ignoreInitial: true
|
|
}
|
|
},
|
|
editor: undefined,
|
|
hooks: null,
|
|
messages: {
|
|
loading: 'Loading...',
|
|
error_404: 'This page could not be found',
|
|
server_error: 'Server error',
|
|
nuxtjs: 'Nuxt.js',
|
|
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.'
|
|
}
|
|
}
|