以markdown-clear为例,讲解整个npm包的创建和发布过程1如何创建包1.1创建和使用项目在GitHub上新建一个仓库,命名为markdown-clearclone这个项目到本地1.2添加LICENSE或LICENSE文件,说明对应的开源协议到SPDXLicenseListorOpenSourceInitiative,下载对应协议的模板,这里我们选择MIT修改必要的协议时间和作者MITLicenseCopyright(c)Permission特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地处理本软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件的副本,并允许获得软件的人这样做,但须遵守以下条件:上述版权声明和本许可声明应包含在所有副本或软件的重要部分。本软件“按原样”提供,不附有任何明示或暗示的保证,包括但不限于保证适销性、特定用途的适用性和非侵权性的IES。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为中,还是与软件或软件的使用或其他交易有关的行为中。1.3添加自述文件或ReadMe.md或README.md文件解释项目的一些信息给出详细参考的链接,给读者一个整体的导航内容1.4添加.gitignore文件,忽略不需要提交的文件更改。你可以去githubgitignore下载最接近的模板然后修改。可以去gitignore.io生成一个,然后把里面的内容记下来。大家可以参考gitignore.io文档,自行配置命令行工具,方便随时使用,可以在这里玩。我们在这里生成了一个Node+IntellJ-all结果。语法参考gitignoredoc1.5初始化npm包使用npminit初始化项目,根据提示填写相应内容所有文件都有markdown-clear----------------.gitignore-------------LICENCE------------README.md------------package.json1.7EditorConfigcross-editor编辑器设置,网站down,EditorConfig1.8ESLint新一代JavaScript代码质量检测工具ESLint2代码结构组织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":"babelsrc-dlib",}2.2.2实现一个可以全局安装的npm包添加package.json配置"bin":{"markdown-clear":"./lib/cli.js"}在cli.js文件的第一行添加#!/usr/bin/envnode2.3来测试写测试用例。tests目录调用最终生成的lib下的目录可以考虑使用测试框架mocha,jasmine,karma...2.3.1安装测试使用npm将本地文件安装为本地包npminstallpath/to/markdown-clear使用npm将本地文件作为全局包安装npminstallpath/to/markdown-clear-g2.4文档输出写文档docs目录写代码相关的设计和使用文档,如果这里不需要写文档,应该有是README.md中的条目。3发布npm包npmdocument如果没有注册npm账号npmadduserUSERNAME如果没有登录npmlogin登录后发布包,在项目目录下执行npmpublish