mirror of
https://github.com/bytedance/xgplayer.git
synced 2025-04-05 03:05:02 +08:00
105 lines
3.0 KiB
JavaScript
105 lines
3.0 KiB
JavaScript
import path from 'path'
|
|
import fs from 'fs'
|
|
import scss from 'rollup-plugin-scss'
|
|
import postcss from 'postcss'
|
|
import autoprefixer from 'autoprefixer'
|
|
import nodeResolve from '@rollup/plugin-node-resolve'
|
|
import commonjs from '@rollup/plugin-commonjs'
|
|
import svg from 'rollup-plugin-svg-import'
|
|
import replace from '@rollup/plugin-replace'
|
|
import json from '@rollup/plugin-json'
|
|
import alias from '@rollup/plugin-alias'
|
|
import webWorkerLoader from 'rollup-plugin-web-worker-loader'
|
|
import { babel } from '@rollup/plugin-babel'
|
|
|
|
const packagesDir = path.resolve(__dirname, '../packages')
|
|
const entries = fs.readdirSync(packagesDir).reduce((p, c) => (p[c] = path.resolve(packagesDir, c, 'src/index.js'), p), {})
|
|
|
|
export function commonPlugins (pkgInfo) {
|
|
return [
|
|
alias({ entries }),
|
|
nodeResolve(),
|
|
commonjs(),
|
|
json(),
|
|
svg(),
|
|
replace({
|
|
__VERSION__: `"${pkgInfo.version}"`,
|
|
__DEV__: process.env.IS_DEVELOPMENT === 'true',
|
|
preventAssignment: true
|
|
}),
|
|
webWorkerLoader({
|
|
targetPlatform: 'browser',
|
|
external: []
|
|
}),
|
|
babel({
|
|
exclude: [/core-js/, /worker\.js/, /hevc-worker\.js/, /hevc-worker-thread\.js/],
|
|
babelHelpers: 'runtime'
|
|
})
|
|
]
|
|
}
|
|
|
|
export function createCssConfig (input, output, pkgDir) {
|
|
const config = {
|
|
input,
|
|
plugins: [
|
|
scss({
|
|
output,
|
|
processor: () => postcss([autoprefixer()]),
|
|
includePaths: [
|
|
path.resolve(__dirname, '../node_modules')
|
|
],
|
|
|
|
// watch mode
|
|
outputStyle: pkgDir ? undefined : 'compressed',
|
|
watch: pkgDir ? path.resolve(pkgDir, 'src') : undefined
|
|
})
|
|
]
|
|
}
|
|
return config
|
|
}
|
|
|
|
export function getUmdName (pkg, pathName) {
|
|
return pkg.umdName || pathName.replace(/^xgplayer/i, 'XGPlayer').replace(/-([A-Za-z])/g, (_, c) => c.toUpperCase())
|
|
}
|
|
|
|
export function getJsEntry (pkgDir, esEntry = []) {
|
|
const esIndex = path.resolve(pkgDir, 'src/index.js')
|
|
let entryFileJsUmd = path.resolve(pkgDir, 'src/index.umd.js')
|
|
entryFileJsUmd = fs.existsSync(entryFileJsUmd) ? entryFileJsUmd : esIndex
|
|
|
|
const esEntryFiles = esEntry.map(x => path.resolve(pkgDir, x))
|
|
esEntryFiles.push(esIndex)
|
|
|
|
return [esEntryFiles, entryFileJsUmd]
|
|
}
|
|
|
|
export function getCssEntry (pkgDir) {
|
|
const entryFileCss = path.resolve(pkgDir, 'src/index.scss')
|
|
const entryFileCssMobile = path.resolve(pkgDir, 'src/index.mobile.scss')
|
|
|
|
return [fs.existsSync(entryFileCss) && entryFileCss, fs.existsSync(entryFileCssMobile) && entryFileCssMobile]
|
|
}
|
|
|
|
export function getUmdGlobals (peerDependencies, custom) {
|
|
let globals = {}
|
|
if (peerDependencies.length) {
|
|
const pkgNames = fs.readdirSync(packagesDir).reduce((ret, p) => {
|
|
try {
|
|
const pkgInfo = require(path.resolve(packagesDir, p, 'package.json'))
|
|
ret[pkgInfo.name] = getUmdName(pkgInfo, p)
|
|
} catch (error) {
|
|
// ignore
|
|
}
|
|
return ret
|
|
}, {})
|
|
|
|
globals = peerDependencies.reduce((ret, c) => {
|
|
if (pkgNames[c]) {
|
|
ret[c] = pkgNames[c]
|
|
}
|
|
return ret
|
|
}, {})
|
|
}
|
|
return Object.assign(globals, custom)
|
|
}
|