mirror of
https://github.com/element-plus/element-plus.git
synced 2024-12-21 02:50:11 +08:00
82 lines
1.9 KiB
JavaScript
82 lines
1.9 KiB
JavaScript
/* eslint-disable */
|
|
const pkg = require('../package.json')
|
|
const path = require('path')
|
|
const css = require('rollup-plugin-css-only')
|
|
const { nodeResolve } = require('@rollup/plugin-node-resolve')
|
|
const vue = require('rollup-plugin-vue')
|
|
const rollup = require('rollup')
|
|
const typescript = require('rollup-plugin-typescript2')
|
|
const { noElPrefixFile } = require('./common');
|
|
|
|
const deps = Object.keys(pkg.dependencies)
|
|
|
|
const root = path.resolve(__dirname, '..');
|
|
|
|
const defaultOpts = {
|
|
plugins: [
|
|
nodeResolve(),
|
|
css(),
|
|
vue({
|
|
target: 'browser',
|
|
css: false,
|
|
}),
|
|
typescript({
|
|
tsconfigOverride: {
|
|
compilerOptions: {
|
|
declaration: false,
|
|
},
|
|
'exclude': [
|
|
'node_modules',
|
|
'__tests__',
|
|
],
|
|
},
|
|
abortOnError: false,
|
|
}),
|
|
],
|
|
external(id) {
|
|
return /^vue/.test(id)
|
|
|| /^@element-plus/.test(id)
|
|
|| deps.some(k => new RegExp('^' + k).test(id))
|
|
},
|
|
}
|
|
|
|
const isPkg = (id) => {
|
|
return id.startsWith('@element-plus')
|
|
}
|
|
|
|
const isExcluded = (id) => {
|
|
return noElPrefixFile.test(id)
|
|
}
|
|
|
|
const replacePrefix = (prefix, target) => {
|
|
return prefix + target.slice(14) // @element-plus/.length = 14
|
|
}
|
|
|
|
const run = async (name, input, isRoot = false) => {
|
|
const inputPath = `${path.resolve(root, input)}/index.ts`
|
|
defaultOpts.input = inputPath
|
|
|
|
const getPaths = (id) => {
|
|
if (isPkg(id)) {
|
|
if (isExcluded(id)) return replacePrefix(isRoot ? './' : '../', id)
|
|
return replacePrefix(isRoot ? './el-' : '../el-', id)
|
|
}
|
|
}
|
|
const esm = {
|
|
format: 'es',
|
|
file: `es/${name}`,
|
|
paths: getPaths,
|
|
};
|
|
const cjs = {
|
|
format: 'cjs',
|
|
file: `lib/${name}`,
|
|
paths: getPaths,
|
|
exports: 'named',
|
|
};
|
|
const bundle = await rollup.rollup(defaultOpts);
|
|
await Promise.all([bundle.write(esm), bundle.write(cjs)])
|
|
console.log(name, 'build finished');
|
|
}
|
|
|
|
module.exports = run;
|