Javascript Vue CLI源映射到Vue组件文件的样式部分
我正在玩Vue CLI项目。我已经配置了startup project,设置了一些开发更改,如下所示: package.jsonJavascript Vue CLI源映射到Vue组件文件的样式部分,javascript,vue.js,webpack,source-maps,Javascript,Vue.js,Webpack,Source Maps,我正在玩Vue CLI项目。我已经配置了startup project,设置了一些开发更改,如下所示: package.json "dependencies": { "bootstrap": "^4.3.1", "core-js": "^3.0.1", "preload-it": "^1.2.2", "register-service-worker": "^1.6.2", "vue": "^2.6.10", "vue-router": "^3.0.
"dependencies": {
"bootstrap": "^4.3.1",
"core-js": "^3.0.1",
"preload-it": "^1.2.2",
"register-service-worker": "^1.6.2",
"vue": "^2.6.10",
"vue-router": "^3.0.3",
"vuetify": "^1.5.14",
"vuex": "^3.1.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.7.0",
"@vue/cli-plugin-pwa": "^3.7.0",
"@vue/cli-service": "^3.7.0",
"fontello-cli": "^0.4.0",
"node-sass": "^4.9.0",
"sass-loader": "^7.1.0",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.2",
"vue-cli-plugin-vuetify": "^0.5.0",
"vue-template-compiler": "^2.5.21",
"vuetify-loader": "^1.2.2"
}
vue.config.js
module.exports = {
configureWebpack: {
devtool: process.env.NODE_ENV === 'development'
? 'inline-source-map'
: false,
},
css: {
sourceMap: process.env.NODE_ENV === 'development'
}
}
module.exports = {
presets: [
[
'@vue/app',
{ useBuiltIns: 'entry' }
]
]
}
babel.config.js
module.exports = {
configureWebpack: {
devtool: process.env.NODE_ENV === 'development'
? 'inline-source-map'
: false,
},
css: {
sourceMap: process.env.NODE_ENV === 'development'
}
}
module.exports = {
presets: [
[
'@vue/app',
{ useBuiltIns: 'entry' }
]
]
}
但是到vue文件的sourcemaps仍然生成错误(到scss文件正常)
单击href至vue组件后
注:
- 中相同文件的许多版本webpack://./
- 标记中唯一的部分在源代码编辑器中可见(可能这是原因之一)
- 未使用装载的文件系统工作区中的文件
最简单的设置:
安装Vue CLI(3.7)
添加my vue.config.js(以启用源地图)
运行
npm运行服务
编辑2
与Vue CLI 3.5相同 我还使用测试项目创建了repo,但就像我写的一样,它只是带有配置的启动项目。 编辑3 Vue cli github问题
到目前为止,我还没有找到解决方案-至少使用Vue CLI。
但我找到了解决办法 但首先,整个问题不是关于Vue CLI,而是Vue loader插件IMO的问题。我这么认为是因为在使用Vue和webpack的干净设置时,我也看到了这个问题 我发现这与为Vue文件的这些部分生成的错误sourcemap有关,并且 这些零件的来源仅限于这些标记的内容。这可能就是浏览器无法将其映射到源的原因。此外,sourcemap中源文件的路径错误 我已经为修复这些源地图的webpack准备了额外的加载程序。
检查以下回购中的sm修复加载程序。
我不知道它是否解决了所有问题,但至少在我的情况下,它工作得很棒 什么工作正常:
构建
节点_ENV=开发网页
SCS内联(在vue文件中)和单独的文件中 TS/JS内联(在vue文件中)和单独的文件中
HRMNODE\u ENV=开发网页包开发服务器--hotOnly
SCS内联(在vue文件中)和单独的文件中 它还可以在不重新加载页面本身的情况下重新加载样式:D
TS/JS内联(在vue文件中)和单独的文件中
回购与工作示例:逐步解决方案:
vue.config.js
中启用css源映射:index.scss
中整理它们,并通过App.vue导入index.scss
。这将解决vue css源映射的许多问题(由Webpack、Devtools和vue cli引起),并在一定程度上简化您的工作流程。如果需要确定范围,请通过#选择器()手动确定范围node_模块
设置CSS提取,因为一旦您触摸到devtools中的任何CSS,另一个就会破坏样式:devtool:“廉价源代码映射”,
插件:process.env.NODE_env==='development'?
([new MiniCssExtractPlugin()]):[],
模块:{
规则:[
process.env.NODE_env===“开发”?
(
{
//测试:/node_模块/,
测试:/node\u modules\/.+\.scss/,
使用:[
MiniCssExtractPlugin.loader,
{
加载器:“css加载器”,
选项:{
进口装载机:2,
sourceMap:true
}
},
{
加载器:“postss加载器”,
选项:{
插件:()=>[require('autoprefixer')],
sourceMap:true
}
},
{
加载器:“sass加载器”,
选项:{sourceMap:true}
}
]
}) : {}
],
}
如果您提取所有css,您将丢失hmr(热模块重新加载=编辑时重新加载),但由于您没有在节点_模块
中真正编辑SCS,因此只能提取它们
总而言之,这修复了Devtools中所有与vue css相关的sourcemap问题,并在浏览器中启用了热编辑功能。尝试使用vue调试器chrome插件。例如,它在调试Vuex方面也非常有效。@devilsmagrade,正如您在屏幕上看到的,我已经在使用vue插件了,但还不够。我将我的vue.config更改为与您的相同,但问题并不存在。样式中的My href不是MyComponent?[sm].vue它只是
MyComponent.vue
它让我找到了完整的源代码。也许是版本?我有Vue 2.6.6和Vue clI服务3.5.0。href也将我带到树的localhost部分(不是webpack://)。我还没有研究保存更改的问题,但似乎源代码显示不完整的问题是特定于scss/sass加载程序的。我尝试了一系列替代配置和不同的开发工具(由Linus Borg建议),但我还没有尝试修复它。