# npm 发布自己的包

  • 注册 npm 账号:https://www.npmjs.com/
    • 选择 sign up
  • npm init 修改 package.json , 例如这样:
{
  "name": "test-exec-generator",
  "version": "1.0.0",
  "description": "a test generator",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "nekoaimer",
  "license": "MIT", 
  "repository": {  
    "type": "git",
    "url": "https://github.com/nekoaimer"
  },
  "homepage": "https://github.com/nekoaimer", 
  "keywords": [ 
    "nekoaimer",
    "generator"
  ]
}
  • 在命令行登录: npm login ,会出现下面信息

    Username: // 用户名
    Password: // 密码
    Email: (this IS public) // 注册的邮箱
    • 然后第一次可能还会在您的邮发送一次验证码,输入验证码后可以进行发布啦~

    npm-publish

  • 发布到 npm registry 上 npm publish ,进行测试我随便发布一段用于异步演化的代码 (可取去官网账号查看是否发布成功)~

// 封装了一个自动执行的函数
export default function execGenerator(genFn) {
  const generator = genFn()
  function exec(res) {
    const result = generator.next(res)
    if (result.done) return result.value
    result.value.then(res => exec(res))
  }
  exec()
}

# 更新仓库

  • 加入您更新了代码重新发布时不可直接 npm publish , 否则会报类似下面的错npm-publish-err
  • 需要进行操作
    • 修改版本号 (最好符合 semver 规范)
    • 重新发布
{
  "name": "exec-generator",
  "version": "1.1.1", // 这里修改了版本号
  "description": "a test execGenerator",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "nekoaimer",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/nekoaimer"
  },
  "homepage": "https://github.com/nekoaimer",
  "keywords": [
    "nekoaimer",
    "generator",
    "utils"
  ],
  "dependencies": {
    "exec-generator": "^1.0.0"
  }
}
  • 修改了版本号之后执行 npm publish , 出现类似下面这种说明更新发布成功啦~

npm-publish2

# 使用自己的包

  • 先初始化 npm init

  • 再进行安装 npm install est-exec-generator ,就是下面的这样

// package.json
{
  "name": "test-exec-generator",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "dependencies": {
    "test-exec-generator": "^1.1.0"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  • 然后此时我安装好的目录的亚子

npm-install-execGenerator

  • 进行引入,最后成功使用
import execGenerator from './node_modules/test-exec-generator/index.js'
// 网络请求
function requsetDate(url) {
  return new Promise(resolve => setTimeout(() => resolve(url), 2000))
}
//generator 方式代码清晰明了
function* getData() {
  const res1 = yield requsetDate('https://neko')
  const res2 = yield requsetDate(res1 + 'aimer')
  const res3 = yield requsetDate(res2 + '.com')
  console.log(res3) // 8s -> https://nekoaimer.com
}
execGenerator(getData)

# 删除发布的包

npm unpublish --force xxx

# 让发布的包过期

npm deprecate xxx