@alicd/micro-stark
Version:
cone微应用
102 lines (92 loc) • 2.71 kB
JavaScript
import babel from '@rollup/plugin-babel';
import buble from '@rollup/plugin-buble';
import nodeResolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
const path = require('path');
const replace = require('rollup-plugin-replace');
const pkg = require('../package.json');
const version = process.env.VERSION || pkg.version;
const banner = `/**
* ${pkg.name} v${version}
* (c) ${new Date().getFullYear()} ${pkg.author}
*/`;
const resolve = _path => path.resolve(__dirname, '../', _path);
const configs = {
umdDev: {
input: resolve('src/index.js'),
file: resolve('dist/microStark.js'),
format: 'umd',
env: 'development',
},
umdProd: {
input: resolve('src/index.js'),
file: resolve('dist/microStark.min.js'),
format: 'umd',
env: 'production',
},
commonjs: {
input: resolve('src/index.js'),
file: resolve('dist/microStark.common.js'),
format: 'cjs',
},
esm: {
input: resolve('src/index.js'),
file: resolve('dist/microStark.esm.js'),
format: 'es',
},
};
function genConfig(opts) {
const config = {
input: {
input: opts.input,
external: ['axios','react'],
plugins: [
nodeResolve({
mainFields: ['module', 'jsnext:main', 'browser', 'main'],
}),
commonjs(),
replace({
__VERSION__: version,
}),
babel({
babelHelpers: 'bundled',
babelrc: true,
exclude: 'node_modules/**',
extensions: ['.js', 'ts'],
}),
buble({
transforms: {
generator: false,
},
}),
],
},
output: {
banner,
file: opts.file,
format: opts.format,
globals: {
axios: 'axios',
react: 'react',
},
exports:'named',
name: 'microStark',
},
};
if (opts.env) {
config.input.plugins.unshift(
replace({
'process.env.NODE_ENV': JSON.stringify(opts.env),
})
);
}
return config;
}
function mapValues(obj, fn) {
const res = {};
Object.keys(obj).forEach(key => {
res[key] = fn(obj[key], key);
});
return res;
}
module.exports = mapValues(configs, genConfig);