You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.9 KiB
71 lines
1.9 KiB
const fs = require('fs')
|
|
const path = require('path')
|
|
|
|
const assetsDir = 'static'
|
|
|
|
function getAssetsCopyOption (from, options = {}) {
|
|
if (path.isAbsolute(from)) {
|
|
if (fs.existsSync(from)) {
|
|
return Object.assign({
|
|
from,
|
|
to: path.resolve(process.env.UNI_OUTPUT_DIR)
|
|
}, options)
|
|
}
|
|
}
|
|
const to = from
|
|
from = path.resolve(process.env.UNI_INPUT_DIR, from)
|
|
if (fs.existsSync(from)) {
|
|
return Object.assign({
|
|
from,
|
|
to: path.resolve(process.env.UNI_OUTPUT_DIR, to)
|
|
}, options)
|
|
}
|
|
}
|
|
// 暂未考虑动态添加static目录
|
|
function getAssetsCopyOptions (assetsDir) {
|
|
const ignore = []
|
|
|
|
global.uniPlugin.platforms.forEach(platform => {
|
|
if (global.uniPlugin.name !== platform) {
|
|
ignore.push(platform + '/**/*')
|
|
}
|
|
})
|
|
|
|
const copyOptions = []
|
|
// 主包静态资源
|
|
const mainAssetsCopyOption = getAssetsCopyOption(assetsDir, {
|
|
ignore
|
|
})
|
|
if (mainAssetsCopyOption) {
|
|
copyOptions.push(mainAssetsCopyOption)
|
|
}
|
|
// 分包静态资源
|
|
process.UNI_SUBPACKAGES && Object.keys(process.UNI_SUBPACKAGES).forEach(root => {
|
|
const subAssetsCopyOption = getAssetsCopyOption(path.join(root, assetsDir), {
|
|
ignore
|
|
})
|
|
if (subAssetsCopyOption) {
|
|
copyOptions.push(subAssetsCopyOption)
|
|
}
|
|
})
|
|
return copyOptions
|
|
}
|
|
|
|
function getCopyWebpackPluginOptions (platformOptions, vueOptions) {
|
|
const copyOptions = getAssetsCopyOptions(assetsDir)
|
|
global.uniPlugin.copyWebpackOptions.forEach(copyWebpackOptions => {
|
|
const platformCopyOptions = copyWebpackOptions(platformOptions, vueOptions, copyOptions) || []
|
|
platformCopyOptions.forEach(copyOption => {
|
|
if (typeof copyOption === 'string') {
|
|
copyOption = getAssetsCopyOption(copyOption)
|
|
}
|
|
copyOption && copyOptions.push(copyOption)
|
|
})
|
|
})
|
|
return copyOptions
|
|
}
|
|
|
|
module.exports = {
|
|
assetsDir,
|
|
getCopyWebpackPluginOptions
|
|
}
|
|
|