Spaces:
Sleeping
Sleeping
const { createSchema, validate } = require('@vue/cli-shared-utils') | |
const schema = createSchema(joi => joi.object({ | |
publicPath: joi.string().allow(''), | |
outputDir: joi.string(), | |
assetsDir: joi.string().allow(''), | |
indexPath: joi.string(), | |
filenameHashing: joi.boolean(), | |
runtimeCompiler: joi.boolean(), | |
transpileDependencies: joi.array(), | |
productionSourceMap: joi.boolean(), | |
parallel: joi.alternatives().try([ | |
joi.boolean(), | |
joi.number().integer() | |
]), | |
devServer: joi.object(), | |
pages: joi.object().pattern( | |
/\w+/, | |
joi.alternatives().try([ | |
joi.string().required(), | |
joi.array().items(joi.string().required()), | |
joi.object().keys({ | |
entry: joi.alternatives().try([ | |
joi.string().required(), | |
joi.array().items(joi.string().required()) | |
]).required() | |
}).unknown(true) | |
]) | |
), | |
crossorigin: joi.string().valid(['', 'anonymous', 'use-credentials']), | |
integrity: joi.boolean(), | |
// css | |
css: joi.object({ | |
// TODO: deprecate this after joi 16 release | |
modules: joi.boolean(), | |
requireModuleExtension: joi.boolean(), | |
extract: joi.alternatives().try(joi.boolean(), joi.object()), | |
sourceMap: joi.boolean(), | |
loaderOptions: joi.object({ | |
css: joi.object(), | |
sass: joi.object(), | |
scss: joi.object(), | |
less: joi.object(), | |
stylus: joi.object(), | |
postcss: joi.object() | |
}) | |
}), | |
// webpack | |
chainWebpack: joi.func(), | |
configureWebpack: joi.alternatives().try( | |
joi.object(), | |
joi.func() | |
), | |
// known runtime options for built-in plugins | |
lintOnSave: joi.any().valid([true, false, 'error', 'warning', 'default']), | |
pwa: joi.object(), | |
// 3rd party plugin options | |
pluginOptions: joi.object() | |
})) | |
exports.validate = (options, cb) => { | |
validate(options, schema, cb) | |
} | |
// #2110 | |
// https://github.com/nodejs/node/issues/19022 | |
// in some cases cpus() returns undefined, and may simply throw in the future | |
function hasMultipleCores () { | |
try { | |
return require('os').cpus().length > 1 | |
} catch (e) { | |
return false | |
} | |
} | |
exports.defaults = () => ({ | |
// project deployment base | |
publicPath: '/', | |
// where to output built files | |
outputDir: 'dist', | |
// where to put static assets (js/css/img/font/...) | |
assetsDir: '', | |
// filename for index.html (relative to outputDir) | |
indexPath: 'index.html', | |
// whether filename will contain hash part | |
filenameHashing: true, | |
// boolean, use full build? | |
runtimeCompiler: false, | |
// deps to transpile | |
transpileDependencies: [ | |
/* string or regex */ | |
], | |
// sourceMap for production build? | |
productionSourceMap: !process.env.VUE_CLI_TEST, | |
// use thread-loader for babel & TS in production build | |
// enabled by default if the machine has more than 1 cores | |
parallel: hasMultipleCores(), | |
// multi-page config | |
pages: undefined, | |
// <script type="module" crossorigin="use-credentials"> | |
// #1656, #1867, #2025 | |
crossorigin: undefined, | |
// subresource integrity | |
integrity: false, | |
css: { | |
// extract: true, | |
// modules: false, | |
// sourceMap: false, | |
// loaderOptions: {} | |
}, | |
// whether to use eslint-loader | |
lintOnSave: 'default', | |
devServer: { | |
/* | |
open: process.platform === 'darwin', | |
host: '0.0.0.0', | |
port: 8080, | |
https: false, | |
hotOnly: false, | |
proxy: null, // string | Object | |
before: app => {} | |
*/ | |
} | |
}) | |