适合开源的项目

  • 整理收藏的 Markdown 笔记

  • 框架全家桶的脚手架搭建

  • 炫酷的动画效果

  • 各种工具库、框架

  • cache工具(缓存工具,整合localStorage,以及合理的内存销毁机制)

  • query2json,解析url参数为json格式

  • 移动端打印 console.log, 方便移动端输出内容

设置 pkg 初始值

  1. npm config set init.author.email "lulu27753@163.com"
  2. npm config set init.author.name "lulu"
  3. npm config set init.author.url "https://github.com/lulu27753"
  4. npm config set init.license "MIT"
  5. npm config set init.version "0.1.0"

版本号

  • 一级:重构版本

  • 二级:重大功能改进

  • 三级:小升级或者bug修复

0.X.X: 非正式版本
Semantic Versioning
使用 semantic-release 实现全自动更新版本号和发布,这个工具会判断 Commit Message 的不同,fix 增加修订号,feat 增加次版本号,而包含 BREAKING CHANGE 的提交增加大版本号。
z 位:每周三会进行日常 bug 修复版本的更新,紧急问题不受此限制,可以随时发布
y 位:每月发布一个带有新特性的向下兼容的版本
x 位:包含有 break change 变更的大版本,一般周期一到两年

通过 npm version 命令来发布版本:

  1. # v1.0.0
  2. npm version prepatch # 发布一个预修订版本 v1.0.1-0
  3. npm version patch # 修改修订号,做了向下兼容的问题修正,v1.0.1
  4. npm version preminor # 发布预次版本 v1.1.0-0
  5. npm version minor # 修改次版本号,做了向下兼容的功能性新增,v1.1.0
  6. npm version premajor # 发布预备主版本 v2.0.0-0
  7. npm version prerelease --preid=alpha # alpha 是测试版本,beat 是内测版本,区别与release正式版本
  8. npm version major # 修改主版本号,做了不兼容的 API 修改,v2.0.0

⚠️如果破坏了语义化的规范发布了不兼容的版本,应该继续往下发修复相应兼容版本

开源协议

开源协议是软件的授权许可,表述了用户获得你开源的代码后拥有的权利和义务,可以参考
Choose an open source license | Choose a License

规范提交记录

方便使用工具根据提交记录自动生成更新说明 (CHANGELOG)
Angular 规范 (Git Commit Message Conventions )
性质(影响范围): 提交说明
形如:feat(all): update webpack from 2 to 2 [TK-236]

  • 性质
  • feat: A new feature; 添加新特性
  • fix: A bug fix ;修复 bug
  • docs: Documentation only changes; 仅仅修改了文档
  • style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc); 仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑
  • refactor: A code change that neither fixes a bug nor adds a feature;代码重构,没有加新功能或者修复bug
  • perf: A code change that improves performance;增加代码进行性能测试
  • test: Adding missing tests or correcting existing tests;增加测试用例
  • build: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  • ci: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs);新增工程化脚本工具
  • chore: Other changes that don’t modify src or test files;改变构建流程、或者增加依赖库、工具等
  • revert: Reverts a previous commit;撤销以前的提交
  1. <type>(<scope>): <subject>
  2. <body>
  3. <footer>

commitizen : 进行交互式的 Commit 填写,只需要按照提示选择更新的 type 和填写必要的信息,就能自动生成符合规范的提交记录;
也可以根据commit message 来生成changelog

  1. # command
  2. conventional-changelog -p angular -i CHANGELOG.md -s -r 0
  • -i: 表示从CHANGELOG.MD中读取changelog
  • -s: 读写changelog为同一个文件
  • -r: 表示生成changelogrelease版本数量,默认为1,全部则是0 由于我的示例的commit个数不够多,这里选取angular的一部分changelog来展示。

@semantic-release/changelog: 根据 Commit 中 type 自动增量生成 CHANGELOG

目录结构

  • src: 源代码

  • release: 发布结果

  • test:单元测试用例

  • doc: 文档

  • example:实例

Readme

  • 产品简介(此处要突出特点,打差异化竞争)

  • 产品安装和下载

  • 快速使用(详细的使用文档或者二次开发文档,外链即可)

  • 交流提问区(QQ、微信群)

  • 关于作者(博客链接和收款二维码)

  • 最好有英文版本

文档和测试用例

  1. npm i gitbook-cli -g
  2. SUMMARY.md
  3. gitbook init
  4. gitbook build

配置.gitignore加上_book

静态网站部署

  • github pages: 将网站名称改为docs,静态资源路径容易出问题,因为引用的资源会在启动服务器的根目录(docs)寻找,而不是在相对路径 ./docs里面寻找
  • 购置一个服务器、域名,将我们的代码推到服务器上,从域名中访问。
  • Netlify:免费

发布npm模块

  1. npm add user
  2. npm login
  3. npm publish .

不能重名

出现版本冲突

如 业务项目有react版本,开源包也有有react版本,会冲突,配置下 webpack alias 即可

  1. if (isDev) {
  2. alias.react = require.resolve('react')
  3. }

减少版本发布次数

1、yarn link

  1. yarn link <your_node_module>

2、借助工具(推荐): yalc: Work with yarn/npm packages locally like a boss.
可参考文章 Looking for brilliant yarn member who has first-hand knowledge of prior issues with symlinking modules · Issue #1761 · yarnpkg/yarn

自动部署

node-schedule + PM2

升级

  • 新建分支

  • 修改版本号

  • 修改代码、文档和测试用例

  • 自测

  • 将新的分支提交到远程

  • 再次确认版本号,因为版本号非常重要

  • 将新的分支合并到 master,并提交 master 到远程

  • 创建tag并提交到远程

  • 提交到npm

宣传

一个公司的核心竞争力,一是技术,二是营销。
npmjs.com 展示下载量变化的折线图
bestofjs.org 展示了项目 Star 数变化的日历色块图

博客

围绕产品功能
第一类技术干货文章
第二类产品介绍
以第一类为主

  • 如何

  • 预防

  • 总结

  • 半年记

回答相关的问题

  • 知乎

  • sf.gg

  • stackoverflow

  • 字数只能多不能少,最好图文并茂,还能讲个笑话

  • 回答要专业,经过亲自测试,不要想当然的瞎猜

  • 回答问题的最后,顺便推广自己的产品

需求采纳

  • 很多用户都提过这个需求,即大众需求

  • 自己判断这个需求对大部分用户都有用

  • 该需求符合产品定位以及产品发展的方向

  • 该需求能抹平和竞品的差距,或者能和竞品差异化竞争