ssm 项目cannot resolve package_基于vuecli3多个vue项目公用组件的微前端架构,npm publish发布到私服...

公司项目需求,一个系统包含多个子系统,子系统目前跟系统风格基本一致,也有很多公共部分,三年前做过一个类似这种的,拆分出公共项目和子项目分别维护,这也应该算是现在造的名词前端微服务的一种吧,今天把方案再次梳理下(公用模块单独打包成npm,A和B依赖这个公用模块)!

22e719c42af60828c9bc0bb6b0058380.png
登录
1272016cd231063e89db6bf43932584b.png
跳转子系统

发布包到自己的npm私服

I.npm登陆到私服

因为是私服,发布的时候需要先让npm能够登录上私服才能操作

npm login --registry = http://192.168.1.254:7979/***/

在上面命令加上--always-auth,可以记住登录用户,下次直接发布即可,

接下来依次输入用户名/密码/邮箱 这里需要注意的是,用户名和密码是私服上配置好了的,邮箱不重要,随便都行。

登录成功后是下面酱
Logged in as dev on http://192.168.1.254:7979/***/

II.上传包

npm publish --registry=http://192.168.1.254:7979/***/

注意中途不要随意切换文件夹,虽然没有出什么问题,后来想要强制删除的时候一直出错。

III.下载包

操作都是一样的

npm install 包名 --registry=http://192.168.1.254:7979/***/

因为npm私服配置原因,发布包和下载包的地址有一点差别(public关联snapshots快照)

IV.删除包

记得要加--force

最后路径那里加上自己的包名

还要给登录到npm私服的用户加上删除的权限

如果有多个版本的包,还需要加上版本号 => 包名@1.0.0

如果公司有jenkins,服务器上使用always-auth登录后,jenkins构建命令那里直接npm publish 即可

npm login --registry = http://192.168.1.254:7979/***/ --always-auth

npm 私服 使用Nexus搭建 问题汇总

运行npm任何命令都是报错 401 unauthorized,无论用管理员还是超级用户

解决:将包发布到nexus npm仓库需要设置一下 Nexus Repository Manager 的权限。否则无法登陆到我们的私服。在Security->Realms栏目里,将npm Bearer Token Realm 选入Active。

npm publish 报错put 400 bad request

报错原因:npm的镜像源管理工具nrm 使用的是npm-group 的仓库地址

解决方案:package.json 里面加上 publishConfig: {registry: 发布地址}

项目结构

将登录和跳转系统页单独抽出一个vue项目,首先在根目录中创建文件index.js,将需要导出的组件写在index.js中,内容示例如下:

import request from './src/common/request'export {  request}

公共项目中如果引用此项目下的一定要用相对路径,如果在子系统单独配置,则使用别名@,如图:

d8caa4b1a36694e9af45432bff70a4b2.png
项目的路由和权限都是子系统单独配置的

子系统使用公共系统中的路径需要现在vue.config.js中配置别名路径

chainWebpack (config) {    config.resolve.alias.set('@', resolve('src')).set('@module_**', resolve('node_modules/包名/src'))}

vue.config.js中入口文件配置

configureWebpack: config => {    config.entry.app = ['./node_modules/包名/src/main.ts'];  },

每个子系统路由的配置:

f4f56ddb7ae418ed3471bfe07843bed0.png
路由的使用

npm link的使用

开发过程中,公共系统难免会频繁改动,这时候npm link是最好的选择

首先进入公共系统

npm link

其次进入子系统

npm link 包名

将这个公共的项目通过软连接的方式引入到项目里面来了。

这时修改公共项目下面的任意代码都会实时生效,不用打包,也不用重启了。

当然,npm link的方式仅建议在功能开发的过程中使用,若公共模块基本稳定了,还是建议使用npm publish的方式,将公共包以node_module的方式引入。

结尾彩蛋

欢迎关注前端之阶公众号,获取更多前端知识,加入前端大群,与知名互联网大佬做朋友,开启共同学习新篇章!

31380749751872ca97ad6317bdb1a8af.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值