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

1 如何创建一个包

1.1 创建并使用一个工程

  • 在GitHub上新建一个仓库,其名markdown-clear

  • clone 这个工程到本地

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

  • 到SPDX License List 或者Open Source Initiative,下载相应协议的模板,我们这里选用MIT

  • 修改必要的协议时间和作者

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 文件,忽略不需要提交的文件变更

  • 可以去github gitignore 下载一个最相近的模板然后改改

  • 可以去gitignore.io生成一个,然后把内容拿下了

  • 可以参考gitignore.io 文档,自己配命令行工具,以便随时可以玩

  • 我们这里生成了一个Node + IntellJ-all 的结果

  • 内容语法参考gitignore doc

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 转换代码
  • babel官网

  • babel 配置文件 .babelrc

{"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文档

  • 如果没有注册npm账户

npm adduser USERNAME
  • 如果没有登录

npm login
  • 登录后发布包,在工程目录下执行

npm publish

如何自己写一个公用的NPM包相关推荐

  1. 五分钟创建一个自己的NPM包

    创建NPM包 介绍 npm 可以非常方便地发布一个包,比 pip.gem.pear 要简单得多.在发布之前,首先 需要让我们的包符合npm的规范,npm有一套以CommonJS为基础包规范,但与Com ...

  2. 写一个公用的gpio口驱动

    因为项目需要控制的GPIO口比较多,如果每个GPIO口都写一个驱动就显得比骄麻烦,所以就写了一个通用的GPIO口驱动.只要dts里面配置好设备GPIO相关信息就可以自动加载了.可以很充分的体现多个设备 ...

  3. 如何创建一个自己的npm包,并且上传到npm官网上

    1.首先先新建一个文件夹,文件夹的名字就是我们包的名字 cmd命令 2.然后再mynpm里新建一个index.js,内容是我们包的内容 module.exports={eat:function(){v ...

  4. 自己写一个composers包【一】

    什么是composer Composer 是一个命令行工具,它的作用就是帮我们的项目管理所依赖的开发包,属于依赖包管理工具. 什么是依赖包管理工具 由于程序届的<开源运动>,我们可以在社区 ...

  5. 【Npm】如何发布一个npm包?

    前端日常开发经常会通过 npm install安装一些包,那这些包都是怎么发布的呢? 接下来让我们动手发布一个自己的npm 包. windows系统下演示: 步骤一.注册npm账号 首先我们需要在np ...

  6. 如何在React Native中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

  7. 万物根源-一分钟教你发布npm包

    Created By JishuBao on 2019-03-08 12:38:22 Recently revised in 2019-03-08 12:38:22   欢迎大家来到技术宝的掘金世界, ...

  8. 如何在 React Native 中写一个自定义模块

    前言 在 React Native 项目中可以看到 node_modules 文件夹,这是存放 node 模块的地方,Node.js 的包管理器 npm 是全球最大的开源库生态系统.提到npm,一般指 ...

  9. cimi——全自动发布NPM包的工具

    您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ cimi--全自动发布NPM包的工具 前言 Cimi Cimi修改版本规则 使用 写在最后 前言 博主最近的时间一直 ...

最新文章

  1. Programming Computer Vision with Python (学习笔记一)
  2. 由Lucnene 对于预治疗的文字,全角半角转换器(可执行)
  3. python token post403原因_Django的POST请求时因为开启防止csrf,报403错误,及四种解决方法...
  4. php 函数 数组 难学,php 数组的常用函数
  5. Liferay 控制面板在指定文件夹添加Basic Document流程分析
  6. 解决mac上每次升级nodejs都要重新安装扩展包的问题
  7. 解决新版DBUtils使用连接池from DBUtils.PooledDB import PooledDB报错
  8. pytorch torch.narrow
  9. python代码示例-总算知道python入门代码示例
  10. 分享详细剪辑步骤,做自媒体一个月7852,全程复制粘贴即可
  11. 京东云首次发布数智供应链全景图 锚定产业数字化新赛道
  12. Visa在全球范围内增加对女足的投入
  13. 【TF2.0-CNN】使用ImageDataGenerator生成训练数据
  14. 003_SSS_ Tackling the Generative Learning Trilemma with Denoising Diffusion GANs
  15. rs.next()为false导致resultset遍历不出数据
  16. RK3308设置GPIO的方法
  17. WDF VIOLATION 你的电脑遇到问题,需要重新启动
  18. linux 分卷压缩与合并
  19. GitLab: 使用用户名/密码创建Access Token的暂定方法
  20. android:登录界面记住密码

热门文章

  1. SAP MM41 收到报错:Retail materials cannot be maintained.
  2. 机器学习工程师正在失业,但学习依旧是唯一的出路
  3. 现代化机器学习工具,助数据科学家开展更多工程或业务功能
  4. Python独领风骚,AI热情有所降温|2020 年技术趋势解读
  5. AI来编程,码农何去何从?
  6. 讨论Markov Random Field和Gibbs Random Field心得
  7. python检查URL是否能正常访问
  8. (完全解决)ValueError: Invalid RGBA argument: 0.2
  9. 深入理解argparse模块中的add_argument的参数(如action等)
  10. PNAS:大脑一思考,就不再对称也不再平衡