外部服务商合作模式下的腾讯内网包使用的解决方案。
背景
腾讯内网的 npm 源站,外部同学无法访问。 在项目架构使用了一些内网包的情况下,合作的外部服务商同学无法使用 npm 进行包的下载安装,造成协作困难。
快速开始
1、安装
全局安装:
npm install tnpm-bridge -g
局部安装:
npm install tnpm-bridge -D
2、使用 - 全局使用
请在你的项目的根目录下执行
腾讯内部同学使用
tb i --inner
或
tb i -i
【说明】
如上指令,默认安装项目 package.json 声明的所有包,并自动将 node_modules/@tencent 整个文件夹复制到项目 src/lib 目录下。
外部服务商同学使用
tb i --outer
或
tb i -o
【说明】
如上指令,默认安装
1)项目 package.json 声明的所有非腾讯内网包
2)src/lib/@tencent 中的腾讯内网包依赖的所有非腾讯内网包
并自动将 src/lib/@tencent 整个文件夹复制到 node_modules 目录下。
3、使用 - 局部使用
项目 package.json 添加:
"scripts": {
"inner": "tb i --inner",
"outer": "tb i --outer"
}
详细文档
1、支持指令
tnpm-bridge为安装包而生,仅支持 npm 的 install 与 i 指令。
tb install [options]
或
tb i [options]
2、配置文件
开发者可以在项目根目录下新建 .tnpmbridgerc.json 文件,自定义 @tencent 包的缓存位置。
例如:
{
"libPath": "src/lib/my-lib"
}
tnpm-bridge 会将 @tencent 包,整体复制到 src/config/my-lib 下,即:src/config/my-lib/@tencent。
【注】
.tnpmbridgerc.json 目前仅支持 libPath 一个字段配置。使用配置文件,便于后续能力扩展。
3、支持参数
名称 | 含义 | 取值 |
---|---|---|
-h | 获取帮助信息 | - |
-v | 获取版本号 | - |
--inner | 指明你的身份为内部同学 | - |
-i | --inner的简写 | - |
--outer | 指明你的身份为外部同学 | - |
-o | --outer的简写 | - |
--libPath | 开发者自定义的 @tencent 包缓存路径,优先级高于.tnpmbridgerc.json中的配置 | string 默认为 项目根目录/src/lib |
--configPath | .tnpmbridgerc.json配置文件存放位置 | string 默认为项目根目录(即当前执行tb指令的位置) |
--pkg | 新增单个包时,用于指明安装的 @tencent 包名称,仅在 --inner/-i 时生效 | string 如: @tencent/aegis-web-sdk |
4、更多使用 Demo
4.1 自定义 @tencent 包存放位置
tb i -i --libPath src/lib/my-lib
tnpm-bridge 会将 @tencent 包,整体复制到 src/lib/my-lib 下,即:src/lib/my-lib/@tencent。
4.2 自定义配置文件存放位置
tb i -i --configPath config/.tnpmbridgerc.json
tnpm-bridge 会去根目录下的 config/.tnpmbridgerc.json 读取配置内容。
另外,你也可以自定义配置文件名称:
tb i -i --configPath config/.my-tnpmbridgerc.json
4.3 新增 @tencent 包
tb i -i --pkg @tencent/aegis-web-sdk
tnpm-bridge 会在安装完 @tencent/aegis-web-sdk 后,自动同步到项目的 src/lib 目录下(或开发者自定义的 libPath 下)
4.4 传入 npm install 原生支持的参数
有时候,单纯的 npm install 指令,可能无法满足你的安装需求。这时,你可以像使用原生 npm install 安装一样,给 tnpm-bridge 传入你需要的参数。
例如,你想执行:
npm install --force
使用 tnpm-bridge,你只要这样做:
tb i --inner --force
或
tb i --outer --force
【说明】
在 tb i -i 或 tb i -o 后面,你可以传入任意 npm install 原生支持的参数,但注意, tb i -i 或 tb i -o 指令,是必需的,不可被置换的。例如,你不可以省略 -i 或 -o 参数,直接执行 tb i --force。
方案思路
内部同学
在内网环境下,下载 @tencent/* 内网包。 下载到 node_modules 后,将内网包同步到项目 src 目录下。
外部服务商同学
在外网环境下,使用 git 拉取回 src 下的内网包,再将内网包复制到 node_modules 下。
注意点
1、内部同学将内网包同步到 src 下后,编译打包时,注意合理处理 src 下的内网包。特别对于小程序,注意不要将 src 下的内网包打包到小程序发布包中,导致包体积过大。
2、外部同学不可再直接使用 npm install 或 yarn 的方式,进行全部包安装,因为 package.json 中含有腾讯内网包声明,直接安装会报错。单个npm包安装可正常使用。