{"pageContext":{"index":17,"total":364,"name":"2019-09-01","items":[{"node":{"frontmatter":{"title":"atlas-简单易用的DNS服务支持docker","publish":true,"cover":"","showCover":true,"date":"2019-09-01","category":"devops","url":"https://github.com/stellarproject/atlas","author":"Stellar Project 编辑 Ka","translator":"","tags":["dns"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"dayz react类似谷歌日历组件","publish":true,"cover":"https://camo.githubusercontent.com/a503d95bcf10b917ec914a9d64e0cd805b15b35f/687474703a2f2f6e617468616e73746974742e6769746875622e696f2f6461797a2f6461797a2d7765656b6c792d73637265656e73686f742e706e67","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://github.com/nathanstitt/dayz","author":"Stellar Project 编辑 Ka","translator":"","tags":["react"],"priority":1},"html":"<p><a href=\"http://nathanstitt.github.io/dayz/\">在线demo</a></p>"}},{"node":{"frontmatter":{"title":"fabulous-vscode 样式界面编辑插件","publish":true,"cover":"https://camo.githubusercontent.com/12e05ae80ab82bd927d5c2b131f0bf7284925591/68747470733a2f2f616666656374696f6e6174652d626f6f74682d3130613166342e6e65746c6966792e636f6d2f62616e6e65722e706e67","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://github.com/Raathigesh/fabulous","author":"Raathi Kugarajan 编辑 Ka","translator":"","tags":["vscode"],"priority":1},"html":"<p>使用界面编辑 css，支持 scss,css,js, jsx, tsx, component.ts, vue or svelte 文件。当选中 css 块时即可编辑。</p>"}},{"node":{"frontmatter":{"title":"mediapipe-谷歌开源物体识别框架","publish":true,"cover":"https://github.com/google/mediapipe/raw/master/mediapipe/docs/images/mobile/hair_segmentation_android_gpu_small.gif","showCover":true,"date":"2019-09-01","category":"ai","url":"https://github.com/google/mediapipe/","author":"Google 编辑 Ka","translator":"","tags":["detection"],"priority":1},"html":"<p>四种实时解决方案:</p>\n<ul>\n<li>手部追踪（细化到手指）</li>\n<li>面部识别</li>\n<li>头发分割(Hair Segmentation)</li>\n<li>物体识别</li>\n</ul>"}},{"node":{"frontmatter":{"title":"github-actions配合CI","publish":true,"cover":"https://radu-matei.com/img/article-photos/building-github-actions//actions-logo.png","showCover":true,"date":"2019-09-01","category":"devops","url":"https://radu-matei.com/blog/building-github-actions/","author":"RADU M 编辑 Ka","translator":"","tags":["github"],"priority":1},"html":"<ul>\n<li>对于公有仓库免费</li>\n<li>支持直接引入 NodeJS, Python, 或 Java。</li>\n<li>支持两种 action, javascript action(本文主要介绍这一种) 和<a href=\"https://github.com/actions/toolkit/blob/master/docs/container-action.md\">docker action</a></li>\n<li>默认整合 git</li>\n<li>action 支持下载，获得用户输入，执行命令，文件操作</li>\n<li>-</li>\n</ul>"}},{"node":{"frontmatter":{"title":"nutshell-基于RUST的shell，支持windows","publish":true,"cover":"https://github.com/nushell/nushell/raw/master/images/nushell-autocomplete4.gif","showCover":true,"date":"2019-09-01","category":"devops","url":"https://github.com/nushell/nushell","author":"nutshell 编辑 Ka","translator":"","tags":["shell"],"priority":2},"html":"<p>输入一个命令，首先会找自己实现的shell，如果找不到，则找系统自带的（cmd(windows),shell(linux/MacOS)）</p>"}},{"node":{"frontmatter":{"title":"radialMenu炫酷圆形菜单","publish":true,"cover":"https://github.com/victorqribeiro/radialMenu/raw/master/screenshot.png","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://github.com/victorqribeiro/radialMenu","author":"Victor Ribeiro","translator":"","tags":["menu"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react-data-table-component 表格组件","publish":true,"cover":"","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://github.com/jbetancur/react-data-table-component","author":"John Betancur 编辑 Ka","translator":"","tags":["react"],"priority":1},"html":"<p><a href=\"https://jbetancur.github.io/react-data-table-component/?path=/story/basic--sortable-custom-sort\">在线demo</a>\n支持主题</p>"}},{"node":{"frontmatter":{"title":"monolith-rust工具以dataurl形式保存网页所有资源成单独网页","publish":true,"cover":"","showCover":true,"date":"2019-09-01","category":"web","url":"https://github.com/Y2Z/monolith","author":"Y2Z tools 编辑 Ka","translator":"","tags":["rust"],"priority":1},"html":"<p><a href=\"https://developer.mozilla.org/zh-CN/docs/Web/HTTP/data_URIs\">dataurls格式</a></p>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\">$ <span class=\"token function\">git</span> clone https://github.com/Y2Z/monolith.git\n$ <span class=\"token function\">cd</span> monolith\n$ cargo <span class=\"token function\">install</span> --path <span class=\"token keyword\">.</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"npm,yarn,pnpm比较","publish":true,"cover":"","showCover":true,"date":"2019-09-01","category":"nodejs","url":"https://blog.nicco.io/2019/08/27/going-beyond-npm-meet-yarn-pnpm","author":"Niccolo Borgioli 编辑 Ka","translator":"","tags":["npm"],"priority":1},"html":"<table>\n<thead>\n<tr>\n<th></th>\n<th><strong>Speed</strong></th>\n<th><strong>NPX</strong></th>\n<th><strong>Offline</strong></th>\n<th><strong>Well supported</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>npm</td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/1f40c.svg\" alt=\"🐌\"></td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/2705.svg\" alt=\"✅\"></td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/2705.svg\" alt=\"✅\"></td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/2705.svg\" alt=\"✅\"></td>\n</tr>\n<tr>\n<td>yarn</td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/1f684.svg\" alt=\"🚄\"></td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/274c.svg\" alt=\"❌\"></td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/2705.svg\" alt=\"✅\"></td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/2705.svg\" alt=\"✅\"></td>\n</tr>\n<tr>\n<td>pnpm</td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/1f680.svg\" alt=\"🚀\"></td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/2705.svg\" alt=\"✅\"></td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/2705.svg\" alt=\"✅\"></td>\n<td><img src=\"https://s.w.org/images/core/emoji/12.0.0-1/svg/274c.svg\" alt=\"❌\"></td>\n</tr>\n</tbody>\n</table>"}},{"node":{"frontmatter":{"title":"postgres 行级别安全","publish":true,"cover":"","showCover":true,"date":"2019-09-01","category":"database","url":"https://www.cybertec-postgresql.com/en/postgresql-row-level-security-views-and-a-lot-of-magic/","author":"Hans-Jürgen Schönig","translator":"","tags":["postgres"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"sql\"><pre class=\"language-sql\"><code class=\"language-sql\"><span class=\"token comment\">-- 启用</span>\n<span class=\"token keyword\">ALTER</span> <span class=\"token keyword\">TABLE</span> t_service <span class=\"token keyword\">ENABLE</span> <span class=\"token keyword\">ROW</span> <span class=\"token keyword\">LEVEL</span> SECURITY<span class=\"token punctuation\">;</span>\n<span class=\"token comment\">-- 指定数据给用户</span>\n<span class=\"token keyword\">CREATE</span> POLICY bob_pol <span class=\"token keyword\">ON</span> t_service\n    <span class=\"token keyword\">FOR</span> <span class=\"token keyword\">SELECT</span>\n    <span class=\"token keyword\">TO</span> bob\n    <span class=\"token keyword\">USING</span> <span class=\"token punctuation\">(</span>debug_me<span class=\"token punctuation\">(</span>service<span class=\"token punctuation\">)</span> <span class=\"token operator\">AND</span> service_type <span class=\"token operator\">=</span> <span class=\"token string\">'open_source'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"react-layouts react布局，复制即用","publish":true,"cover":"","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://react-layouts.com","author":"OSLabs Beta 编辑 Ka","translator":"","tags":["react"],"priority":1},"html":"<p>例子包含三个样式框架\n<a href=\"https://rebassjs.org/\">Rebass</a>, <a href=\"https://theme-ui.com/\">Theme UI</a>, 和 <a href=\"https://emotion.sh/\">Emotion</a>.</p>"}},{"node":{"frontmatter":{"title":"使用 AWS CodePipeline 部署 Docker 容器实现 DevOps","publish":true,"cover":"","showCover":true,"date":"2019-09-01","category":"devops","url":"https://www.infoq.cn/article/YSlzqtkJiot1Wm43RNmz","author":"Deepak Vohra 译者 张卫滨","translator":"","tags":["aws"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"tailwind.run-在线 tailwindcss 布局","publish":true,"cover":"https://github.com/victorqribeiro/radialMenu/raw/master/screenshot.png","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://tailwind.run","author":"编辑 Ka","translator":"","tags":["css"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react-webcam react摄像头组件","publish":true,"cover":"https://github.com/mozmorris/react-webcam/raw/master/Logotype%20primary.png","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://github.com/mozmorris/react-webcam","author":"Moz Morris 编辑 Ka","translator":"","tags":["react"],"priority":1},"html":"<p><a href=\"https://caniuse.com/#feat=stream\">浏览器支持列表</a></p>\n<p>支持<a href=\"https://github.com/mozmorris/react-webcam#methods\">拍照</a></p>"}},{"node":{"frontmatter":{"title":"使用 ndb 调试你的 Node.js 项目","publish":true,"cover":"https://user-images.githubusercontent.com/39191/43023843-14a085a6-8c21-11e8-85b7-b9fd3405938a.png","showCover":true,"date":"2019-09-01","category":"nodejs","url":"https://zhuanlan.zhihu.com/p/41315709","author":"怡红公子","translator":"","tags":["debug"],"priority":1},"html":"<p>相对于 node 自带调试器，<a href=\"https://github.com/GoogleChromeLabs/ndb\">ndb</a>为我们带来了如下一些特性：</p>\n<ul>\n<li>子进程自动检测和调试接入</li>\n<li>支持在模块加载前进行断电</li>\n<li>支持在调试工具中直接编辑文件，保存后自动更新到本地文件</li>\n<li>默认情况下，ndb 会对引用的所有项目文件夹外的脚本开启黑盒模式让我们能更专注业务代码。项目文件夹外的脚本包括 Node.js 自带的模块文件（例如 _stream<em>wrap.js, async</em>hooks.js, fs.js 等）。当然你可以在设置中修改“Blackbox anything outside working dir”配置来关闭这个功能。</li>\n</ul>\n<h2 id=\"两个问题：\"><a href=\"#%E4%B8%A4%E4%B8%AA%E9%97%AE%E9%A2%98%EF%BC%9A\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>两个问题：</h2>\n<h3 id=\"首先要确保你的-nodejs-环境--800\"><a href=\"#%E9%A6%96%E5%85%88%E8%A6%81%E7%A1%AE%E4%BF%9D%E4%BD%A0%E7%9A%84-nodejs-%E7%8E%AF%E5%A2%83--800\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>首先要确保你的 Node.js 环境 >= 8.0.0</h3>\n<h3 id=\"由于-ndb-依赖-puppeteer-安装过程中会去下载-chromium170mb-mac-280mb-linux-280mb-win。\"><a href=\"#%E7%94%B1%E4%BA%8E-ndb-%E4%BE%9D%E8%B5%96-puppeteer-%E5%AE%89%E8%A3%85%E8%BF%87%E7%A8%8B%E4%B8%AD%E4%BC%9A%E5%8E%BB%E4%B8%8B%E8%BD%BD-chromium170mb-mac-280mb-linux-280mb-win%E3%80%82\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>由于 ndb 依赖 Puppeteer 安装过程中会去下载 Chromium(~170MB Mac, ~280MB Linux, ~280MB Win)。</h3>"}},{"node":{"frontmatter":{"title":"实时协议框架 Feathers 4 发布","publish":true,"cover":"https://miro.medium.com/max/6859/1*QfvF2iXdkTDMT1NWrqNRSA.png","showCover":true,"date":"2019-09-01","category":"nodejs","url":"https://blog.feathersjs.com/introducing-feathers-4-a-framework-for-real-time-apps-and-rest-apis-afff3819055b","author":"David Luecke 编辑 Ka","translator":"","tags":["realtime"],"priority":2},"html":"<p>Feathers 可以用一种协议(Feathers)派生出 REST APIs,websocket(socket.io),甚至 HTTP2 或 GraphQL 不需要改动你的代码。</p>\n<p>Feathers 不像 MVC 那样创建路由，而是使用 service 以及 hooks 工作流来组织。</p>\n<p>其友好地支持 typescript 以及验证。</p>"}},{"node":{"frontmatter":{"title":"游戏-飞翔的鸡蛋(Aero Egg)","publish":true,"cover":"https://blog.kazge.com/assets/volitantegg-show.gif","showCover":true,"date":"2019-06-12","category":"game","url":"https://blog.kazge.com/show/volitantegg/%E9%A3%9E%E7%BF%94%E7%9A%84%E9%B8%A1%E8%9B%8B.apk","author":"广告","translator":"","tags":["ads"],"priority":1},"html":"<p><a href=\"https://itunes.apple.com/us/app/volitant-egg-ads-version/id1247264387?mt=8\">APP Store(非国内账户可下载)</a>\n<a href=\"https://blog.kazge.com/show/volitantegg/%E9%A3%9E%E7%BF%94%E7%9A%84%E9%B8%A1%E8%9B%8B.apk\">安卓 - 中文</a></p>"}},{"node":{"frontmatter":{"title":"使用font-variant-numeric控制数字字形","publish":true,"cover":"https://res.cloudinary.com/css-tricks/image/upload/c_scale,w_670,f_auto,q_auto/v1509143040/font-variant-numeric-numeric-figure_ze7vgx.png","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://css-tricks.com/almanac/properties/f/font-variant-numeric/","author":"Geoff Graham","translator":"","tags":["css"],"priority":1},"html":"<p><a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant-numeric\">font-variant-numeric</a></p>"}},{"node":{"frontmatter":{"title":"开源项目的薪资","publish":true,"cover":"https://staltz.com/img/poverty-popularity.png","showCover":true,"date":"2019-09-01","category":"opensource","url":"https://feross.org/funding-experiment-recap/","author":"Feross Aboukhadijeh 编辑 Ka","translator":"","tags":["git"],"priority":1},"html":"<p>简言之，大部分低的可怜。</p>\n<h2 id=\"资金来源\"><a href=\"#%E8%B5%84%E9%87%91%E6%9D%A5%E6%BA%90\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>资金来源</h2>\n<ul>\n<li><a href=\"https://feross.org/introducing-thanks/\">thanks</a></li>\n<li><a href=\"https://www.patreon.com/feross\">Patreon</a></li>\n<li><a href=\"https://tidelift.com/subscription/pkg/npm-standard?utm_source=npm-standard&#x26;utm_medium=readme\">Tidelift</a></li>\n<li><a href=\"https://github.com/users/feross/sponsorship\">GitHub Sponsors</a></li>\n</ul>"}},{"node":{"frontmatter":{"title":"渐进式jpeg图像加载","publish":true,"cover":"https://res.cloudinary.com/indysigner/image/fetch/f_auto,q_auto/w_2000/https://cloud.netlifyusercontent.com/assets/344dbf88-fdf9-42bb-adb4-46f01eedd629/0c90dd38-e073-462e-b57e-f29029358bc9/structure-baseline.png","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://www.smashingmagazine.com/2019/08/faster-image-loading-embedded-previews/","author":"Christoph Erdmann 编辑 Ka","translator":"","tags":["css"],"priority":1},"html":"<p>渐进式jpeg(progressive JPEG)，将图片分成质量不同的段。通过Ajax 和 HTTP Range Requests可以分段加载图片显示轮廓。</p>"}},{"node":{"frontmatter":{"title":"教程-多玩家VR游戏","publish":true,"cover":"","showCover":true,"date":"2019-09-01","category":"frontend","url":"https://www.smashingmagazine.com/2019/08/real-time-multiplayer-virtual-reality-game-part-1/","author":"Alvin Wan","translator":"","tags":["game"],"priority":1},"html":"<ul>\n<li>使用<a href=\"https://aframe.io/\">A-Frame</a> VR模型</li>\n<li>使用<a href=\"https://github.com/alvinwan/mirrorvr\">MirrorVR</a> 跨设备同步</li>\n</ul>"}},{"node":{"frontmatter":{"title":"超级马里奥反编译源码","publish":true,"cover":"https://cdn.discordapp.com/icons/601153657966428193/86bece1b3531a7cedeb958f2ce5c6f27.png","showCover":true,"date":"2019-09-01","category":"game","url":"https://github.com/n64decomp/sm64","author":"Nintendo 64 Decompilation Projects 编辑 Ka","translator":"","tags":["git"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"想让你的文章出现在这里？","publish":true,"cover":"","showCover":true,"date":"2019-07-08","category":"frontend","url":"mailto:editor@zhouexin.com?subject=投稿!","author":"投稿","translator":"","tags":["editor"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"防护恶意 npm 生命周期脚本","publish":true,"cover":"","showCover":true,"date":"2019-09-01","category":"nodejs","url":"https://medium.com/@kyle_martin/understanding-and-protecting-against-malicious-npm-package-lifecycle-scripts-8b6129619d7c","author":"Kyle Martin 编辑 Ka","translator":"","tags":["npm"],"priority":1},"html":"<p><a href=\"https://docs.npmjs.com/misc/scripts\">npm 生命周期脚本</a>(npm package lifecycle scripts)例如 postinstall 可以用来进行任何操作，这带来了安全隐患，例如 eslint-scope 攻击导致用户的 npm 登录信息被获取。</p>\n<h2 id=\"防护\"><a href=\"#%E9%98%B2%E6%8A%A4\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>防护</h2>\n<h3 id=\"禁止执行其它脚本，容易误伤\"><a href=\"#%E7%A6%81%E6%AD%A2%E6%89%A7%E8%A1%8C%E5%85%B6%E5%AE%83%E8%84%9A%E6%9C%AC%EF%BC%8C%E5%AE%B9%E6%98%93%E8%AF%AF%E4%BC%A4\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>禁止执行其它脚本，容易误伤</h3>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> --ignore-scripts\nyarn add --ignore-scripts</code></pre></div>\n<h3 id=\"使用监视脚本执行工具-npm-viewscripts\"><a href=\"#%E4%BD%BF%E7%94%A8%E7%9B%91%E8%A7%86%E8%84%9A%E6%9C%AC%E6%89%A7%E8%A1%8C%E5%B7%A5%E5%85%B7-npm-viewscripts\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>使用<a href=\"https://www.npmjs.com/package/npm-viewscripts\">监视脚本执行工具</a> npm-viewscripts</h3>\n<div class=\"gatsby-highlight\" data-language=\"shell\"><pre class=\"language-shell\"><code class=\"language-shell\"><span class=\"token function\">npm</span> <span class=\"token function\">install</span> npm-viewscripts -g</code></pre></div>\n<h3 id=\"npm-audit\"><a href=\"#npm-audit\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>npm audit</h3>"}}]}}