基于lerna 的 应用商店npm模块管理 https://lernajs.io/#command-publish
# 为所有模块执行 npm install
npm run install
# 为所有模块执行 npm update
npm run update
# lerna bootstrap 建立软链
npm run bootstrap
# 为所有模块执行 npm run build
npm run build
# 罗列所有模块
npm run ls
# 清空所有模块的 dependencies 同事清除软链
npm run clean
# 列出已更新,需要发布的模块
npm run updated
# 发不需要发布的模块
npm run publish
# npm 包权限添加
npm run ownerAdd # 给小组同事添加所有包的权限 小组同事 写在 ownerAdd.js 中
npm run ownerAdd ajax # 给小组同事添加 @mi/ajax 包的权限
# lerna 用小米的源安装会报错
nrm use taobao
npm install
# 设置一些指定镜像的源,以免下载失败
npm config set sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
npm config set phantomjs_cdnurl=https://npm.taobao.org/mirrors/phantomjs/
npm config set electron_mirror=https://npm.taobao.org/mirrors/electron/
# 切回小米源
nrm use mi
# 安装每个模块的依赖,第一次比较久
npm run subinstall
# lerna
npm run bootstrap
# 添加小米npm账户
npm adduser
-
git pull --rebase=true
更新代码 - packages文件夹下新建/修改模块
-
npm run bootstrap
没有新建模块不用 - code review;
git commit
提交修改 -
git push
提交代码到远端 -
npm run publish
发布版本,发布版本前,确认在master分支,切与远端同步
ps: 发版可以找weijianli@xiaomi.com
最初copy了 Mi-Modules/appstore_space下的项目模块, 后续需要跟进包代码,有一个copy.js,会copy Mi-Modules/appstore_space目录下逐个项目的src文件夹到本项目的对应模块项目
- packages 里的每一个包 都可以执行
npm run build
, 作为统一构建 - 发布之前
npm run publish
, 要求 子包都达到可发布状态 - 从 Mi-Mdules copy 包过来,确保 copy了最新src, 有个copy.js 可以协助处理
发布之前确保自己本地代码与git远端代码一致,
以免本地代码不是最新的,导致 本地代码可能以npm 最新包不一致,又发一个新的版本,
-
git pull --rebase=true
更新代码 或者是git rebase master
保证各个包的版本号是最新的
# 发布测试包
npm version prerelease
npm publish --tag next
# 安装测试包
npm install <@mi/包名>@next --save
使用 yeoman 生成新模块项目
# 安装yo
npm install -g yo
# link 自己的 generator
cd generators/generator-es6-webpack-module
npm link
初始化模块
mkdir -p packages/xx-module-name
cd packages/xx-module-name
yo es6-webpack-module