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

feat: generate sourcemap

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