如何写一个自动发npm包的服务

453 阅读1分钟

先来聊一聊正常发布一个包到npm

  • 发布一个最简单的npm包:
  • 先去官网注册一个账号,填写好账号、密码、邮箱
  • 然后登录npm账号 npm login
  • 然后在写好的包目录下执行npm publish就能发了

我们现在要做的服务就是点击一个发布按钮就能发布一个自动生成的包

  • 登录就是就是拿到.npmrc 文件放在我们发包服务下面就好了 .npmrc 文件如下
registry=http:..../
//..../:_password=
//..../:username=
//..../:email=
//..../:always-auth=false

也可以在命令行执行 cat .npmrc 看下(记得在根目录下)

  • 登录权限有了,然后就是程序自动创建包内容了(node就是用fs模块),然后就是程序执行npm publish发包了,参考下面
const util = require('util');
const childProcess = require('child_process');
const exec = util.promisify(childProcess.exec); 
async publish() {
     // dir 就是放.npmrc的目录 publishDir包目录
    const dir = '';
    const publishDir = '';
    const cmdStr = `npm publish --userConfig=${dir}/.npmrc`;
    try {
      const content = await exec(cmdStr, { cwd: publishDir });
      console.log(content, '发布成功');
    } catch (err) {
      console.error(err, '发布失败');
    }
}
  • 发包服务就好了