自动部署vue项目,v-deep不生效问题记录

在使用Vue 2.6.14和@vue/cli 5.0.4进行自动部署到Docker时,发现v-deep的Sass样式在本地有效但部署后失效。经过排查,确定问题出在vue和vue-template-compiler版本不一致,由于团队成员使用yarn和npm,导致没有统一的lock文件。解决办法是在package.json中锁定vue和vue-template-compiler的版本,避免因依赖版本不同引起的问题。此外,介绍了npm包管理中不同符号(^, ~, =, *)的含义。" 122923482,12337228,中国叉车制造行业2022-2027年运营状况与前景分析,"['工业', '物流', '机械设备', '市场分析', '行业报告']
摘要由CSDN通过智能技术生成

环境: 

vue2.6.14

@vue/cli 5.0.4

在本地运行(npm run dev) v-deep是生效的,但是运维编辑脚本,自动部署到 docker时v-deep的样式都失效了

项目采用的是sass预处理, 同时cli采用的是dart-sass

"sass": "^1.34.1",
"sass-loader": "^8.0.2",

首先确认node版本与npm版本

本地node与npm

irving@IrvingdeMacBook-Pro ~ % node -v
v14.19.1
irving@IrvingdeMacBook-Pro ~ % npm -v
6.14.16
irving@IrvingdeMacBook-Pro ~ % 

docker上node与npm 版本

node -v
v14.17.1
npm -v
6.14.13

两者虽然有小区别但是同属一个大版本,应该是没有什么问题的。

最后,将sass-loader, vue,vue-template-compiler的版本都对比了一遍,发现是vue与vue-template-compiler 版本不一致导致。 因为有的同事用yarn, 有的用npm,所以没有package-lock.json 或者 yarn-lock.json。

因此在package.json中锁定vue 与 vue-template-compiler版本

原本package.json对应代码

dependencies: {
    ...
    "vue": "^2.6.14",
    ...
Vue中,使用`::v-deep`是一种深度选择器,可以用于修改组件内部的样式。然而,有时候`::v-deep`可能不起作用的原因是因为你的Vue组件版本太低。通常情况下,需要使用Vue Loader和Vue Style Loader的较新版本来支持`::v-deep`选择器。 要正确使用`::v-deep`,需要将其放在想要修改的样式前面,并使用`v-deep`修饰符。例如: ```css ::v-deep .v-text-field.v-text-field--enclosed .v-text-field__details { margin-bottom: 8px; padding: 0px !important; } ``` 如果你的Vue组件版本较低,可以尝试升级Vue Loader和Vue Style Loader到较新的版本。然而,注意不要随意更改这两个组件的版本,因为它们是相互配套的。最终,你可以根据你的项目需求和版本兼容性来选择合适的版本。 此外,还有另一种深度选择器的写法是使用`/deep/`。例如: ```css .upload-demo { /deep/ .el-upload-list__item { transition: none; } } ``` 在这个例子中,`.upload-demo`是包裹着`.el-upload-list__item`的外层元素,通过深度选择器`/deep/`选中了`.el-upload-list__item`并修改了它的样式。 总结来说,如果`::v-deep`不生效,首先要确保你的Vue组件版本较新,并且正确使用了`::v-deep`或`/deep/`的语法。如果问题仍然存在,可以尝试升级Vue Loader和Vue Style Loader的版本,或者进一步研究其他解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [uniapp vue ::v-deep失效](https://blog.csdn.net/Amnesiac666/article/details/124667273)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue深度选择器/deep/无效的解决办法](https://blog.csdn.net/weixin_38958597/article/details/117063018)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值