[关闭]
@chris-ren 2016-07-19T02:30:12.000000Z 字数 1933 阅读 3393

发布模块到cnpm私服

cnpm私服 发布模块


公司采用cnpmjs.org git搭建了cnpm私服,cnpmjs.org的github地址为:https://github.com/cnpm/cnpmjs.org/

利用cnpmjs.org你可以:
1、搭建一个企业的npm私有库
2、搭建一个npm的镜像
3、搭建一个完全独立于npm的仓库来存放你想存放的东西

本文介绍如何将自己编写的公共模块或需要共享的模块发布到cnpm私服上。

1.编译

在发布时,你可能不希望将源程序发布到私服上(如果你想将源程序发布到私服上,也可以不经过编译直接发布),所以在发布前需要进行编译。

编译时,我们可以通过webpack打包编译,也可以通过babel进行转译。

  1. {
  2. "scripts": {
  3. "compile": "babel -d lib/ src/"
  4. }
  5. }

编译时,需要增加入口文件,在入口文件中指定要暴露出的所有模块

  1. {
  2. "main": "lib/index.js"
  3. }

2.发布

在介绍如何发布模块之前,先介绍一下cnpm私服的配置信息,在config/index.js中需要注意的配置信息如下:

  1. // enable private mode or not
  2. // private mode: only admins can publish, other users just can sync package from source npm
  3. // public mode: all users can publish
  4. //这里定义是否启用私有模式,如果启用,则只有admins组中的用户可以发布模块;如果禁用,则所有用户都可以发布模块
  5. enablePrivate: false,
  6. // registry scopes, if don't set, means do not support scopes
  7. //注册scopes,如果不设置,意味着不支持scopes,如果需要发布私有模块必须设置scope。
  8. //这里我们增加了@vpframe的配置,在发布模块时名称前需要添加@vpframe
  9. scopes: [ '@cnpm', '@cnpmtest', '@cnpm-test','@vpframe' ],

在上面已经说明如果启用私有模式,只有admins组中的用户可以发布模块,config/index.js中admins用户配置如下:

  1. // default system admins
  2. //默认的admins有fengmk2、admin、dead_horse,这里我们增加了sysadmin的配置
  3. admins: {
  4. // name: email
  5. fengmk2: 'fengmk2@gmail.com',
  6. admin: 'admin@cnpmjs.org',
  7. dead_horse: 'dead_horse@qq.com',
  8. sysadmin: 'admin@vprisk.com',
  9. },

接下来,说明编写模块时的注意事项:

  1. {
  2. "scripts": {
  3. "prepublish": "npm run compile"
  4. }
  5. }

接下来,就可以进行发布操作了,首先通过sysadmin用户登录,命令如下:

  1. npm login
  2. username:sysadmin
  3. password:123456
  4. email:admin@vprisk.com

登录成功后,输入publish命令发布(package.json中"name"为@vpframe/vpframe-frontend):

  1. npm publish @vpframe/vpframe-frontend

上传成功后,就可以通过npm install安装上传的模块

  1. npm install @vpframe/vpframe-frontend

如果以后修改了代码,然后想要同步到 npm 上,需要修改 package.json 中的 version 然后再次 publish,更新的版本号要大于上次的版本号。

如果需要删除发布的模块,可以使用以下命令:

  1. npm unpublish test@0.1.0
  2. 或者
  3. npm unpublish --force test
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注