发布时,两者都使用README.md
作为说明。常见做法是使用一个共享的文件。
但如果我需要不同的Readme,并且仍然要从单个本地仓库发布,而不进行手动编辑/替换怎么办?
PS
我尝试在package.json
中使用"readme": "npm-readme.md"
,但它显示的是该字段的值,而不是文件的内容。
发布时,两者都使用README.md
作为说明。常见做法是使用一个共享的文件。
但如果我需要不同的Readme,并且仍然要从单个本地仓库发布,而不进行手动编辑/替换怎么办?
PS
我尝试在package.json
中使用"readme": "npm-readme.md"
,但它显示的是该字段的值,而不是文件的内容。
好问题,伙计!我更喜欢GitHub而不是NPM,原因如下:
a) NPM上的列太窄了,所有表格都开始滚动 b) 当图片对齐到左侧或右侧时,没有填充 c) TOC导航无法工作,因为在GitHub和npm上生成的锚链接不同
因此,我找到了一个解决方案:添加一个README
文件,它将由NPM读取,保留README.md
文件,它将由GitHub读取。很容易,但不能保证它会继续工作。
由于某些原因,当我尝试zavr的回答(使用README
和README.md
)时,它没有起作用(可能是NPM使用的逻辑已经改变)。但有效的方法是将GitHub的README放入.github
目录中(根据他们的文档是允许的),并将根目录下的README.md
用作NPM的版本。
<!-- README for NPM; the one for GitHub is in .github directory. -->
<badges>
<a brief description>
Please refer to the [GitHub README](https://github.com/<your repo>#readme) for full documentation.
幸运的是,对于GitHub来说.github/README.md
似乎比README.md
更具优先级。
2021-02-06更新:关于最佳实践的一些快速说明。如果不提升软件包版本,NPM将不允许您更新自述文件,在实际情况下,您经常需要对文档进行某些更新,有时是小更新。因此,我建议在GitHub自述文件中提供完整的文档,同时在NPM上给出库的简短描述,结合package.json
的keywords
字段,可以使软件包更易于发现。在NPM readme中包括徽章也是一个好主意,因为这将增加NPM显示的质量分数(请参见这篇文章中“品牌”得分的讨论)。
一种解决方案是在 npm publish
期间使用两个 readme 文件并通过 npm 脚本重命名它们。
操作步骤如下:
在源代码管理中,我们将有以下文件:
README.md
- 这是默认的 git readme,您可以在其中记录源代码。npm.README.md
- 这将是在 NPM 上看到的 readme。接下来,在package.json
中添加以下内容(其中省略了某些内容)。
{
...
"scripts": {
...
"build": "...",
"use:npmReadme": "mv 'README.md' 'git.README.md' && mv 'npm.README.md' 'README.md'",
"use:gitReadme": "mv 'README.md' 'npm.README.md' && mv 'git.README.md' 'README.md'",
"prepublishOnly": "run-s build use:npmReadme",
"postpublish": "npm run use:gitReadme"
},
"dependencies": {
...
},
"devDependencies": {
...
"npm-run-all": "^4.1.2",
...
}
}
use:npmReadme
- 这只是备份当前 git 特定的 readme,然后将 npm.README.md
重命名为默认的 README.md
。use:gitReadme
- 这只是将 git 特定的 readme 恢复为默认的 README.md
。npm publish
时运行(不会随 npm install
运行)。use:npmReadme
。
postPublish
该脚本在软件包发布到 npm 后执行。use:gitReadme
,将 readme 文件恢复到其原始状态。keshav.bahadoor的回答启发了我在GitHub工作流中使用类似的方法。
我将其用于以下方面:
- uses: actions/checkout@v2
...
- run: mv NPM-README.md README.md
...
- run: npm publish --access public
NPM-README.md
到README.md
,并不提交。(更好的方案) 如果我们将 npm
的自述文件命名为 README.md
,将 GitHub
的自述文件命名为 readme.md
。那么我们可以将 readme.md
添加到 npm 的忽略文件 .npmignore
中,并将 README.md
添加到 gitignore 的忽略文件 .gitignore
中。
(不太好的方案) 添加 npm.README.md
和 git.README.md
。在提交或发布 git 或 npm 时删除 npm.
或 git.
。
├── cli
│ ├── index.js
│ ├── package.json
│ └── README.md
│
├── libsquoosh
│ ├── index.js
│ ├── .npmignore
│ ├── package.json
│ └── README.md
│
├── src
│ └── index.js
│
├── package.json
└── README.md
src
目录中,您可以通过以下方式正常导入库:import x from ../mySubdir/index.js
import x from @namespace/mySubdir
src
目录不会被发送到NPM,只有这两个子目录会被发送,它们都有自己完全不同的README文件。与此同时,git根目录还有第三个README文件。
请注意,尽管这些子目录是一个较大项目的一部分,但它们各自都有自己的package.json
和.npmignore
文件。
这样做可以实现与在NPM上上传与git项目根目录中所见不同的内容相同的效果,同时还可以免费提供清晰的分层组织。