npm 上传自己的包

  1. mkdir demo 创建一个新的文件夹

  1. npm init 初始化项目 生成一个package.json文件 name version description等等

  1. touch index.js 创建一个node 可执行脚本新的js 文件

#!/usr/bin/env node
// 必须在文件头加如上内容指定运行环境为node
console.log('hello cli')
  1. 在package.json 中 添加bin 属性 , (当后续去安装该依赖时,npm install 会根据该属性在node_modules/.bin 文件下 生成可执行脚本 ,该脚本执行index.js)

"bin": {
  "demoBin": "index.js" // 该index.js 就是上述新创建的可执行脚本
}
  1. 如果想直接使用命令 demoBin 去执行index.js , 使用npm link 会在全局(C:\Program Files\nodejs\node_global, 该地址被添加到了环境变量中)生成可执行文件 demoBin

  1. 此时在命令工具中 输入 demoBin 就会去执行index.js

  1. 创建一个npm 账号: https://www.npmjs.com

  1. 在命令工具中 输入npm login , 会显示输入账号、密码、邮箱

输入完毕之后报错:

npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.couchdb.user:yimihuakai111 - [FORBIDDEN] Public registration is not allowed
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.

可以看下命令工具中会发现显示的是 npm notice Log in on https://registry.npm.taobao.org/ (最新的淘宝镜像地址应该是 https://registry.npmmirror.com/)

npm 上传自己的包_第1张图片

npm config get registry 会发现此时我们的源是淘宝地址,淘宝地址只提供下载,不能进行发布

我们需要切换到自己的私有源或者npm 官方地址, 我这以npm 官方地址为例,

npm config set registry https://registry.npmjs.org

切换成功后此时再去登录,

npm 上传自己的包_第2张图片

登录成功之后, 发布我们的包 npm publish

报错:

npm ERR! code E403
npm ERR! 403 403 Forbidden - PUT https://registry.npmjs.org/demo - You do not have permission to publish "wendy-cli". Are you logged in as the correct user?
npm ERR! 403 In most cases, you or one of your dependencies are requesting
npm ERR! 403 a package version that is forbidden by your security policy, or
npm ERR! 403 on a server you do not have access to.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Administrator\AppData\Local\npm-cache\_logs\2023-02-21T02_58_24_736Z-debug-0.log

这个一般是包名冲突问题, 我们需要在package.json 修改包名 name

修改为yimidemo, 再重新publish

显示 npm notice Publishing to https://registry.npmjs.org/ 就是发布成功了

我们去Npm 官网下去看 就会有该库了 包名就是package.json name 属性对应的值

拓展: 使用nrm 管理和切换镜像地址

  1. 上述的手动切换 npm config set registry xxxx

  1. 使用nrm 管理

npm install -g nrm 全局安装nrm
nrm use npm (发布包的时候 切换到npm 镜像地址)
nrm use taobao (发布之后 切换到淘宝镜像)
  1. nrm 其他常用命令 nrm ls(所有源列表) ; nrm add <别名> <源url>; nrm del <别名>

  1. 使用的话 就和 其他包一样 npm install --save-dev xxx

你可能感兴趣的:(npm,前端,node.js)