Npm
npm是javascript著名的包管理工具,是前端模块化下的一个标志性产物. 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率
如何发布一个自己的npm包
1、创建一个npm的账号
发布包之前你必须要注册一个npm的账号
2、基础的发布方式
-
创建一个文件夹
-
npm init
-
package name : 包名 version: 版本号 description : 该包得简介 entry point: 入口文件,默认是index.js,可自定义 text command: 测试命令 git repository: git 仓库地址 keyword: 搜索关键字 author: 账号 license: 这个直接回车, 协议啥的 也可以一路回车然后再去生成得package.json编辑即可然后, 比较重要的,写好README.md ,写一个好的说明书吧, 别人知道你这个包能快速得解决什么问题才是最重要的, 建议中文一套,英文一套。
第一次得发包(非第一次可以忽略)
npm adduser 提示输入账号密码邮箱
非第一次:npm login
如果项目里部分私密代码不想发布到npm上面,可以写入gitignore或者npmignore中,上传就会被忽略, 同时存在gitignore和npmignore的场景下,生效的只有npmignore。如果不需要单独维护,只需要编辑gitignore即可。
然后再npm publish 第一次直接就推上去了, 后面更新包再推记得改版本号,已经发过的版本是不允许更改的。
-
删除包
取消发布包可能并不像你想象得那么容易,这种操作是受到诸多限制的,撤销发布的包被认为是一种不好的行为 (试想一下你撤销了发布的包[假设它已经在社区内有了一定程度的影响],这对那些已经深度使用并依赖你发布的包的团队是件多么崩溃的事情!)
- 首先如果就是想要删除当前的这个版本,执行命令npm unpublish xxx(包名),去官网查看发现已经没有这个包了,如果权限不够加上 --force
- 使用命令npm unpublish xxx@1.1.1(包名@版本名)删除指定版本
- 根据规范,只有在发包的24小时内才允许撤销发布的包( unpublish is only allowed with versions published in the last 24 hours),需要我们发邮件给官方来删除
- 即使你撤销了发布的包,发包的时候也不能再和被撤销的包的名称和版本重复了(即不能名称相同,版本相同,因为这两者构成的唯一标识已经被“占用”了)
-
注意事项
-
在npm 上包名不允许重复,发包前可以去社区搜一搜有没有相同名称的包。且包名不能有大写字母/空格/下划线!
-
查看当前用户 npm whoami
-
不过撤包推荐用法: npm unpublish的推荐替代命令:npm deprecate [@] 使用这个命令,并不会在社区里撤销你已有的包,但会在任何人尝试安装这个包的时候得到警告 例如:npm deprecate z-tool '这个包我已经不再维护了哟~'
【注意】如果报权限方面的错,加上--force
-
私服搭建
什么是私服
npm私服并不是说我们在本地搭一个跟官方一样的数据库然后把npm现有的包全拷下来, 可以理解为跟淘宝镜像等一样的镜像地址.
1. 下载共有依赖会缓存到私服中,之后会变快
下载公共依赖<----> 个人依赖私服<-------->npm
上传个人依赖包 ------>个人依赖私服
下载私有依赖 <--------个人依赖私服
2.npm 私服的选择与搭建
市面上npm私服种类不多,但是也有多种选择, 早期的私服搭建过于繁琐, 直到有大佬造出开箱即用的轮子verdaccio.
为啥咱们选这个:
-
付费方案
- Myget , 65块一个月, 且只有两个账号和1G的存储空间
- NPM Org , 官方的私服,每个账号50 块钱一个月
-
免费选择
- DIY NPM
- Git , 再package.json中指定git仓库的URL即可,但是这种做法有些别扭,第二就是当git仓库被私有化之后,你需要配置HTTPS或者SSH凭据,容易混乱.
- Sinopia
- Cnpmjs.org
付费的咱们就不考虑, 而且我看大多数反馈也差不了多少, 能白嫖为什么不白嫖呢, 咱们就用大佬的轮子, Sinopia 就是verdaccio的前身, 但是停止维护了, 后面又有人另开了一个分支去维护, 就是verdaccio 现在github已经有7000+了, 还是蛮靠谱的, 查看一些文档别人也是比较推荐这个, 相对于cnpm搭建的话, 少了安装配置mysql这一步, 就少走了一些坑.
3.verdaccio安装和使用
verdaccio是一个简单的额,零配置的本地私有npm软件包代理注册表,开箱即用,拥有自己的小型数据库,能够代理其他注册表, 缓存下载的模块, 此外verdaccio还易于扩展存储功能, 它支持各种社区制作的插件 , 以链接到亚马逊的s3, 谷歌云存储等服务 或创建自己的插件
公网部署ip: 114.132.164.93:4873
本地部署玩玩:
- 全局安装
npm i verdaccio -g - 启动服务
verdaccio - 启动后查看服务日志
- 注册账号 npm adduser