feat: add CONTRIBUTING.md document. efa51c0a06

This commit is contained in:
jaywcjlove
2022-09-28 18:41:02 +00:00
parent 821d0678cc
commit 15495f3dad
15 changed files with 672 additions and 238 deletions

View File

@ -45,7 +45,7 @@
<li>name 和 version 字段一起用于创建唯一ID</li>
</ul>
<p>如果没有 <code>name</code><code>version</code> 字段,您的包将无法安装</p>
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3>安装 <code>name</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2--><!--rehype:-->
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3>安装 <code>name</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
<pre class="language-sh"><code class="language-sh code-highlight"><span class="code-line line-number" line="1"><span class="token function">yarn</span> <span class="token function">add</span> <span class="token punctuation">[</span>包名<span class="token punctuation">]</span>
</span><span class="code-line line-number" line="2"><span class="token comment"># or</span>
</span><span class="code-line line-number" line="3"><span class="token function">npm</span> <span class="token function">install</span> <span class="token punctuation">[</span>包名<span class="token punctuation">]</span>
@ -64,7 +64,7 @@
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
</span></code></pre>
<p>帮助使用者了解包的功能的字符串,包管理器也会把这个字符串作为搜索关键词。</p>
</div></div></div><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>license</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2--><!--rehype:-->
</div></div></div><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>license</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2-->
<p>所有包都应该指定许可证,以便让用户了解他们是在什么授权下使用此包,以及此包还有哪些附加限制。</p>
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="2"> <span class="token property">"license"</span><span class="token operator">:</span> <span class="token string">"MIT"</span><span class="token punctuation">,</span>
@ -97,7 +97,7 @@
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
</span></code></pre>
<p>是包的项目主页或者文档首页。</p>
</div></div></div><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>repository</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2--><!--rehype:-->
</div></div></div><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>repository</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2-->
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="2"> <span class="token property">"repository"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
</span><span class="code-line line-number" line="3"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"git"</span><span class="token punctuation">,</span> <span class="token property">"url"</span><span class="token operator">:</span> <span class="token string">"https://github.com/user/repo.git"</span>
@ -128,7 +128,7 @@
</span><span class="code-line line-number" line="8"><span class="token punctuation">}</span>
</span></code></pre>
<p>作者信息,一个人。</p>
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3><code>contributors</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2--><!--rehype:-->
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3><code>contributors</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="2"> <span class="token property">"contributors"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
</span><span class="code-line line-number" line="3"> <span class="token punctuation">{</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"Your Friend"</span><span class="token punctuation">,</span> <span class="token property">"email"</span><span class="token operator">:</span> <span class="token string">"friend@xxx.com"</span><span class="token punctuation">,</span> <span class="token property">"url"</span><span class="token operator">:</span> <span class="token string">"http://friends-xx.com"</span> <span class="token punctuation">}</span>
@ -196,7 +196,7 @@
</span></code></pre>
<p>如果您的主声明文件名为 <code>index.d.ts</code> 并且位于包的根目录(<code>index.js</code>旁边),则不需要标记 <code>types</code> 属性,建议这样做。</p>
</div></div></div></div></div><div class="wrap"><div class="wrap-header h2wrap"><h2>打包包字段</h2><div class="wrap-body">
</div></div><div class="h2wrap-body"><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>esnext</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2--><!--rehype:-->
</div></div><div class="h2wrap-body"><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>esnext</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2-->
<p>完整的<a href="http://2ality.com/2017/04/transpiling-dependencies-babel.html">提案在这里</a>。 简短说明:</p>
<ul>
<li><code>esnext</code>ES模块中使用阶段4功能或更旧版本的源代码未编译。</li>
@ -240,7 +240,7 @@
<p>有一些特殊的脚本名称。 如果定义了 <code>preinstall</code> 脚本,它会在包安装前被调用。 出于兼容性考虑,<code>install</code><code>postinstall</code><code>prepublish</code> 脚本会在包完成安装后被调用。</p>
<p><code>start</code> 脚本的默认值为 <code>node server.js</code></p>
<p>参考文档:<a href="https://docs.npmjs.com/files/package.json#default-values">npm docs</a></p>
</div></div></div><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3>特定的 <code>scripts</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2--><!--rehype:-->
</div></div></div><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3>特定的 <code>scripts</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2-->
<p>对于以下脚本,<code>npm</code> 支持 <code>package.json</code> 文件的 <code>scripts</code> 默认命令字段:</p>
<ul>
<li><code>prepublish</code>: 在打包并发布包之前运行,以及在没有任何参数的本地 <code>npm</code> 安装之前运行。 (见下文)</li>
@ -280,7 +280,7 @@
<p>配置中的键作为环境变量公开给脚本(scripts)。</p>
</div></div></div></div></div><div class="wrap"><div class="wrap-header h2wrap"><h2>依赖描述类字段</h2><div class="wrap-body">
<p>你的包很可能依赖其他包。你可以在你的 <code>package.json</code> 文件里指定那些依赖。</p>
</div></div><div class="h2wrap-body"><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>dependencies</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2--><!--rehype:-->
</div></div><div class="h2wrap-body"><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>dependencies</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2-->
<p>这些是你的包的开发版和发布版都需要的依赖。</p>
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="2"> <span class="token property">"dependencies"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
@ -306,7 +306,7 @@
你可以指定一个确切的版本、一个最小的版本 (比如 <code>>=</code>) 或者一个版本范围 (比如 <code>>= ... &#x3C;</code>)。 包也可以指向本地的一个目录文件夹。
参考文档:<a href="https://docs.npmjs.com/cli/v8/configuring-npm/package-json#dependencies">npm docs</a>.
</p>
</div></div></div><div class="wrap row-span-2"><div class="wrap-header h3wrap"><h3>workspaces</h3><div class="wrap-body"><!--rehype:wrap-class=row-span-2--><!--rehype:-->
</div></div></div><div class="wrap row-span-2"><div class="wrap-header h3wrap"><h3>workspaces</h3><div class="wrap-body"><!--rehype:wrap-class=row-span-2-->
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="2"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"my-workspaces-powered-project"</span><span class="token punctuation">,</span>
</span><span class="code-line line-number" line="3"> <span class="token property">"workspaces"</span><span class="token operator">:</span> <span class="token punctuation">[</span>
@ -337,7 +337,7 @@
</span><span class="code-line line-number" line="5"><span class="token punctuation">}</span>
</span></code></pre>
<p>这些是只在你的包开发期间需要,但是生产环境不会被安装的包。</p>
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3><code>peerDependencies</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2--><!--rehype:-->
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3><code>peerDependencies</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="2"> <span class="token property">"peerDependencies"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
</span><span class="code-line line-number" line="3"> <span class="token property">"package-3"</span><span class="token operator">:</span> <span class="token string">"^2.7.18"</span>
@ -378,7 +378,7 @@
</span></code></pre>
</div></div></div></div></div><div class="wrap"><div class="wrap-header h2wrap"><h2>系统</h2><div class="wrap-body">
<p>你可以提供和你的包关联的系统级的信息,比如操作系统兼容性之类。</p>
</div></div><div class="h2wrap-body"><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>engines</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2--><!--rehype:-->
</div></div><div class="h2wrap-body"><div class="wrap col-span-2 row-span-2"><div class="wrap-header h3wrap"><h3><code>engines</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2 row-span-2-->
<p>指定使用你的包客户必须使用的版本,这将检查 <code>process.versions</code> 以及当前 <code>yarn</code> 版本。</p>
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="2"> <span class="token property">"engines"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
@ -411,7 +411,7 @@
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
</span></code></pre>
<p>如果你不想你的包发布到包管理器(npm 或者 私有包管理),设置为 <code>true</code></p>
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3><code>publishConfig</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2--><!--rehype:-->
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3><code>publishConfig</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
<p>这些配置值将在你的包发布时使用。比如,你可以给包打标签。</p>
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="2"> <span class="token property">"publishConfig"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
@ -429,7 +429,7 @@
</span><span class="code-line line-number" line="3"><span class="token punctuation">}</span>
</span></code></pre>
<p>请注意,如果你的 <code>package.json</code> 包含 <code>"flat": true</code> 并且其它包依赖你的包 (比如你在构建一个库,而不是应用) 其它那些包也需要在它们的 <code>package.json</code> 加上 <code>"flat": true</code>,或者在命令行上用 <code>yarn install --flat</code> 安装。</p>
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3><code>resolutions</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2--><!--rehype:-->
</div></div></div><div class="wrap col-span-2"><div class="wrap-header h3wrap"><h3><code>resolutions</code></h3><div class="wrap-body"><!--rehype:wrap-class=col-span-2-->
<pre class="language-json"><code class="language-json code-highlight"><span class="code-line line-number" line="1"><span class="token punctuation">{</span>
</span><span class="code-line line-number" line="2"> <span class="token property">"resolutions"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
</span><span class="code-line line-number" line="3"> <span class="token property">"transitive-package-1"</span><span class="token operator">:</span> <span class="token string">"0.0.29"</span><span class="token punctuation">,</span>