如何发布一个npm包

### 要点 - 新建个npm账号 - 项目初始化 - 发布 ### 什么是npm? npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率 1. 从社区的角度:把针对某一特定问题的模块发布到npm的服务器上,供社区里的其他人下载和使用,同时自己也可以在社区里寻找特定的模块的资源,解决问题 2. 从团队的角度:有了npm这个包管理工具,复用团队既有的代码也变的更加地方便 ### 新建个npm账号 在[npmjs]( https://www.npmjs.com/ "npmjs")上注册一个自己的账号。 点击创建账号注册一个自己的账号。 如果已经有自己的账号,登录即可:`npm login` #### 项目初始化 新建一个项目,cd进去,然后执行npm init来初始化项目的配置。 在执行npm init之前,有两点需要我们注意一下: #### 包名不能重复 npm对包名的限制:不能有大写字母/空格/下划线 我们首先要验证一下我们即将要起的包名是否存在。验证我们即将要起的包名是否存在的方式有两种: 去npm仓库中输入一下“我们即将要起的包名”,看是否可以查找到。 直接使用npm install 包名,如果能够下载下来,那么说明这个包名在npm仓库是存在的,也就是不可使用的。 这样提前验证一下,能够避免一些发布(npm publish)时会出现的这个错误。 #### 配置项: |配置项 |意义 |默认值 |备注| |-|-|-|-| |name |填写你这个包的名字 |默认是你这个文件夹的名字 |不过这里要着重说一下,最好先去npm上找一下有没有同名的包。最好的测试方式就是,在命令行里面输入npm install 你要取的名字,如果报错,那么很好,npm上没有跟你同名的包,你可以放心大胆地把包发布出去。如果成功下载下来了。。。那么很不幸,改名字吧。。。| |version |包的版本 |默认是1.0.0 | |description |项目描述 | | |entry point |入口文件 ||默认是Index.js 你也可以自己填写你自己的文件名| |test command |测试命令| | | |git repository |git仓库地址 | |如果你的包是先放到github上或者其他git仓库里,这时候你的文件夹里面会存在一个隐藏的.git目录,npm会读到这个目录作为这一项的默认值。如果没有的话,直接回车继续。| |keyword |||这个是一个重点,这个关系到有多少人会搜到你的npm包。尽量使用贴切的关键字作为这个包的索引。| |author |作者 ||写你的账号或者你的github账号吧| |license |执照 ||这个直接回车,开源文件来着| 然后我们回到我们的文件目录里面去看一看,发现多出来一个package.json文件。 { "name": "senmeng-header", "version": "1.0.0", "description": "header", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [ "header" ], "author": "senmeng", "license": "ISC", "homepage": "http://www.web3.xin/" } #### 写项目 首先入口文件是index.js。 !function () { console.log(`这是引入的包入口`) }() 然后写个readme.md文件。一般这个readme.md文件都是该项目的一些说明,比如可以放一些项目的启动命令、构建命名等等。 > CommonJS标准 我们看到上面代码中使用CommonJS标准。一个单独的文件就是一个模块,模块内将需要对外暴露的变量放到exports对象里,可以是任意对象,函数,数组等,未放到exports对象里的都是私有的。用require方法加载模块,即读取模块文件获得exports对象。这里出现的module,exports,require是JS的新语法吗?不是新语法,只是CommonJS的语法糖。 > 路径的引用: var Hi = require('./hi');这种是用require加载时写的是相对路径,让Nodejs去指定路径下加载模块。如果省略相对路径,默认就会在node_modules文件夹下找hi模块,那很可能因为找不到而报错。 ### 发布 #### 添加账户 使用npm adduser命令来添加npm的账户名、密码和邮箱即可 #### 发布 就可以执行`npm publish`命令进行发布啦。下面就是见证奇迹的时刻啦,出现截图中的样子就是发布成功啦。 #### 更新npm发布后的包 更新npm包也是使用npm publish命令发布,不过必须更改npm包的版本号,也就是package.json中的version字段,否则会报错 #### npm的版本控制 在我们的package.json里面有一个version字段。那么,怎么在项目不断构建的过程中调整版本呢? npm有一套自己的版本控制标准——Semantic versioning(语义化版本) ##### 具体体现为: 版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 例如:我原本的项目是1.0.0版本的话 若是1中情况,变为1.0.1 若是2中情况,变为1.1.0 若是3中情况,变为2.0.0 通过npm version 自动改变版本 update_type为patch, minor, or major其中之一,分别表示补丁,小改,大改。
联系我们

邮箱 626512443@qq.com
电话 18611320371
QQ 626512443
QQ群 235681453

Copyright © 2015-2019

备案号:京ICP备15003423号-3