前言
有时候工作需要写一些特定的方法,或者插件来解决相关的问题,例如引入其他人的UI组件库没有自己想要的动画,或相关的效果,这个时候我们往往会自己写方法,但为了方便其他人使用,比起上传到github,这个时候上传到npm显然更加方便管理。
第一步:下载nodeJS并注册npm账号
运行必须建立在系统以及安装了nodejs的前提之下,下载地址:http://nodejs.cn/download/,然后需要在npm的官网注册一个账号,地址:https://www.npmjs.com/,注意国内注册成功之后会收到一封确认邮件,点击进去确认,但npm官网会有延迟,因此上面会一直出现提示你激活邮箱的文字,这个时候可以先不用管它的提示,但过了几个小时还是一直提示,此时可以换一个邮箱绑定来解决。
第二步:登录
控制台输入:npm login,然后再依次输入账号密码邮箱;
注意:如果此时报错code E409,那么输入 npm config set registry=http://registry.npmjs.org 把npm仓库从淘宝镜像库重新指向回npm。
第三步:创建需要上传的项目(插件)
1. 进入文件之后 npm init 初始化文件;
2. 填写相关信息:
package name: 包的名称
version: 版本号
description: 包的描述
entry point: 入口文件,默认是index.js
test command: 测试命令,可以不填直接回车
git repository: 提供git个人仓库,可以不填,直接回车
keywords: testplugin (项目的关键词,npm搜索关键词)
author: 作者名称
license: (ISC) 包遵循的开源协议,默认是ISC
例如:
{ "name": "my-meteor2", "version": "1.0.2", "description": "测试案例,请勿下载", "main": "index.js", "bin": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git+https://github.com/13632756286/meteor" }, "keywords": [ "music", "player", "vue", "calamus" ], "author": "calamus", "license": "MIT", "bugs": { "url": "https://github.com/13632756286/meteor" }, "homepage": "https://github.com/13632756286/meteor", "_from": "meteor" }
最后yes确认之后,会多出一个package.json文件,就是我们刚才填的项目信息。
第四步:创建index.js(就是我们刚刚指定的入口文件)
利用 module.exports 或简写成 exports 进行导出方法或属性
exports.isValid = (s)=>{ let arr = []; s = s.split(''); for( var v of s){ if(v === ' ') continue; else if(v === '(') arr.push(')'); else if(v === '{') arr.push('}'); else if(v === '[') arr.push(']'); else if(arr.length === 0 || arr.pop() !== v) return false; } return arr.length === 0 ? true : false; } exports.speak = ()=> { return console.log('Hello World'); } exports.name = "Rechard";
第五步:发布
控制台输入:npm publish 发布至npm即可,我们可以在官网 https://www.npmjs.com/ 搜索,但是刚发布会有延迟,可能出现搜索不到的情况,建议直接在自己的包里面查看
注意:每次发布新版本在version那边版本号都得叠加更新,例如"version": "1.0.0",下次就要改为"1.0.1"。
第六步:下载包
在需要下载的项目中,或自己创建一个新的文件夹,然后npm init 初始化之后,在npm install 包名(例如我的my-meteor2)就可以下载了。
最后只要require引入,我们就可以使用之前定义的方法了,是不是感觉逼格高了很多?O(∩_∩)O哈哈~
报错原因总结
报E401--未登陆,重新npm login登陆即可。
报E403
npm ERR! you do not have permission to publish “your module name”. Are you logged in as the correct user? -- 包名已经被占用,建议先到官网 https://www.npmjs.com/ 搜索包名,如果包名没有被使用,再到package.json中修改name的包名即可。
you must verify your email before publishing a new package -- 邮箱未验证,去官网验证一下邮箱。
报E409--地址指向错误,npm config set registry=http://registry.npmjs.org 改回地址即可。
参考文章:
https://www.jianshu.com/p/0fc09675d2e4
https://www.cnblogs.com/calamus/p/8384318.html
https://www.cnblogs.com/fayin/p/6831071.html
https://juejin.cn/post/7088609251924377637