提交 43399b72 编写于 作者: D DCloud_LXH

feat: generate sourcemap

上级 9a97f289
......@@ -28,11 +28,11 @@ function getSourceRoot () {
}
function moduleFilenameTemplate (info) {
if (
if (
info.resourcePath &&
(
!info.allLoaders ||
info.query.includes('type=script&lang=ts') ||
info.query.includes('type=script&lang=ts') ||
info.resourcePath.endsWith('.ts')
)
) {
......@@ -46,14 +46,15 @@ function moduleFilenameTemplate (info) {
const exclude = [/pages\.json/, /node_modules/, /vue&type=template/, /vue&type=style/]
module.exports = {
createSourceMapDevToolPlugin (filename = false) {
createSourceMapDevToolPlugin (filename = false, args) {
const options = {
test: [/\.js$/],
exclude,
moduleFilenameTemplate
moduleFilenameTemplate,
...args
}
if (filename) {
options.filename = '../.sourcemap/' + process.env.UNI_PLATFORM + '/[name].js.map'
options.filename = '../.sourcemap/' + process.env.UNI_PLATFORM + '/[file].map'
}
return new webpack.SourceMapDevToolPlugin(options)
},
......@@ -64,4 +65,4 @@ module.exports = {
moduleFilenameTemplate
})
}
}
}
......@@ -35,7 +35,8 @@ module.exports = (api, options) => {
'--auto-port': 'specify automator port',
'--subpackage': 'specify subpackage',
'--plugin': 'specify mp plugin',
'--manifest': 'build manifest.json'
'--manifest': 'build manifest.json',
'--sourcemap': 'generate sourcemap'
}
}, async (args) => {
for (const key in defaults) {
......@@ -72,6 +73,8 @@ module.exports = (api, options) => {
process.env.VUE_CLI_BUILD_TARGET = args.target
if (args['sourcemap']) process.env.SOURCEMAP = args['sourcemap']
await build(args, api, options)
delete process.env.VUE_CLI_BUILD_TARGET
......
......@@ -33,7 +33,8 @@ module.exports = function custom (argv) {
minimize: process.env.UNI_MINIMIZE === 'true',
clean: false,
subpackage: argv.subpackage,
plugin: argv.plugin
plugin: argv.plugin,
sourcemap: argv['sourcemap'],
}).catch(err => {
console.error(err)
process.exit(1)
......
......@@ -267,7 +267,7 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt
})
}
if (process.env.NODE_ENV === 'development') {
if (process.env.NODE_ENV === 'development' || (process.env.NODE_ENV === 'production' && process.env.SOURCEMAP === 'true')) {
const sourceMap = require('@dcloudio/uni-cli-shared/lib/source-map')
let isAppService = false
if (
......@@ -277,18 +277,32 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt
) {
isAppService = !!vueOptions.pluginOptions['uni-app-plus'].service
}
if (process.env.UNI_PLATFORM === 'h5' || isAppService) {
plugins.push(sourceMap.createEvalSourceMapDevToolPlugin())
} else if (
process.env.UNI_PLATFORM.indexOf('mp-') === 0 &&
const useEvalSourceMap = process.env.UNI_PLATFORM === 'h5' || isAppService
const useSourceMap = process.env.UNI_PLATFORM.indexOf('mp-') === 0 &&
process.env.UNI_PLATFORM !== 'mp-baidu' &&
process.env.UNI_PLATFORM !== 'mp-alipay' &&
process.env.UNI_PLATFORM !== 'quickapp-webview' // 目前 ov 的开发工具支持 eval 模式
) {
plugins.push(sourceMap.createSourceMapDevToolPlugin(process.env.UNI_PLATFORM === 'mp-weixin' || process.env.UNI_PLATFORM === 'mp-toutiao'))
if (process.env.NODE_ENV === 'production') {
const sourceMapOptions = {
noSources: true,
append: false
}
if (isInHBuilderX && process.env.SOURCEMAP_PATH)
sourceMapOptions.filename = process.env.SOURCEMAP_PATH
if (useEvalSourceMap || useSourceMap) {
plugins.push(sourceMap.createSourceMapDevToolPlugin(!sourceMapOptions.filename, sourceMapOptions))
}
} else {
if (useEvalSourceMap) {
plugins.push(sourceMap.createEvalSourceMapDevToolPlugin())
} else if (useSourceMap) {
plugins.push(sourceMap.createSourceMapDevToolPlugin(process.env.UNI_PLATFORM === 'mp-weixin' || process.env.UNI_PLATFORM === 'mp-toutiao'))
}
}
}
try {
if (process.env.UNI_HBUILDERX_PLUGINS) {
require(path.resolve(process.env.UNI_HBUILDERX_PLUGINS, 'uni_helpers/lib/bytenode'))
......@@ -351,4 +365,4 @@ module.exports = function configureWebpack (platformOptions, manifestPlatformOpt
watchOptions: require('./util').getWatchOptions()
}, platformWebpackConfig)
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册