@dcloudio/uni-cli-shared
Version:
uni-cli-shared
63 lines (56 loc) • 1.57 kB
JavaScript
const path = require('path')
const webpack = require('webpack')
const {
normalizePath,
pathToRegexp,
isInHBuilderX
} = require('@dcloudio/uni-cli-shared/lib/util')
let sourceRoot = false
function getSourceRoot () {
if (!sourceRoot) {
if (isInHBuilderX) {
sourceRoot = normalizePath(process.env.UNI_INPUT_DIR)
} else {
sourceRoot = normalizePath(process.env.UNI_CLI_CONTEXT)
}
}
return sourceRoot
}
function moduleFilenameTemplate (info) {
if (
info.resourcePath &&
(
!info.allLoaders ||
info.query.includes('type=script&lang=ts') ||
info.resourcePath.endsWith('.ts')
)
) {
const filepath = normalizePath(path.relative(getSourceRoot(), info.absoluteResourcePath))
if (filepath.indexOf('../') === 0) {
return
}
return `uni-app:///${filepath}`
}
}
const exclude = [/pages\.json/, /node_modules/, /vue&type=template/, /vue&type=style/]
module.exports = {
createSourceMapDevToolPlugin (filename = false, args) {
const options = {
test: [/\.js$/],
exclude,
moduleFilenameTemplate,
...args
}
if (filename) {
options.filename = '../.sourcemap/' + process.env.UNI_PLATFORM + '/[file].map'
}
return new webpack.SourceMapDevToolPlugin(options)
},
createEvalSourceMapDevToolPlugin () {
return new webpack.EvalSourceMapDevToolPlugin({
test: pathToRegexp(process.env.UNI_INPUT_DIR, { start: true }),
exclude,
moduleFilenameTemplate
})
}
}