前端问题

码匠君大约 3 分钟

前端问题

暂时不要升级的依赖包

依赖包当前使用版本最新版本说明
compression-webpack-plugin6.1.1> 9.2.0目前不要升级该包,该包依赖高版本Webpack,在当前版本不兼容,待升级至Vue3 才可以考虑升级。
css-loader5.2.7> 6.3.0目前不要升级该包,编译时会抛错误
rollup-plugin-vue5.1.9> 6.0.0目前不要升级该包,该包依赖高版本组件,在当前版本不兼容,待升级至Vue3 才可以考虑升级。长时间未更新,升级至 Vue3 可能就不再需要使用该组件
sass1.32.8> 1.47.0目前不要升级该包,会出现很多样式除法过期的提示,需要等到Vuetify大版本升级后再考虑
sass-loader10.1.1> 12.4.0目前不要升级该包,最新版本很多包还有没有适配
typescript4.2.3> 4.5.4目前不要升级该包,系统当前使用typescript-ioc组件进行服务注入,该组件已不再维护,在typescript >4.2.3版本中无法正确注入。 待升级至 Vue3 以后,使用composition api,就不再使用ioc注入模式
vue-chartist2.3.1= 3.0.0目前不要升级该包,基于Vue3的版本,当前版本不兼容
webpack4.46.0> 5.40.0目前不要升级该包,compression-webpack-plugin会抛错误
vuex-module-decorators1.0.1= 2.0.0目前不要升级该包,基于Vue3的版本,当前版本不兼容

问题一:升级依赖包时出错

使用yarn upgrade-interactive --latest命令升级依赖包的时候,特别是@hecate/form-service 中,有依赖包可以升级时(目测是由于使用了 Nuxt),经常会出现下面的错误。

Invariant Violation: expected workspace package to exist for "autoprefixer"
    at invariant (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:2314:15)
    at _loop2 (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:94537:9)
    at PackageHoister.init (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:94596:19)
    at PackageLinker.getFlatHoistedTree (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:48744:20)
    at PackageLinker.<anonymous> (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:48755:27)
    at Generator.next (<anonymous>)
    at step (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:310:30)
    at D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:328:14
    at new Promise (<anonymous>)
    at new F (D:\LocalCaches\yarn\global\node_modules\yarn\lib\cli.js:5301:28)

这个问题是 yarn 本身的 Bug,虽然 yarn 已经升级到了 1.22.10,但是一会好一会不好的。

(1)解决办法一

在工程中将 yarn 的版本,降到 1.19.XX。这种方法,只对本工程有效,这样其它工程仍旧可以使用最新版的 yarn,避免了全局安装低版本 yarn 的问题

yarn policies set-version 1.19.XX

// .yarn 目录生成后,执行
yarn install

这个命令会在工程中生成一个.yarn 目录以及一个.yarnrc 文件,并在其中指定 yarn 版本。

(2)解决办法二

这种办法土一点,但是可以不用去理会 yarn 的不管问题。

// 1,先查询看看那些包可以升级
yarn upgrade-interactive --latest

// 2,到指定的包的package.json中,手工修改版本号

// 3,清除组件包的依赖
lerna clean

// 4,重新关联依赖
lerna bootstrap

或

yarn install

问题二:运行命令是出现禁止脚本运行的错误

解决方法:打开 PowerShell(在小娜里搜就行),输入:

set-executionpolicy remotesigned

之后选择 Y,问题就解决了。