npm发布包,验证包的各种问题

首先

你得有一个npm官网的账号,没有账号什么都做不了,这里留一个传送链接 https://www.npmjs.com/signup

最简单的npm包

最简单的npm包只需要有两个文件,入口文件 + package.json。

其中package.json文件的生成默认使用命令

npm init

一路使用默认配置按回车就可以生成大致如下的文件

{
  "name": "npm-test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

其中的main字段就是我们的入口文件路径,npm init命令默认是index.js。

这就是一个最简单的npm包了。

发布npm包

发布npm包也很简单,只需要记住两条命令即可。

npm login
npm publish

命令一看就明白,一个是登录,一个是发布。

在我们上面包路径根目录打开一个cmd/dos窗口使用上面两条命令即可。

期间可能会出现网络不通、登录失败、npm包名被占用、入口文件找不到等问题,大家都很聪明,就自行解决吧。

npm包发布前的验证

很多时候在发布之前想要确定自己发布的包是什么样子的,可不可用。这里我也提供两条命令给大家。

第一条命令:本地安装命令

npm install ./your-local-module-dir

这命令的意思就是安装你本地某个npm包至当前目录。它会生成一个软链接到你的node_modules目录。

这样的好处在于,你可以使用node的窗口模式直接使用代码来验证你的模块,比如:

var mod = require('your-module');
mod.todoSomething();

第二条命令:打包命令

npm pack

这条命令的作用是将模块的文件打包为一个压缩包,压缩包里面的内容跟其他用户通过npm install安装你的模块里的内容一模一样。

这样,你就能清楚的知道,其他人安装你的npm包后,包里的内容到底有哪些,可以说是相当方便了。

package.json中字段说明

如下是我一个npm包的配置文件,加入了注解,供大家参考,发包时这些注解是不能存在的

{
  // 模块名,新发布包时npm系统会验证唯一性
  "name": "ycc-engine",
  // 版本号,每次publish的时候必须变更
  "version": "0.0.2",
  // 模块的描述文字,会显示在搜索列表内
  "description": "Mini and powerful canvas engine for creating App or Game.",
  // 模块的入口文件
  "main": "./build/ycc.min.js",
  "scripts": {
    "start": "grunt",
    "build": "grunt build",
    "build:game_super_mario":"grunt build:game_super_mario",
    "doc": "grunt jsdoc",
    "clean": "grunt clean",
    "min": "grunt uglify",
    "concat": "grunt concat",
    "release": "grunt release",
    "example": "start http://localhost:7777/examples/index.html & http-server -p 7777"
  },
  // 模块的版本库
  "repository": {
    "type": "git",
    "url": "https://github.com/lizhiqianduan/ycc.git"
  },
  // 作者
  "author": "xiaohei",
  // 开源协议
  "license": "ISC",
  // 模块关键字,会显示在首页最下边
  "keywords": [
    "ycc",
    "engine",
    "canvas"
  ],
  // 模块bug
  "bugs": {
    "url": "https://github.com/lizhiqianduan/ycc/issues"
  },
  // 项目首页
  "homepage": "https://github.com/lizhiqianduan/ycc",
  // 开发时的依赖包
  "devDependencies": {}
}

总结

发布一个npm包实际上不是很难,而要维护各个版本功能可用,各种文档的编写,各种版本示例的迭代升级等等,这些才是最折磨人的事情。

最后,附一个我写的框架npm包地址,上面的package.json就出自这个包,有需要canvas的地方可以下载使用:https://www.npmjs.com/package/ycc-engine



打赏作者

发表评论

电子邮件地址不会被公开。 必填项已用*标注