markdown-clear,创建过程为例,讲解整个NPM包创建和发布流程

1 如何创建一个包

1.1 创建并使用一个工程

  • 在GitHub上新建一个仓库,其名markdown-clear
  • clone 这个工程到本地

1.2 添加LICENCELICENSE文件, 说明对应的开源协议

MIT License
Copyright (c) <year> <copyright holders> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

1.3 添加README或者ReadMe.md或者README.md文件

  • 说明项目的一些信息
  • 给出详细参考资料的链接
  • 给读者一个整体的导航内容

1.4 添加.gitignore 文件,忽略不需要提交的文件变更

1.5 初始化NPM包

  • 使用npm init 初始化工程
  • 按照提示填入相应的内容

1.6 到这里的目录结构

  • 工程三大件以及npm包配置文件都有了
markdown-clear
------------- .gitignore
------------- LICENCE
------------- README.md
------------- package.json

1.7 EditorConfig

跨编辑器的编辑器设置,网站挂了,EditorConfig

1.8 ESLint

新一代JavaScript代码质量检测工具ESLint

2 代码结构组织

2.1 加入代码相关的目录

markdown-clear
-------------- src // 源代码目录 比如coffee,typescript,es6+等代码的目录
-------------- lib // 转义生成的代码目录,比如babel转义后的es5代码的目录
-------------- docs // 代码相关的设计和使用文档
-------------- tests // 相关的测试目录

2.2 代码实现

  • 写代码 src 目录
  • 转换后的代码 lib 目录
2.2.1 使用babel 转换代码
{
"presets":["es2015","stage-0"]
}
  • 添加 npm 命令
  "scripts": {
"build": "babel src -d lib",
}
2.2.2 实现一个可以全局安装的npm包
  • 添加package.json的配置
  "bin": {
"markdown-clear": "./lib/cli.js"
}
  • cli.js文件第一行添加
#!/usr/bin/env node

2.3 测试

  • 写测试用例 tests 目录
  • 调用最终生成的 lib 下面的目录
  • 可以考虑使用测试框架 mocha, jasmine, karma...
2.3.1 安装测试
  • 使用npm 安装本地文件 作为本地包
npm install path/to/markdown-clear
  • 使用npm 安装本地文件 作为全局包
npm install path/to/markdown-clear -g

2.4 文档输出

  • 写文档 docs 目录
  • 写代码相关的设计和使用文档,没有自然可以不用写
  • 这里的文档应该在README.md 中会有入口。

3 发布NPM包

npm adduser USERNAME
  • 如果没有登录
npm login
  • 登录后发布包,在工程目录下执行
npm publish

如何自己写一个公用的NPM包的更多相关文章

  1. 开发一个健壮的npm包

    项目地址:loan-calculate-utils npm包的发布.更新查看上一篇文章 开发一个基础的npm包 目前我们的目录是这个样子: . ├── source 源代码目录 │   └── ind ...

  2. 开发一个基础的npm包

    初始化项目 # 新建文件夹 mkdir whosmeya-npm-package-test # 进入 cd whosmeya-npm-package-test/ # 初始化 package.json, ...

  3. 从0写一个Golang日志处理包

    WHY 日志概述 日志几乎是每个实际的软件项目从开发到最后实际运行过程中都必不可少的东西.它对于查看代码运行流程,记录发生的事情等方面都是很重要的. 一个好的日志系统应当能准确地记录需要记录的信息,同 ...

  4. 发布一个简单的npm包

    本文简单地记录了发布一个简单npm包的过程,以便后续参考使用. 初始化npm init 通过npm init创建一个package.json文件 D:\robin\lib\weapp-utils> ...

  5. npkill 一个方便的npm 包清理工具

    npm 包很好用,但是占用空间太多了,npkill 提供了一个方便的工具,可以帮助我们查找安装的npm 包,以及进行清理 安装 npm install -g npkill 简单使用 命令 npkill ...

  6. 如何开发一个自己的npm包

    目录 一.初始化npm包 二.新建自己的工具类 三.新建入口文件index.js 四.编写单元测试 五.登录仓库 六.发布包 七.安装使用 八.删除包 一.初始化npm包 npm init 运行输入包 ...

  7. React Native学习(四)—— 写一个公用组件(头部)

    本文基于React Native 0.52 Demo上传到Git了,有需要可以看看,写了新内容会上传的.Git地址 https://github.com/gingerJY/React-Native-D ...

  8. npm_一个有意思的npm包

    $ npm install yosay const yosay = require('yosay'); console.log(yosay('Hello, and welcome to my fant ...

  9. 从0到1发布一个npm包

    从0到1发布一个npm包 author: @TiffanysBear 最近在项目业务中有遇到一些问题,一些通用的方法或者封装的模块在PC.WAP甚至是APP中都需要使用,但是对于业务的PC.WAP.A ...

随机推荐

  1. CNN压缩:为反向传播添加mask(caffe代码修改)

    神经网络压缩的研究近三年十分热门,笔者查阅到相关的两篇博客,博主们非常奉献的提供了源代码,但是发发现在使用gpu训练添加mask的网络上,稍微有些不顺,特此再进行详细说明. 此文是在 基于Caffe的 ...

  2. ISO文件:AMD64和i386的区别

     下载kali系统时,出现两个选项:ADM64和i386,那么这两者的区别是什么?  i386=Intel 80386.其实i386通常被用来作为对Intel(英特尔)32位微处理器的统称. AMD6 ...

  3. 今天学习js做了些总结,分享给大家

    一.1.javascript的作用   是基于对象和事件驱动的语言,应用于客户端   基于对象:提供好了很多对象,可以直接拿过来使用,不需要创建   事件驱动: html做网站静态效果,javascr ...

  4. grid栅格布局

    前面的话 Grid布局方式借鉴了平面装帧设计中的格线系统,将格线运用在屏幕上,而不再是单一的静态页面,可以称之为真正的栅格.本文将详细介绍grid布局 引入 对于Web开发者来说,网页布局一直是个比较 ...

  5. PHP中利用redis实现消息队列处理高并发请求

    将请求存入redis 为了模拟多个用户的请求,使用一个for循环替代 //redis数据入队操作 $redis = new Redis(); $redis->connect('127.0.0.1 ...

  6. 拉勾网招聘数据分析(Echarts, SQL, java)

    这次的数据分析与决策课程,我做的是通过爬取拉勾网上的招聘信息,并用爬取到的数据整体分析互联网行业数据,项目做得差不多了,先总结下吧,后边有时间了再完善. 主要工具:  Echarts, SQL, ja ...

  7. mac下git配置和jenkins打包

    今天自己配置了下jenkins,还算是比较顺利,把整个过程和大家分享下. 1. 查看秘钥是否存在 打开终端查看是否已经存在SSH密钥:cd ~/.ssh 如果没有密钥则不会有此文件夹,有则备份删除, ...

  8. CSS 基础

    CSS Cascading Style Sheet 层叠样式表 Css创建: 1.外部样式表(样式表应该以 .css 扩展名进行保存) <head> <link rel=" ...

  9. hasOwnProperty的用法

    判断一个属性倒底是在原型中,还是在实例中 hasOwnProperty() 来个栗子 function Person(){ }; Person.prototype.name = "hezhi ...

  10. centos7使用cobbler(2.8)批量部署操作系统之二

    1. Cobbler常用命令 1.1 查看cobbler帮助 # cobbler --help usage ===== cobbler <distro|profile|system|repo|i ...