前言:npm官方建议规范的包 至少包含:
- package.json(包的基本信息)
- README.md(文档)
- index.js (入口文件)
创建目录
- 电脑上首先要下载
node.js
,如果没有就先下一个 - 去npm官网上注册一个账号,需要记住用户名,密码和邮箱
-
创建一个新目录并使用
npm init
初始化mkdir csu-xzy cd csu-xzy npm init
按照提示一步步完善即可,也可使用
npm init -y
使用npm默认设置,稍后再通过编辑package.json修正。
编写内容
- 完成之后,目录里面会多一个package.json的文件,由于我们配置的入口文件是
ubdex.js
,所以我们在根目录下创建一个index.js
文件,编写内容如下
function printUserInfo(name, age) {
return `your name is ${name} and your age is ${age}`
}
function makeIterator(array) {
let index = 0;
return {
next : function () {
return index < array.length ?
{value: array[index++], done: false} :
{value: undefined, done: true};
}
}
}
export {printUserInfo, makeIterator}
- 创建一个readme.md文件,内容随便
### csuxzy
This is my first npm package!
It is just for learning.
- 最终生成的目录文件为
└── csu-xzy
├── README.md
├── index.js
└── package.json
发布:
npm publish
可能报的错:
(1)未登录
npm ERR!
code ENEEDAUTH
npm ERR!
need auth auth required for publishing
npm ERR!
need auth You need to authorize this machine using npm adduser
解决办法:npm adduser
输入:
- 用户名(忘记的话,去npm网站查看:头像 > Profile Settings)
- 密码
- 邮箱
(2)仓库地址不对
npm ERR!
code E409
npm ERR!
Registry returned 409 for PUT on http://r.cnpmjs.org/-/user/or…:yuyy: conflict
原因:通过nrm ls
命令查看此时的仓库地址为cnpm,而不是npm
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LOROf0xK-1624000972076)(https://segmentfault.com/img/bVblqB5?w=323&h=147)]
解决办法:用nrm切换到npm仓库,执行命令nrm use npm
(3)电脑环境问题
使用nrm的时候报错,更具提示将cli.js
低十七行删了或者换成
const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc')
(4)403错误
这个错误表示这个包已经被别人创建过了,如果要使用需要更改包名。或者是你没有验证邮箱(大部分是这个问题),解决这两个问题之后就可以正常的发布包了
成功发布
以上问题解决后再次执行发布命令npm publish
,发布成功
去npm 官网搜索
有可能有延迟,不能立马看不到。
使用
等待官网可以搜索到了我们就可以像使用其它包一样来使用我们这个包了,只用在项目里npm install csu-xzy
,然后在需要的文件中引入这个模块就可以正常使用了。