UNPKG

@wibetter/akfun

Version:

前端脚手架:支持Vue技术栈和react技术栈

50 lines (46 loc) 1.95 kB
const ora = require('ora'); const rollup = require('rollup'); const projectConfig = require('./config/index'); // 引入当前项目配置文件 const defaultConfig = require('./config/default.config'); const rollupConfig = require('./config/rollup.config'); // rollup的配置文件 const { isArray, isObject } = require('./utils/typeof'); const {curConsoleTag } = require("./utils/akfunParams"); const deepMergeConfig = require('./utils/deepMergeConfig'); async function build2esmFunc(options, curConfig) { // create a bundle const bundle = await rollup.rollup({ input: options.input, /** 直接使用webpack中的externals配置(避免再新增一个rollup对应的配置,增加用户的配置复杂度) */ external: curConfig.webpack.externals, plugins: options.plugins }); if (isArray(options.output)) { options.output.map((outputItem) => { bundle.write(outputItem); }); } else if (isObject(options.output)) { // or write the bundle to disk await bundle.write(options.output); } } // 构建脚本:一般用于构建生产环境的代码 module.exports = function (fileName, akfunConfig, _consoleTag) { const consoleTag = _consoleTag || curConsoleTag; let config = projectConfig; // 默认使用执行命令目录下的配置数据 if (akfunConfig) { // 参数中的config配置优先级最高 config = deepMergeConfig(defaultConfig, akfunConfig); } const spinner = ora(`${consoleTag}开启esm模块构建能力...`).start(); const curRollupConfig = rollupConfig(fileName, config); // 默认配置 const build2esm = config.build2esm; // 用户的项目配置 if (build2esm && build2esm.input) { curRollupConfig.input = build2esm.input; } if (build2esm && build2esm.output) { curRollupConfig.output = build2esm.output; } build2esmFunc(curRollupConfig, config).then(() => { spinner.succeed(`${consoleTag}esm模块构建完成。`); }); };