@ali-i18n-fe/dada-component
Version:
68 lines (51 loc) • 1.9 kB
JavaScript
const getWebpackServerConfig = require("./webpack/webpack.server");
const getWebpackProdConfig = require("./webpack/webpack.prod");
const getDocsServerConfig = require("./webpack/webpack.docs");
const { getCurrentPathConfig } = require("./utils");
const path = require("path");
const fs = require("fs");
const readme = require("./readme");
const sync = require("./sync");
const { isDef } = require("./utils/def");
const { spendTime } = require("./webpack/utils/log");
const { buildTemplateJS } = require("./utils/buildTemplateJS");
const { webpackPromise } = require("./utils/webpackPromise");
const { getDefaultPublicPath } = require("./utils/def");
const Build = {
load: spendTime("构建Stories", async function () {
await buildTemplateJS();
const config = this.getWebpackConfig();
await webpackPromise(config);
this.writeHomePage();
isDef() && readme.load();
isDef() && sync.load();
}),
writeHomePage() {
if (!isDef()) {
return;
}
const { getPackageConfig } = require("./utils/getPackageJson");
const pkgJSON = getPackageConfig();
const pkgPath = path.resolve(process.cwd(), "./package.json");
pkgJSON.homepage = `${getDefaultPublicPath()}stories/index.html`;
fs.writeFileSync(pkgPath, JSON.stringify(pkgJSON, null, 2), "utf8");
},
getWebpackConfig() {
const mergeConfig = (options) => {
const config = getWebpackProdConfig(options);
config.output.publicPath += "stories/";
// config.devtool = "source-map";
config.output.path = path.resolve(config.output.path, "stories");
config.devServer = {
port: options.devPort,
};
return config;
};
const currentConfig = getCurrentPathConfig();
return [
getDocsServerConfig(currentConfig, mergeConfig),
getWebpackServerConfig(currentConfig, mergeConfig),
];
},
};
module.exports = Build;