verdaccio 搭建私有仓库、脚手架构建、拉取定制化工程模板、运行web服务和rn服务、移动端打包(ipa || apk)


verdaccio 搭建本地私有仓库

因工作环境限制,某些代码是肯定不允许发布到 npm 官方仓库管理的,一切开发只能在云内进行。
搭建详细过程:使用verdaccio 搭建本地私有仓库流程
网上有许多搭建私有仓库的流程,然而对仓库中如何删除已经上传过的包(比如上传了许多不同的版本version)却很少有讲,我简单说几个重要的点:

  • 仓库内的包,可以在本地删除,但再次发布时,发布过的包的version不可再发布, (也就是说即使你删了仓库中的某包的指定版本,但是你不能再发布这个包的指定版本了。)
  • verdaccio 搭建的仓库删除包,通常删除的位置是 /root/.config/verdaccio/storage

脚手架构建

脚手架的工作大体都会包含以下几个步骤:

  • 初始化,一般都会进行环境(Node版本等)的初始化,做一些前置检查
  • 用户输入命令行,会有交互式命令提示
  • 生成配置文件(package.json or yarn.lock)
  • 生成项目结构,这通常就是使用一个指定的项目模板
  • 安装依赖
  • 清理(模板包)、校验等收尾工作

网上有那种搭建脚手架的运行框架(比如Yeoman),而我借鉴的是create-react-app这个脚手架,在经过阅读此脚手架的源码后(源码解析),并在其中加入了一些定制化的东西,比如交互式命令行可供使用者选择使用哪个模板工程,以及模板工程下的不同版本,还有可输入指定模板版本直接创建工程命令等。
若想修改create-react-app命令的名称,可修改此包下的package.json中的bin字段。

定制化模板

脚手架创建项目,拉取定制化模板工程。
一套react工程模板如何实现web服务(localhost:3000),又实现rn服务(可在手机端加载bundle服务)呢。

思考的历程:

  • 首先保证 react 工程的纯粹性,在react的模板目录结构中不能掺杂任何rn的文件内容
  • 是否可以将rn工程以依赖的形式放到node_modules中,
  • 若以上面的方式做,那么rn工程内的依赖怎么保证其只安装到rn工程目录下的node_modules中
  • 如果上面的疑问都能解决,那此模板方案也许是可行的,测试调试即可得出结论。

定制化模板.png

定制化模板(小程序)

模板关系图.png

移动端打包

移动端打包同样也是一个脚本文件,然后也是以包的方式加入到rn的工程依赖中,打包时输入命令调用写好的脚本,传入不同的参数,打ios 或者 android的包即可。