mirror of
https://github.com/bytedream/stream-bypass.git
synced 2025-05-09 12:15:14 +02:00
104 lines
3.0 KiB
TypeScript
104 lines
3.0 KiB
TypeScript
const fs = require('fs')
|
|
const path = require('path')
|
|
const rollup = require('rollup')
|
|
const rollupPluginCommonJs = require('@rollup/plugin-commonjs')
|
|
const rollupPluginNodeResolve = require('@rollup/plugin-node-resolve').default
|
|
const rollupPluginReplace = require('@rollup/plugin-replace')
|
|
const rollupPluginTypescript = require('@rollup/plugin-typescript')
|
|
const sass = require('sass')
|
|
const typescript = require('typescript')
|
|
|
|
async function buildManifest() {
|
|
const manifest = JSON.parse(fs.readFileSync('src/manifest.json'))
|
|
|
|
manifest['version'] = process.env.npm_package_version
|
|
|
|
fs.writeFileSync('src/manifest.json', JSON.stringify(manifest, null, 2))
|
|
}
|
|
|
|
async function buildMisc() {
|
|
const files = {
|
|
'src/manifest.json': 'build/manifest.json',
|
|
|
|
'src/icons/logo_48.png': 'build/icons/logo_48.png',
|
|
'src/icons/logo_128.png': 'build/icons/logo_128.png',
|
|
'src/icons/disabled_48.png': 'build/icons/disabled_48.png',
|
|
'src/icons/disabled_128.png': 'build/icons/disabled_128.png',
|
|
}
|
|
|
|
for (const [src, dst] of Object.entries(files)) {
|
|
fs.mkdirSync(path.dirname(dst), {recursive: true})
|
|
fs.copyFileSync(src, dst)
|
|
}
|
|
}
|
|
|
|
async function buildHtml() {
|
|
const files = {
|
|
'src/ui/popup/popup.html': 'build/ui/popup/popup.html',
|
|
'src/ui/player/player.html': 'build/ui/player/player.html'
|
|
}
|
|
|
|
for (const [src, dst] of Object.entries(files)) {
|
|
fs.mkdirSync(path.dirname(dst), {recursive: true})
|
|
fs.copyFileSync(src, dst)
|
|
}
|
|
}
|
|
|
|
async function buildCss() {
|
|
const files = {
|
|
'src/ui/popup/popup.scss': 'build/ui/popup/popup.css',
|
|
'src/ui/player/player.scss': 'build/ui/player/player.css'
|
|
}
|
|
|
|
for (const [src, dst] of Object.entries(files)) {
|
|
const compiled = await sass.compileAsync(src)
|
|
fs.mkdirSync(path.dirname(dst), {recursive: true})
|
|
fs.writeFileSync(dst, compiled.css)
|
|
}
|
|
}
|
|
|
|
async function buildJs() {
|
|
const files = {
|
|
'src/ui/popup/popup.ts': 'build/ui/popup/popup.js',
|
|
'src/ui/player/player.ts': 'build/ui/player/player.js',
|
|
|
|
'src/index.ts': 'build/index.js',
|
|
'src/background.ts': 'build/background.js'
|
|
}
|
|
|
|
for (const [src, dst] of Object.entries(files)) {
|
|
const bundle = await rollup.rollup({
|
|
input: src,
|
|
plugins: [
|
|
rollupPluginNodeResolve({
|
|
browser: true
|
|
}),
|
|
rollupPluginReplace({
|
|
'process.env.NODE_ENV': JSON.stringify('production')
|
|
}),
|
|
rollupPluginTypescript({
|
|
typescript,
|
|
tsconfig: 'src/tsconfig.json'
|
|
}),
|
|
rollupPluginCommonJs({
|
|
extensions: ['.js', '.ts']
|
|
})
|
|
]
|
|
})
|
|
await bundle.write({
|
|
file: dst,
|
|
strict: true
|
|
})
|
|
}
|
|
}
|
|
|
|
async function build() {
|
|
await buildManifest()
|
|
await buildMisc()
|
|
await buildHtml()
|
|
await buildCss()
|
|
await buildJs()
|
|
}
|
|
|
|
build()
|