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
|
})
|
}
|
}
|