init
This commit is contained in:
61
pc/scripts/build.mjs
Normal file
61
pc/scripts/build.mjs
Normal file
@ -0,0 +1,61 @@
|
||||
import path from 'path'
|
||||
import fsExtra from 'fs-extra'
|
||||
import dotenv from 'dotenv'
|
||||
const { existsSync, remove, copy } = fsExtra
|
||||
const cwd = process.cwd()
|
||||
dotenv.config()
|
||||
|
||||
const isSSR = Boolean(process.env.NUXT_SSR)
|
||||
//打包发布路径,可能会覆盖重要文件,请谨慎改动
|
||||
const releaseRelativePath = '../public/pc'
|
||||
const distRelativePath = isSSR ? '' : './.output/public'
|
||||
const distPath = path.resolve(cwd, distRelativePath)
|
||||
const distSSRFilter = ['.output', 'public', 'static', 'package.json']
|
||||
const distNotSSRFilter = ['']
|
||||
const distFilter = joinPath(isSSR ? distSSRFilter : distNotSSRFilter)
|
||||
|
||||
function joinPath(target, res = []) {
|
||||
target.forEach((src) => {
|
||||
res.push(path.join(distPath, src))
|
||||
})
|
||||
return res
|
||||
}
|
||||
|
||||
const releasePath = path.resolve(cwd, releaseRelativePath)
|
||||
|
||||
async function build() {
|
||||
if (existsSync(releasePath)) {
|
||||
await remove(releasePath)
|
||||
}
|
||||
console.log(`文件正在复制 ==> ${releaseRelativePath}`)
|
||||
try {
|
||||
await copyFile(distPath, releasePath)
|
||||
} catch (error) {
|
||||
console.log(`\n ${error}`)
|
||||
}
|
||||
console.log(`文件已复制 ==> ${releaseRelativePath}`)
|
||||
}
|
||||
|
||||
function copyFile(sourceDir, targetDir) {
|
||||
return new Promise((resolve, reject) => {
|
||||
copy(
|
||||
sourceDir,
|
||||
targetDir,
|
||||
{
|
||||
filter(src) {
|
||||
if (src === distPath) return true
|
||||
return distFilter.some((item) => src.includes(item))
|
||||
}
|
||||
},
|
||||
(err) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
} else {
|
||||
resolve()
|
||||
}
|
||||
}
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
build()
|
||||
Reference in New Issue
Block a user