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中央仓库需求背景:平时在项目工作中可能 ...
随机推荐
- BZOJ 3289:Mato的文件管理(莫队算法+树状数组)
http://www.lydsy.com/JudgeOnline/problem.php?id=3289 题意:…… 思路:求交换次数即求逆序对数.确定了这个之后,先离散化数组.然后在后面插入元素的话 ...
- HDU 5791:Two(DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5791 Two Problem Description Alice gets two sequences A ...
- jacoco生成覆盖率报告
操作步骤: 1.下载git上最新的代码到本地 git clone {代码地址} 2.在服务器上打出相关服务的jar包 1) 登上服务器,切换到目标服务所在路径: cd /xx/xx/xx/xx 2) ...
- 为什么Java只有值传递?
形参和实参 形式参数,是在方法定义阶段,是定义某个函数时使用的参数,用于接收实参传入.例f(x,y)中x和y是形参. 实际参数,是在方法调用阶段,是主调函数调用有参函数时,实际传递的内容.例f(3,7 ...
- 修改Windows10的host文件。
一.Windows10中host地址. c:\windows\system32\drivers\etc\hosts 其他系统中的位置. Windows操作系统(Windows XP/7/8/10): ...
- Java设计模式学习笔记(五) 单例模式
前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 使用单例模式的原因 以Windows任务管理器为例,在Windows系统中,任务管理器是唯 ...
- 20131228-sql命令
开始 --cmd net start mssqlservernetnet stop mssqlserver
- 获取文件版本(IE)
GetFileInfoCUIAction::GetFileVersion2GetSystemDirectory WCHAR szConfigFile[MAX_PATH + 1]; ::G ...
- 洛谷P1396 营救 题解
题目:https://www.luogu.org/problemnew/show/P1396 分析: 这其实一看就是一个最短路的近似模板的题目,但我们要注意到两个区之间可能会有多条道路,所以说我们只需 ...
- 《VR入门系列教程》之18---Oculus代码剖析
代码剖析 原文作者:Tony Parisi 那么,Unity究竟是如何支持Oculus VR运行的?首先,我们来看看Unity场景是如何构建的.在Unity集成开发包中有一个相机预设体,这个预 ...