| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | const { createSchema, validate } = require('@vue/cli-shared-utils')const schema = createSchema(joi => joi.object({  baseUrl: joi.string().allow(''),  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({    modules: 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 futurefunction hasMultipleCores () {  try {    return require('os').cpus().length > 1  } catch (e) {    return false  }}exports.defaults = () => ({  // project deployment base  publicPath: '/',  // for compatibility concern. TODO: remove in v4.  baseUrl: '/',  // 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,    // localIdentName: '[name]_[local]_[hash:base64:5]',    // sourceMap: false,    // loaderOptions: {}  },  // whether to use eslint-loader  lintOnSave: true,  devServer: {    /*    open: process.platform === 'darwin',    host: '0.0.0.0',    port: 8080,    https: false,    hotOnly: false,    proxy: null, // string | Object    before: app => {}  */  }})
 |