mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-09 03:27:43 -08:00
105 lines
3.7 KiB
JavaScript
105 lines
3.7 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const babel = require('rollup-plugin-babel');
|
|
const commonjs = require('rollup-plugin-commonjs');
|
|
const nodeResolve = require('rollup-plugin-node-resolve');
|
|
const postcss = require('rollup-plugin-postcss');
|
|
const { eslint } = require('rollup-plugin-eslint');
|
|
const autoprefixer = require('autoprefixer');
|
|
const cssnano = require('cssnano');
|
|
const replace = require('rollup-plugin-replace');
|
|
const svgo = require('rollup-plugin-svgo');
|
|
const { sizeSnapshot } = require('rollup-plugin-size-snapshot');
|
|
const { terser } = require('rollup-plugin-terser');
|
|
const copyAfterBuild = require('./copyAfterBuild');
|
|
const removeHtmlSpace = require('./removeHtmlSpace');
|
|
const json = require('rollup-plugin-json');
|
|
|
|
module.exports = function creatRollupConfig(projectPath) {
|
|
const packageJson = JSON.parse(fs.readFileSync(path.join(projectPath, 'package.json'), 'utf-8'));
|
|
const { version, homepage, name, expose } = packageJson;
|
|
const isProd = process.env.NODE_ENV === 'production';
|
|
const banner =
|
|
'/*!\n' +
|
|
` * ${name}.js v${version}\n` +
|
|
` * Github: ${homepage}\n` +
|
|
` * (c) 2017-${new Date().getFullYear()} Harvey Zack\n` +
|
|
' * Released under the MIT License.\n' +
|
|
' */\n';
|
|
|
|
return {
|
|
input: path.join(projectPath, 'src/index.js'),
|
|
output: {
|
|
name: expose,
|
|
file: isProd
|
|
? path.join(projectPath, `dist/${name}.js`)
|
|
: path.join(process.cwd(), `docs/uncompiled/${name}.js`),
|
|
format: 'umd',
|
|
sourcemap: isProd ? false : true,
|
|
},
|
|
watch: {
|
|
exclude: ['node_modules/**', 'packages/**/node_modules/**'],
|
|
},
|
|
plugins: [
|
|
json({
|
|
exclude: ['node_modules/**', 'packages/**/node_modules/**'],
|
|
}),
|
|
eslint({
|
|
exclude: [
|
|
'node_modules/**',
|
|
'packages/*/src/**/*.scss',
|
|
'packages/*/src/**/*.svg',
|
|
'packages/*/src/**/*.json',
|
|
],
|
|
}),
|
|
postcss({
|
|
plugins: [
|
|
autoprefixer(),
|
|
cssnano({
|
|
preset: [
|
|
'default',
|
|
{
|
|
calc: false,
|
|
},
|
|
],
|
|
}),
|
|
],
|
|
sourceMap: isProd ? false : true,
|
|
extract: false,
|
|
}),
|
|
nodeResolve(),
|
|
commonjs(),
|
|
babel({
|
|
runtimeHelpers: true,
|
|
exclude: ['node_modules/**', 'packages/**/node_modules/**'],
|
|
presets: [['@babel/env', { modules: false }]],
|
|
plugins: ['@babel/plugin-external-helpers', '@babel/plugin-transform-runtime'],
|
|
}),
|
|
svgo({
|
|
raw: true,
|
|
}),
|
|
replace({
|
|
exclude: 'node_modules/**',
|
|
__ENV__: JSON.stringify(process.env.NODE_ENV || 'development'),
|
|
__VERSION__: version,
|
|
}),
|
|
isProd && sizeSnapshot(),
|
|
isProd && removeHtmlSpace(),
|
|
isProd &&
|
|
terser({
|
|
output: {
|
|
preamble: banner,
|
|
comments: function () {
|
|
return false;
|
|
},
|
|
},
|
|
}),
|
|
isProd &&
|
|
copyAfterBuild({
|
|
from: path.join(projectPath, 'dist/*'),
|
|
to: path.join(process.cwd(), 'dist'),
|
|
}),
|
|
],
|
|
};
|
|
};
|