npm包开发与发布
把通用的功能开发成npm包,便用使用和维护,更重要的是可以分享给广大的开发者,是不是很激动人心!
那么,步骤如下:
1.创建项目
创建项目目录,npm init ,根据需要输入配置信息(建完后也可以在package.json中自行修改)

创建完成后项目目录下会有一个package.json文件

配置项
name: 说明了npm包的名称,也就是publish后可以在npmjs中通过该名称搜索到
version:版本号
main:入口文件
2.创建index.js文件,内容如下:
function addZero(num) {
return num > 9 ? num : '0' + num
}
let formatter = {
date: null,
init(date) {
try {
if (date) {
this.date = new Date(date)
}
} catch (error) {
console.info(error)
}
},
getDateTime () {
let date = this.date || new Date()
let res = ''
res = date.getFullYear() + '-' + addZero(date.getMonth() + 1) + '-' +addZero(date.getDate())
+ ' ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes()) + ':' + addZero(date.getSeconds())
return res
},
getDate () {
return this.getDateTime().split(' ')[0]
},
getTime () {
return this.getDateTime().split(' ')[1]
}
}
module.exports = formatter
module.exports = formatter意思是把formatter输出。 3.测试
创建test-formatter.js,导入index并使用其中的方法
let formatter = require('./index') // 导入
formatter.init('2018-6-9')
console.info(formatter.getDateTime())
命令行输入 node test-formatter.js 执行,结果为:

4.测试没有问题,那么需要创建一个ReadMe文件进行说明
主要包含:
介绍,安装方法,github地址,使用示例
# datetime-format-wsy
格式化时间,获取2019-08-07 15:06:32或2019-08-07或15:06:32 # install
npm install -g datetime-format-wsy #github
https://github.com/shiyuan598/FrontEnd/tree/master/npm/datetime-format #usage
let formatter = require('./index')
formatter.init('2018-6-9')
console.info(formatter.getDateTime())
此时项目的目录结构如下:

5.下面就可以发布了
先要有一个npm账号,,如果没有请到 https://www.npmjs.com 注册
命令行输入:
npm login
根据提示依次输入用户名、密码,登录成功后会显示用户名。
命令行输入:
npm publish

完成发布。
如果是因为使用了淘宝镜像导致publish不成功,可以按如下步骤操作:
npm i -g nrm
nrm use npm
再次npm publish
6.使用
发布成功后就可以在npmjs中搜索、也可以安装使用了。
在npmjs搜索的结果:

安装:
命令行输入:npm install datetime-format-wsy --s

安装完成后项目目录下会增加package-lock.json描述了该包的信息:
{
"name": "datetime-format-wsy2",
"version": "1.0.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"datetime-format-wsy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/datetime-format-wsy/-/datetime-format-wsy-1.0.1.tgz",
"integrity": "sha512-klyoj8r2KbOqN9zngjplMr+EWU+cGqa1KgzNn+TUtEpzvYqmnJvj+P90gYXgm0sKVd4+30GLesocoRmMWh3Q0Q=="
}
}
}
在test-format.js中使用
let timeFormat = require('datetime-format-wsy')
let date = timeFormat.getDateTime()
console.info(date)
结果:

