大纲
1、准备
2、自定义npm包
3、发布自定义npm包
4、引用npm包
5、更新npm包
6、撤销发布的npm包
博客原文
1、准备
1.1、注册npm用户
1.2、安装nodeJs
1.3、编辑器
我使用的是编辑器vscode进行操作的,读者也可以打开控制台进入到对应目录中进行操作
2、创建自己的npm包
2.1、创建一个空的文件夹,进入
2.2、创建一个默认的npm包
在当前文件夹中执行控制台命令:npm init
1、执行npm init之后需要一步一步的填写对应信息,这些信息也就是你的npm的信息,在生成的package.json中会自动填入(如下图)
2、可以执行npm init -y, 这样就会帮你创建一个默认配置的package.json而不需要自己一步步配置
package.json如下:
{
"name": "javascript-tool-class",
"version": "1.0.15",
"description": "将常用js工具整合成一个class类",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "zhengzemin",
"license": "ISC",
"keywords": [
"js",
"tool"
]
}
2.3、创建一个index.js文件作为包入口文件(我们在package.json下的main写了入口文件index.js)
当然这是默认的入口文件,如果有其他想法的话,完全可以在package.json中进行修改。
2.4、改进index.js
当然我们不可能就为了打印一个日志而创建一个npm包,我们需要可以引入这个npm包并调用这个包中的一些方法,因此我们队这个npm包中的index.js中的内容进行完善一些。
index.js文件如下:
class JsTool{ constructor(name){this.name = name;}test(){console.log('hello'); }
}
export {JsTool}
3、发布npm包
3.1、登录npm(添加用户)
添加npm用户,或者说登录你的npm账号
执行: npm adduser
然后会提示你输入你的用户名和密码以及邮箱,如果输入正确会提示你成功登录
提示:Logged in as dignity_(你的用户名) on https://registry.npmjs.org/.显示此作为成功登录的标准
注意在adduser登录的时候,需要进入npm官网确认下邮箱,否则publish发布会报错
3.2、npm publish
当你成功登录之后,就可以发布你的npm包了。
执行: npm publish
3.3、注意:
3.3.1 可能你在publish的时候会出现如下错误
那么可能性有两个:
1、你没有执行npm adduser进行登录
2、可能你的包名重复了。
这时最简单的方法是改包名,加上一个特殊的标志即可,改包名只需要对package.json中的name进行修改即可。(改好之后再次执行npm publish就成功了)
3.3.2 再可能publish的时候会出现如下错误
1. 报错意思说:'javascript-tool-class' is not in the npm registry.,也就是我当前的镜像不是npmjs.org,看上面3.1的,登录的时候镜像是Logged in as dignity_(你的用户名) on https://registry.npmjs.org/.,我当前是taobao.org,所以要设为npmjs
2.设为npmjs镜像: npm config set registry https://registry.npmjs.org/
3.3.3 设为npmjs镜像后,这个错误解决了,重新npm publish,又报了另外一个错误
1. 报错的原因:权限的问题,所以需要以最高权限清除下缓存,npm执行:npm cache clean --force
2.清除完缓存后,不能马上执行npm publish,因为缓存都被清除了,所以刚刚登录的npm adduser信息也就没了,需要先执行npm adduser登录,后执行npm publish发布即可成功。
4、引用npm包
4.1、下载依赖包
执行:npm install -save-dev javascript-tool-class
4.2、调用npm包中的文件
通过import来调用文件从而引用npm包中的方法
一开始import的时候写:import {JsTool,Hello} from 'javascript-tool-class',
结果npm run dev报错:This dependency was not found,提示我需要安装javascript-tool-class,
但是我已经安装了,所以应该是引入的问题,后面写成下面的路径就正常使用。
import {JsTool,Hello} from 'javascript-tool-class/src/index.js' //模块化导入时,需注意JsTool是类,所以需要大写,否则会报错
let tool = new JsTool()
console.log(tool.test()) //hello
5、更新npm包
5.1、更改版本号
最简单方式无非就是改package.json关于版本
或者可以执行命令: npm version 1.0.1 同样可以起到作用
5.2、更新版本——发布版本
更新npm包同样是执行npm publish即可,
可以看到publish的包已经更新了
5.3、更新依赖包
同样是执行: npm install -save-dev javascript-tool-class
这样会更新最新的包到node_module中
当然可能由于各种原因导致你更新的包还没有在npm上更新或者说你更新下来的依旧是旧的包。
6、撤销发布的npm包
我们现在发布的这个npm包只是测试用的或者只是用作其他作用而不是要发布到网上真的使用的,最好还是撤销下来(超过24小时后就无法撤销)。
执行命令: npm --force unpublish javascript-tool-class
撤销npm包之后,再去官网上看已是404了
需要注意的是:
1、如果在24小时内确实要撤销npm包需要加上 --force强制执行才可以实现(--force最高权限);即使撤销了发布的包,再次发布的时候也不能与之前被撤销的包的名称/版本其中之一相同,因为这两者构成的唯一性已经被占用,官方并没有随着撤销而删除
2、撤销的包不能立马再次发布