把通用的功能开发成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. redis整合springboot的helloworld

    引入依赖 compile 'org.springframework.boot:spring-boot-starter-data-redis' 使用redis有两种方法 1.Jedis Jedis je ...

  2. Vue技术点整理-安装引入

    Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架 所谓渐进式是指: 1,如果你有一个现成的web应用,你可以将vue作为该应用的一部分嵌入其中,带来更丰富的交互体验 ...

  3. django基础知识之POST属性:

    POST属性 QueryDict类型的对象 包含post请求方式的所有参数 与form表单中的控件对应 问:表单中哪些控件会被提交? 答:控件要有name属性,则name属性的值为键,value属性的 ...

  4. orm的操作

    ORM的对应关系 ​ 类 —— > 表 ​ 对象 ——> 记录(数据行) ​ 属性 ——> 字段 class Book(model.Model): title=models.Char ...

  5. Linux命令学习-wget命令

    Linux系统中的wget是一个下载文件的工具,它用在命令行下,通过它可以方便的下载文件. 我们以百度的logo图片链接地址为例:https://www.baidu.com/img/bd_logo.p ...

  6. 实现socket的服务和客户端通信

    对学习过程中自己敲的一些关于socket有关的代码做了个简单总结,在这分享一下,给有需要的同学借鉴一下. 什么是socket? 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为 ...

  7. k8s学习 - 概念 - Pod

    k8s学习 - 概念 - Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位. 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe ...

  8. Thread API的详细介绍

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurr ...

  9. Java+eclipse技巧小总结

    首先是打开Content Assistant,自动代码补全 Window -> Preferences -> Java -> Editor -> Content Assist, ...

  10. 为git伸冤(使用git中可能会踩的一些坑)

    窦娥被冤,六月飞霜.今天我两次遇到git被冤枉的情况,要是其它人也遇到这种情况导致git使用量缩小,那也要六月飞霜了. git第一次被冤枉是同事以为git的版本管理有问题.事情是这样的,同事提交新版本 ...