(另外,使用node运行js文件,文件改动后不会自动更新,需要重复运行node命令,
可以使用nodemon代替,自动重启,提升效率,
安装:npm install -g nodemon
使用: nodemon filename.js)
代码github地址:
仅介绍npm包开发与发布的流程,如有问题请不吝赐教,欢迎留言交流~
npm包开发与发布的更多相关文章
- 记npm包开发全过程
概述 为什么开发npm包? 如何开发? 如何写单元测试? package.json 如何发布模块? 如何使用? 为什么开发npm模块? NPM的全称是Node Package Manager,是一个N ...
- npm包开发(whale-makelink)
whale-makelink是一个npm工具,是强业务的工具,可以将当前工程目录下的项目文件夹,在README中生成项目的链接地址.Demo. 一.npm init 使用npm init生成packa ...
- 如何发布一个包到npm && 如何使用自己发布的npm包 && 如何更新发布到npm的package && 如何更新当前项目的包?
如何发布一个包到npm First 在https://www.npmjs.com注册一个账号. Second 编辑好项目,文件大致如下: 其中,gitignore可以如下: .DS_Store nod ...
- 发布npm包时,发布源码,而不是dist后的打包文件
基于webpack-scaffold 此脚手架配置 删除.gitignore文件中对dist文件夹的无视配置 修改package.json文件 { "private": true, ...
- 如何开发一个npm包并发布
一.安装nodejs 不多说了,网上教程多得是 二.创建自己的npm包 目录结构 npm-test a.js b.js package.json 开发 为了简单便于理解,就开发一个简单地hello程序 ...
- 自定义npm包的创建、发布、更新和撤销
大纲 1.准备2.自定义npm包3.发布自定义npm包4.引用npm包5.更新npm包6.撤销发布的npm包 简书原文 https://www.jianshu.com/p/d737bc5df5b7 1 ...
- VS Code项目中通过npm包的方式共享代码片段的方案实现
VS Code项目中通过npm包的方式共享代码片段的方案实现 上周在 "VS Code项目中共享自定义的代码片段方案" 的文章中提到过一个共享代码片段的方案,上周经过调研后并没有发 ...
- 如何自己写一个公用的NPM包
以markdown-clear,创建过程为例,讲解整个NPM包创建和发布流程 1 如何创建一个包 1.1 创建并使用一个工程 在GitHub上新建一个仓库,其名markdown-clear clone ...
- 如何开发一个npm包并发布到npm中央仓库
转自: https://liaolongdong.com/2019/01/24/publish-public-npm.html 如何开发一个npm包并发布到npm中央仓库需求背景:平时在项目工作中可能 ...
随机推荐
- C# 死锁 TaskCompletionSource
在异步转同步时,使用不当容易造成死锁(程序卡死) 看如下案例: 有一个异步方法 private static async Task TestAsync() { Debug.WriteLine(&quo ...
- 简单的 自动生成 二维码 PHP 方法
方法一:<style type="text/css">.eweima{ width:200px; height:200px; margin:auto;}</ ...
- 利用MAT分析JVM内存问题,从入门到精通(二)
上一篇文章MAT入门到精通(一)介绍了MAT的使用场景和基本概念,这篇文章开始介绍MAT的基本功能,后面还有两篇,一篇是MAT的高级功能,另一篇是MAT实战案例分析. 三.欢迎页 使用MAT打开一个h ...
- spark入门(三)键值对操作
1 简述 Spark为包含键值对类型的RDD提供了一些专有的操作.这些RDD被称为PairRDD. 2 创建PairRDD 2.1 在sprk中,很多存储键值对的数据在读取时直接返回由其键值对数据组成 ...
- UVALive 7037:The Problem Needs 3D Arrays(最大密度子图)
题目链接 题意 给出n个点,每个点有一个值,现在要选择一些点的集合,使得(选择的点生成的逆序对数目)/(选择的点的数量)的比率最大. 思路 点与点之间生成一个逆序对可以看做是得到一个边,那么就是分数规 ...
- sqlserver、oracle数据库排序空值null问题解决办法
转:https://www.cnblogs.com/pacer/archive/2010/03/02/1676371.html [sqlserver]: sqlserver 认为 null 最小. 升 ...
- Win10自动更新关闭方法
一.为什么很多人会选择禁用Win10自动更新? 1.win10自动更新定义: Win 10的自动更新功能,即 Windows Update.这项功能本意是为一些软件.漏洞等提供更新服务.一般来说,只要 ...
- maven多仓库配置(公司服务器与阿里云仓库)
1. 问题描述 公司内网搭建的有maven私有服务器,但是碰到好几次只有gav没有jar的情况或者最新版本更新不及时,所以需要公司服务器和远程仓库(阿里云)相结合来满足项目需求. 2. 解决方案: m ...
- MYSQL语句强化练习
之前发现自己写sql不怎么得心应手,总是百度零零散散的学习一下,所以在空闲的时候自己就专门找一下mysql的强化题敲一下练习一下,简要记录一下,sql写着写着就会越来越熟练,总之要自己加油! 表结构 ...
- ~~核心编程(四):面向对象——单继承&复写~~
进击のpython 继承 继承的出现!就是一个作用! 为了节省代码! 为什么说节省代码? 你爸爸要是王健林 你是不是就不用愁怎么获得钱了? 为啥? 是不是钱已经有了! 直接拿来用就行了! 我们想一下奥 ...