基于Node的前后端开发中,如何简单便捷的进行包管理是一个基础的问题。现有的方案存在一定弊端,使用起来较为麻烦。详细的说明见此调研文档。
Lights提供的包管理功能不仅能够通过简单命令就完成一系列操作,同时提供了私有仓库供产品线维护私有资源。
1 使用npm安装Lights (注意已安装的请更新至0.0.86及以上版本)。npm install -g lights
2 开发阶段使用lights pack
打包资源
在项目根目录使用此命令将生成两个文件,如下所示:
|---project //项目根目录
| |---modules.zip //精简压缩后的node_modules
| |---npm-shrinkwrap.json //各个包的版本json
将这两个文件添加到svn中进行管理,注意node_modules文件夹不放入到svn中。
3 编译阶段使用lights build
重新编译生成node_modules
在编译阶段项目根目录执行lights build
命令就可以按照开发阶段的包版本和当前系统环境重新编译生成node_modules包文件。
私有包管理主要解决不方便将资源发布到npm的情况。
发布私有包
发布私有包请首先配置lights的私有仓库地址。执行lights config set repos private
即可完成设置。您也可以将private
替换成自己的lights仓库,如 http://xxx.baidu.com 等(注意后面不要带/)。
如果想将仓库切换成公有仓库,使用lights config set repos public
即可。公有仓库的地址是http://lightjs.duapp.com
配置好之后按照lights的使用方法发布即可。一般执行lights publish
即可完成发布。
使用私有包
npm默认支持从第三方获取私有资源,所以使用时只需要在package.json中配置依赖包私有地址即可。如下所示:
"dependencies": {
"modjs" : "http://fedev.baidu.com:8889/repos/download?component=modjs&version=1.0.3"
}
注意component为包名称,version为包版本。推荐私有包不写版本,这样每次获取最新版本安装。
更新公有包
使用npm-outdated
可以查看npm过期的包,选择需要更新的包修改package.json配置。然后执行npm install --no-shrinkwrap
便可以忽略当前版本配置安装指定版本。
更新私有包
如果私有包地址写了version参数,修改相应版本即可。对于私有包建议地址中不写version版本,这样每次安装最新版本。
1 执行lights pack报错npm shrinkwrap error!
npm shrinkwrap命令将根据package.json和包文件夹生成所有node模块的版本json,如果有node包未添加到package.json中就会报错,请注意排查。
2 私有仓库百度外部是否可以访问?
私有仓库默认不对外,如在家请连接vpn后再访问
3 如何发布到私有仓库?
关于lights的基础使用请查看使用文档。模块的package.json配置跟npm相同,使用lights publish即可发布。
4 找不到私有资源?
请注意发布的资源是否发布到lights对外的公有仓库去了。使用
lights config get repos
可查看当前仓库地址。私有仓库地址是http://fedev.baidu.com:8889
5 更新包资源失败?
npm默认会优先按照npm-shrinkwrap.json中的版本进行安装,如果想更新包,请执行
npm install --no-shrinkwrap
忽略当前版本配置。
使用问题及需求欢迎联系!
邮件组:oak@baidu.com
联系人:张涛(zhangtao07)、王程(wangcheng)