|
|
|
|
|
|
|
function isDepIncluded(dep, optimizeDepsInclude) { |
|
return optimizeDepsInclude.some((id) => parseIncludeStr(id) === dep) |
|
} |
|
|
|
|
|
function isDepExcluded(dep, optimizeDepsExclude) { |
|
dep = parseIncludeStr(dep) |
|
return optimizeDepsExclude.some( |
|
(id) => id === dep || dep.startsWith(`${id}/`) |
|
) |
|
} |
|
|
|
|
|
function isDepNoExternaled(dep, ssrNoExternal) { |
|
if (ssrNoExternal === true) { |
|
return true |
|
} else { |
|
return isMatch(dep, ssrNoExternal) |
|
} |
|
} |
|
|
|
|
|
function isDepExternaled(dep, ssrExternal) { |
|
return ssrExternal.includes(dep) |
|
} |
|
|
|
|
|
|
|
|
|
function parseIncludeStr(raw) { |
|
const lastArrow = raw.lastIndexOf('>') |
|
return lastArrow === -1 ? raw : raw.slice(lastArrow + 1).trim() |
|
} |
|
|
|
|
|
|
|
|
|
|
|
function isMatch(target, pattern) { |
|
if (Array.isArray(pattern)) { |
|
return pattern.some((p) => isMatch(target, p)) |
|
} else if (typeof pattern === 'string') { |
|
return target === pattern |
|
} else if (pattern instanceof RegExp) { |
|
return pattern.test(target) |
|
} |
|
} |
|
|
|
module.exports = { |
|
isDepIncluded, |
|
isDepExcluded, |
|
isDepNoExternaled, |
|
isDepExternaled |
|
} |
|
|