@luban-cli/cli-plugin-service
Version:
A development runtime environment dependency
70 lines • 2.43 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.mergeProjectOptions = exports.validateProjectConfig = void 0;
const cli_shared_utils_1 = require("@luban-cli/cli-shared-utils");
const lodash_defaultsdeep_1 = __importDefault(require("lodash.defaultsdeep"));
const schema = cli_shared_utils_1.createSchema((joi) => joi.object({
publicPath: joi.string(),
outputDir: joi.string(),
indexPath: joi.string(),
assetsDir: joi.object({
scripts: joi.string(),
styles: joi.string(),
images: joi.string(),
media: joi.string(),
fonts: joi.string(),
}),
productionSourceMap: joi.boolean(),
css: joi.object({
sourceMap: joi.boolean(),
loaderOptions: joi.object({
less: joi.object(),
css: joi.object(),
miniCss: joi.object(),
}),
}),
alias: joi.object(),
assetsLimit: joi.number(),
mock: joi.boolean(),
ssr: joi.boolean(),
configureWebpack: joi.function(),
chainWebpack: joi.function(),
refreshOverlay: joi.boolean(),
}));
function validateProjectConfig(options, cb) {
cli_shared_utils_1.validate(options, schema, { allowUnknown: true }, cb);
}
exports.validateProjectConfig = validateProjectConfig;
const defaultsProjectConfig = {
publicPath: "/",
outputDir: "dist",
assetsDir: {
scripts: "scripts",
styles: "styles",
images: "images",
fonts: "fonts",
media: "media",
},
indexPath: "index.html",
templatePath: "index.html",
productionSourceMap: false,
assetsLimit: 4096,
alias: {},
refreshOverlay: true,
};
function mergeProjectOptions(projectOptions, rootOptions) {
const isProduction = process.env.NODE_ENV === "production";
return lodash_defaultsdeep_1.default(projectOptions, Object.assign(Object.assign({}, defaultsProjectConfig), { css: {
sourceMap: !isProduction,
loaderOptions: {
css: {},
less: {},
miniCss: {},
},
}, mock: rootOptions.fetch || false, ssr: false, configureWebpack: () => undefined, chainWebpack: () => undefined }));
}
exports.mergeProjectOptions = mergeProjectOptions;
//# sourceMappingURL=options.js.map