npm包从创建到发布

案例:npm包从创建到发布


【第一步】: npm 项目初始化  npm init --yes


在本地磁盘上创建一个空项目,取文件夹名为myProject136。

新建文件夹 命名  myTools-136  ===> 包名 自定义

注意请先去npm网官去确定一下,项目名是否已经被占用了。(如果这个名字已经被占用了,则你是无法向npm上上传的)。 

npm view 包名     //npm view myTools-136  
# 这个命令用来查看 某个包的信息
# 如果返回404,说明这个项目名在npm官网上找不到,此时你就可以使用。
# 否则,说明不可用。

C:\Users\QYWF\Desktop\myProject136>npm view myTools-136
npm ERR! code E404
npm ERR! 404 'myTools-136' is not in the npm registry.
npm ERR! 404 name can no longer contain capital letters
npm ERR! 404
npm ERR! 404  'myTools-136@latest' is not in the npm registry.
npm ERR! 404 Your package name is not valid, because
npm ERR! 404  1. name can no longer contain capital letters
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
 
npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\QYWF\AppData\Roaming\npm-cache\_logs\2021-09-12T11_30_15_333Z-debug.log

npm init --yes


//命令来创建一个package.json文件,对你项目 xxx  信息进行设置


【第二步】:完成功能开发


新建index.js 、tools.js 文件,写自己的代码,在默认情况下,index.js是这个项目的入口文件。

//tools.js
const relativeTime = (oldTime) => {
  const t = new Date(oldTime)
  // Date.now():现在的时间戳(毫秒)
  // t.getTime():旧时间的时间戳(毫秒)
 
  const diff = Date.now() - t.getTime() // 相隔多少毫秒
  // Math.floor 向下取整: 1.7年 ---> 1年前
  const year = Math.floor(diff / (1000 * 3600 * 24 * 365))
  if (year) {
    return `${year}年前`
  }
  const month = Math.floor(diff / (1000 * 3600 * 24 * 30))
  if (month) {
    return `${month}月前`
  }
  const day = Math.floor(diff / (1000 * 3600 * 24))
  if (day) {
    return `${day}天前`
  }
  const hour = Math.floor(diff / (1000 * 3600))
  if (hour) {
    return `${hour}小时前`
  }
  const minute = Math.floor(diff / (1000 * 60))
  if (minute) {
    return `${minute}分钟前`
  } else {
    return '刚刚'
  }
}
 
const formatDate = (dateTime) => {
  // console.log(date)
  // date = new Date();
  const date = new Date(dateTime) // 转换成Data();
  console.log(date)
  var y = date.getFullYear()
  console.log(y)
  var m = date.getMonth() + 1
  m = m < 10 ? '0' + m : m
  var d = date.getDate()
  d = d < 10 ? ('0' + d) : d
  return y + '-' + m + '-' + d
}
 
 
 
// 通过module.exports来导出模块
module.exports = {
  formatDate,
  relativeTime
};


【第三步】:切换镜像源  ---> npm 官网


把包上传到npm上,所以要先确保当前的 npm 源是npmjs.org

(1)查看当前的npm的registry配置.

npm config get registry 
# 查看当前的npm的registry配置,确保是https://registry.npmjs.org
 
# 如果不是,可以通过如下命令来设置
npm config set registry https://registry.npmjs.org 
# 手动设置registry
 

C:\Users\QYWF\Desktop\myProject136\myTools-136>npm config get registry
https://registry.npm.taobao.org/
 
C:\Users\QYWF\Desktop\myProject136\myTools-136>npm config set registry https://registry.npmjs.org


(2)或者使用 nrm 工具来设置:nrm ls 查看镜像源  nrm use  npm 

C:\Users\QYWF\Desktop\myProject136\myTools-136>nrm ls
 
  npm -------- https://registry.npmjs.org/
  yarn ------- https://registry.yarnpkg.com/
  cnpm ------- http://r.cnpmjs.org/
* taobao ----- https://registry.npm.taobao.org/
  nj --------- https://registry.nodejitsu.com/
  npmMirror -- https://skimdb.npmjs.com/registry/
  edunpm ----- http://registry.enpmjs.org/
 
 
C:\Users\QYWF\Desktop\myProject136\myTools-136>nrm use npm
 
 
   Registry has been set to: https://registry.npmjs.org/
 
 
C:\Users\QYWF\Desktop\myProject136\myTools-136>nrm ls
 
* npm -------- https://registry.npmjs.org/
  yarn ------- https://registry.yarnpkg.com/
  cnpm ------- http://r.cnpmjs.org/
  taobao ----- https://registry.npm.taobao.org/
  nj --------- https://registry.nodejitsu.com/
  npmMirror -- https://skimdb.npmjs.com/registry/
  edunpm ----- http://registry.enpmjs.org/


【第四步】:链接 npm  ----> npm adduser


npm adduser  命令需要输入三个信息以供连接上npmjs:

用户名

密码

邮箱(是你在npmjs官网上注册时使用的信息)

C:\Users\QYWF\Desktop\myProject136\myTools-136>npm adduser
Username: xiao***chen
Password:
Email: (this IS public) 22....1241@qq.com
Logged in as xiaozhuchen on https://registry.npmjs.org/.
 
C:\Users\QYWF\Desktop\myProject136\myTools-136>npm who am i
xiao***chen


可以通过如下命令检查自己是否连接成功了,

npm who am i

如果成功了,则可以进行最后一步了:publish

如果想退出:        

  npm logout

【第五步】:把包上传到npm  ---> npm publish 

 
C:\Users\QYWF\Desktop\myProject136\myTools-136>npm publish
npm notice
npm notice package: myTools-136@1.0.0
npm notice === Tarball Contents ===
npm notice 308B  index.js
npm notice 1.4kB tools.js
npm notice 225B  package.json
npm notice === Tarball Details ===
npm notice name:          myTools-136                        
npm notice version:       1.0.0                              
npm notice package size:  1.1 kB                             
npm notice unpacked size: 1.9 kB                             
npm notice shasum:        27c8ebba27b67d094b3ea719de95487cfa23d371
npm notice integrity:     sha512-imrvLNv4gtwT9[...]/+obqHDJ3De3Q==
npm notice total files:   3                                  
npm notice


出错的可能是:

这个包名被别人先用了。

包的版本号不对:每次publish时,包的版本号都应该要大于之前的版本号。

文件过大。你可能需要创建.npmignore文件来设置在打包时要忽略哪些文件。
 

删除包:

npm unpublish --force //强制删除
 
//如果你的包没有什么用处,建议删除掉,以节约公共资源。

更新包:

  1. 修改代码,保存。

  2. 更新版本号。可直接在package.json中修改:只能改大,不能改小。

  3. 重新publish

{
  "name": "mytools-136",
  "version": "1.0.2",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值