@chris-ren
2016-07-19T02:30:12.000000Z
字数 1933
阅读 3393
cnpm私服
发布模块
公司采用cnpmjs.org git搭建了cnpm私服,cnpmjs.org的github地址为:https://github.com/cnpm/cnpmjs.org/。
利用cnpmjs.org你可以:
1、搭建一个企业的npm私有库
2、搭建一个npm的镜像
3、搭建一个完全独立于npm的仓库来存放你想存放的东西
本文介绍如何将自己编写的公共模块或需要共享的模块发布到cnpm私服上。
在发布时,你可能不希望将源程序发布到私服上(如果你想将源程序发布到私服上,也可以不经过编译直接发布),所以在发布前需要进行编译。
编译时,我们可以通过webpack打包编译,也可以通过babel进行转译。
{
"scripts": {
"compile": "babel -d lib/ src/"
}
}
编译时,需要增加入口文件,在入口文件中指定要暴露出的所有模块
{
"main": "lib/index.js"
}
在介绍如何发布模块之前,先介绍一下cnpm私服的配置信息,在config/index.js中需要注意的配置信息如下:
// enable private mode or not
// private mode: only admins can publish, other users just can sync package from source npm
// public mode: all users can publish
//这里定义是否启用私有模式,如果启用,则只有admins组中的用户可以发布模块;如果禁用,则所有用户都可以发布模块
enablePrivate: false,
// registry scopes, if don't set, means do not support scopes
//注册scopes,如果不设置,意味着不支持scopes,如果需要发布私有模块必须设置scope。
//这里我们增加了@vpframe的配置,在发布模块时名称前需要添加@vpframe
scopes: [ '@cnpm', '@cnpmtest', '@cnpm-test','@vpframe' ],
在上面已经说明如果启用私有模式,只有admins组中的用户可以发布模块,config/index.js中admins用户配置如下:
// default system admins
//默认的admins有fengmk2、admin、dead_horse,这里我们增加了sysadmin的配置
admins: {
// name: email
fengmk2: 'fengmk2@gmail.com',
admin: 'admin@cnpmjs.org',
dead_horse: 'dead_horse@qq.com',
sysadmin: 'admin@vprisk.com',
},
接下来,说明编写模块时的注意事项:
src
package.json中"name"的值需要添加scope前缀(私有模块在发布时需要添加scope),如:
"name": "@vpframe/vpframe-frontend"
需要修改其中的"main"值为"lib/index.js"
{
"scripts": {
"prepublish": "npm run compile"
}
}
接下来,就可以进行发布操作了,首先通过sysadmin用户登录,命令如下:
npm login
username:sysadmin
password:123456
email:admin@vprisk.com
登录成功后,输入publish命令发布(package.json中"name"为@vpframe/vpframe-frontend):
npm publish @vpframe/vpframe-frontend
上传成功后,就可以通过npm install安装上传的模块
npm install @vpframe/vpframe-frontend
如果以后修改了代码,然后想要同步到 npm 上,需要修改 package.json 中的 version 然后再次 publish,更新的版本号要大于上次的版本号。
如果需要删除发布的模块,可以使用以下命令:
npm unpublish test@0.1.0
或者
npm unpublish --force test