把通用的功能开发成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地址:

https://github.com/shiyuan598/FrontEnd/tree/master/npm/datetime-format
 

仅介绍npm包开发与发布的流程,如有问题请不吝赐教,欢迎留言交流~

npm包开发与发布的更多相关文章

  1. 记npm包开发全过程

    概述 为什么开发npm包? 如何开发? 如何写单元测试? package.json 如何发布模块? 如何使用? 为什么开发npm模块? NPM的全称是Node Package Manager,是一个N ...

  2. npm包开发(whale-makelink)

    whale-makelink是一个npm工具,是强业务的工具,可以将当前工程目录下的项目文件夹,在README中生成项目的链接地址.Demo. 一.npm init 使用npm init生成packa ...

  3. 如何发布一个包到npm && 如何使用自己发布的npm包 && 如何更新发布到npm的package && 如何更新当前项目的包?

    如何发布一个包到npm First 在https://www.npmjs.com注册一个账号. Second 编辑好项目,文件大致如下: 其中,gitignore可以如下: .DS_Store nod ...

  4. 发布npm包时,发布源码,而不是dist后的打包文件

    基于webpack-scaffold 此脚手架配置 删除.gitignore文件中对dist文件夹的无视配置 修改package.json文件 { "private": true, ...

  5. 如何开发一个npm包并发布

    一.安装nodejs 不多说了,网上教程多得是 二.创建自己的npm包 目录结构 npm-test a.js b.js package.json 开发 为了简单便于理解,就开发一个简单地hello程序 ...

  6. 自定义npm包的创建、发布、更新和撤销

    大纲 1.准备2.自定义npm包3.发布自定义npm包4.引用npm包5.更新npm包6.撤销发布的npm包 简书原文 https://www.jianshu.com/p/d737bc5df5b7 1 ...

  7. VS Code项目中通过npm包的方式共享代码片段的方案实现

    VS Code项目中通过npm包的方式共享代码片段的方案实现 上周在 "VS Code项目中共享自定义的代码片段方案" 的文章中提到过一个共享代码片段的方案,上周经过调研后并没有发 ...

  8. 如何自己写一个公用的NPM包

    以markdown-clear,创建过程为例,讲解整个NPM包创建和发布流程 1 如何创建一个包 1.1 创建并使用一个工程 在GitHub上新建一个仓库,其名markdown-clear clone ...

  9. 如何开发一个npm包并发布到npm中央仓库

    转自: https://liaolongdong.com/2019/01/24/publish-public-npm.html 如何开发一个npm包并发布到npm中央仓库需求背景:平时在项目工作中可能 ...

随机推荐

  1. Linux搭建基于BIND的DNS服务器

    Linux搭建基于BIND的DNS服务器   实验目标: 通过本实验掌握基于Linux的DNS服务器搭建. 实验步骤: 1.安装BIND 2.防火墙放通DNS服务 3.编辑BIND的主配置文件 4.编 ...

  2. asyncio源码分析之基本执行流程

    基于async关键字的原生协程 # 定义一个简单的原生协程cor async def cor(): print('enter cor') print('exit cor') print(type(co ...

  3. ElasticStack学习(四):ElasticSearch文档使用与操作

    一.文档的CRUD介绍 ElasticSearch中存在五种操作,分别如下: 1.Index 该操作表示:如果文档的ID不存在,则创建新的文档.若有相同的ID,先删除现有文档,然后再创建新的文档,同时 ...

  4. MYSQL事务、锁

    MYSQL事务 事务: 原子性 : 要么都执行,要么都不执行. 一致性: 结果要么都成功 ,要么都失败. 隔离性: 事务之间是互不干扰的 持久性: 事务一旦被提交,对数据库的改变是永久性的. 事务的隔 ...

  5. Python题整理

    1.Python的多态.鸭子类型? 2.Python的序列化工具有哪些? 3.Python处理Excel的工具有哪些? 4.Python处理Graph的算法库有哪些? 5.Python的dict是基于 ...

  6. spring的context:exclude-filter 与 context:include-filter

    1 在主容器中(applicationContext.xml),将Controller的注解打消掉 <context:component-scan base-package="com& ...

  7. JDBC连接mysql数据库操作

    一.创建所需对象,并进行初始化 Connection connection=null; Statement statement=null; PreparedStatement pst; ResultS ...

  8. set.contains()分析

    先看一段代码 Set s = new HashSet(); List<String> list = new ArrayList<>(); list.add("a&qu ...

  9. SQL Server 触发器和事务

    一.触发器 1. 定义 --基本语法 create trigger Trigger_Name on TableName for type --type:insert,update,delete as ...

  10. 查询亿级数据毫秒级返回!Elasticsearch 是如何做到的?

    掌握搜索技能,才能在庞大的数据集中找到准确的目标.本篇就带你进入另一个非凡的旅程,即使你没有像Google或Baidu一样强大的技术,一样也可以做出与之相匹敌的用户体验. 搜索是现代软件必备的一项基础 ...