LaravelPackagist和PHP生态系统

本教程由 ](https://bugsnag.com/?utm_source=laravelnews&;utm_media=>(https://styleci.io/)创始人。这是关于使用Composer的最佳实践的两部分系列中的第二篇博客。阅读第一篇关于[使用Composer构建可维护的PHP应用程序]的博客(https://blog.bugsnag.com/best-practices-using-composer/?utmu source=laravelnews&;utmu medium=cpc&;utmu content=packagist php&;utmu campaign=>在上一篇博文中,我们看到了Composer的基础知识,但跳过了它在哪里实际找到包,以及如何发布自己的包。在这篇博文中,我们将详细介绍这一点,以及在应用程序中使用composer时的一些安全注意事项。什么是Packagist? Packagist是Composer的主要包存储库。在这里您可以发布您的包,也可以查看其他人的包。默认情况下,Composer将使用Packagist查找包,但是,更高级的用户可以根据自己的意愿进行自定义。您可能希望自定义它的一个原因是使用私有包。有关更多详细信息,请参阅存储库上的composer文档。通过Packagist分发您的软件包 好的,因此您一直在开发新的软件包,您希望发布它,这样不仅您可以使用它,而且其他人也可以查看您的作品!要发布您的软件包,请访问https://packagist.org/packages/submit,并提供代码的URL,无论是在GitHub、Bitbucket、Gitlab上还是在其他地方。 幸运的是,发布包版本非常简单。你所需要做的就是用git做一个标签,你就可以开始了。您不应该在编写器.json文件。 要搜索类似的包,并查看您自己的列表吗?您可以在Packagist网站上浏览所有公开可用的软件包。软件包许可 许可证字段是可选的,但最好设置此字段,以便人们知道是否以及如何使用您的软件包。在此处键入可读的许可证名称而不是实际的\"许可证标识符\"是一个常见错误。您可以在这里找到可能的许可证列表。如果您的代码使用专有许可证,也允许使用\"专有\"作为许可证标识符。一些常见的许可证有Apache-2.0、BSD-2-Clause、BSD-3-Clause、GPL-2.0、GPL-3.0和MIT。 Composer实际上可以告诉您所有依赖项的许可证。只需运行licenses命令: 1composer licenses 这将输出如下内容: 开发版本 因此,您正在为您的软件包开发一个伟大的新功能,并希望对其进行测试。但有一个问题:您希望能够在不标记发布的情况下加载更改,因为您还没有准备好发布。有几种方法可以使用: 1. 将分支别名添加到包中编写器.json, 2. 直接引用应用程序中的分支名称编写器.json.分支别名 这些自动表示您可以将分支与dev包版本相关联! 假设您正在主分支上开发2.0.0版本,并且希望能够在标记该版本之前安装它。一个很好的方法是将主分支别名为版本\"2.0.x-dev\"。 在应用程序中,您可以通过使用版本约束\"2.0.*@dev\"或类似的内容来访问2.0开发版本。 事实上,composer非常聪明,可以查看分支名称,并确定它与哪个版本相关联。例如,如果您将一个分支命名为\"2.0\",那么composer会将其视为代表最新的\"2.0.x-dev\"版本。 最后,我会注意到,通过在应用程序中设置以下内容,您实际上可以避免在依赖项上指定稳定性编写器.json文件: 这将告诉作曲家您对此感到高兴如果需要,可以将\"^2.0\"或\"2.0.*\"解析为开发版本,但如果可以,您希望它解析为稳定版本。直接引用分支名称 如上所述,访问新代码的另一种方法是直接将分支名称用作版本。这在处理特定的新特性时非常有用,而不是希望测试某些合并的更改。要安装一个名为\"new feature\"的分支,您将需要版本约束\"dev new feature\"。安全注意事项 回想一下我上一篇博客文章中,Composer留下的编写器.lock\"在你的回购文件。对于应用程序,提交此文件非常有用,因为它将依赖项锁定在已知状态,从而使您可以细粒度地控制applic到底部署了哪些包特别是,它将允许您防止依赖关系意外中断更改或引入错误。当然,这些可能会对应用程序的安全性产生影响。 实际上,我们可以进一步检查已解决的依赖项集是否存在已知的安全问题。SensioLabs提供检查您的编写器.lock已知安全漏洞的文件: 用于检查的数据库可在GitHub上公开获取,网址: https://github.com/FriendsOfPHP/security-advisories。最后,还可以注册私有包存储库和代理包装师.org通过它,有付费服务/解决方案可供您使用。保持最新版本 我们已经看到了为保持最新安全性而提供的功能和工具。但是,如果作者不再支持您的软件包版本,它们将不会向您显示,并且也不会显示是否有版本限制限制您安装的较新版本。 幸运的是,Composer提供了一个简单的命令,您可以运行该命令来显示已安装的软件包版本,最新版本是什么。如果我在几个星期前安装依赖项的示例repo上运行***1***,我们已经可以看到有可用的更新: 主要更新显示为红色,次要更新显示为黄色。通常情况下,直接升级到次要版本是安全的;但是,您应该始终小心了解每个依赖项的版本控制策略,并且您可能还想自己去查看更改。 您可以运行***2***更新到版本约束允许的最新依赖项,您还可以修改版本限制以访问较新的版本。 最后,我应该注意,您可以使用\"composer self update\"更新composer本身。结论 我们已经看到composer提供了更强大的功能,以及如何在Packagist上发布包。您现在可以放心地发布应用程序,知道您的依赖项是最新的,并且没有已知的安全漏洞。 了解有关使用Bugsnag监视和报告PHP应用程序错误的更多信息。

CSS无头WordPress到底有多合适?

我想知道无头WordPress会在哪里登陆。\"headless\"指的是只使用WordPress管理,通过WordPress restapi构建面向用户的站点,而不是传统的WordPress主题结构?WordPress的未来?还是相对利基?需求在哪里?当然,对它有需求。我知道很多人都这么做。例如,Gatsby有一个gatsby-source-wordpress插件,它允许您以使用wordpressrestapi的方式从WordPress站点获取内容,并将其缓存为GraphQL,以便在React-power...

日期:2021-06-24 01:15:34 浏览:623

CSS制作带有粘性页眉和页脚的表格变得更容易了

不久前,当我在博客中看到HTML中的粘性页眉和页脚时,一个表同时有粘性页眉和粘性第一列。在它里面,我从来没有在任何、或元素上使用position: sticky,因为即使Safari和Firefox可以做到这一点,Chrome也做不到。但是它可以做表格单元格,比如和,这是一个相当不错的解决办法。好吧,这已经改变了。我通过Twitter听说Chrome在v91中\"重写了表格\"。https://t.co/vTBplXWWtT我看到它掉了下来,升级了,然后做了一个快速测试。嘿,看看有粘性的表格页眉和页脚。@C...

日期:2021-06-24 02:00:01 浏览:939

CSS技巧编年史XXXX

只是我最近做的一些非现场工作的一个小链接汇总。就像我习惯的那样。DevJourney播客#151 Chris Coyier从陶瓷到CSS技巧和代码笔\"Chris带我们从玩他的第一个C64到他的陶瓷文学学士,再回到web开发。我们讨论了他在这一过程中的不同立场,以及他们是如何缓慢但肯定地引导他走向web开发的。我们浏览了CSS技巧的创造和娱乐,在开放中学习,以及美好的一天是什么样子。Podrocket Podcast火箭手术:Kaelan和Chris Coyier比较笔记我被要求删除这里嵌入的音频,如果你想...

日期:2021-06-24 02:00:03 浏览:864

CSS使用子资源完整性保护您的网站

当您从外部服务器加载文件时,您相信您请求的内容是您期望的内容。由于您不自己管理服务器,因此您依赖于另一个第三方的安全性,从而增加了攻击面。信任第三方并不是天生的坏事,但它肯定应该在网站安全的背景下加以考虑。一个真实的例子这不是纯粹的理论危险。忽视潜在的安全问题可能而且已经造成严重后果。2019年6月4日,Malwarebytes宣布他们在网站上发现了一个恶意的略读程序NBA.com. 由于Amazon S3存储桶受损,攻击者能够修改JavaScript库以窃取客户的信用卡信息。值得担心的不仅仅是JavaSc...

日期:2021-06-24 02:00:03 浏览:767

CSS联合的可能性

这是首字母缩略词RSS中不是形容词的一个词。非常简单联合更新:Lol这里有两个错误。RSS是首字母缩写而不是首字母缩写,\"Really\"是副词而不是形容词。RSS不仅仅是RSS阅读器。尽管如此,如果我不喜欢RSS阅读器。它是关于把内容放在一种设计成可移植的格式。内容的API并不是一个隐喻,这就是它的字面含义。RSS一直在我的脑海中,因为它就像我的日报,但我敢打赌它并不是人们关注的最高峰,甚至是开发者。尽管如此,它还是受到了一点关注,因为谷歌在androidchrome中引入了一个\"following\...

日期:2021-06-24 03:00:02 浏览:596

CSS在开放细节元素上添加背景

关于元素有一点奇怪,那就是,当它打开时,并不总是100%清楚该元素内部的内容和不内部的内容。我不是说总是重要,或者说它是一个特别难解决的问题,我只是注意到它最近出现在我身上。这里有一个直观的例子:这里的文本在里面,什么不是?这个解决方案是…CSS。把的样式设计得有点独特,这样问题就解决了。即使你希望排版是一样的,或者你不想任何独家风格,直到被打开,这仍然是可能的。使用alpha透明填充,您甚至可以确保更深的嵌套保持清晰。对于只插入内联内容的<详细信息>(如\"spoiler\"UI或其他内容),...

日期:2021-06-24 03:00:04 浏览:763

CSS容器查询的聚宝盆

我不知道是什么原因,但是我的feed在过去的几周里充斥着关于CSS容器查询的文章。有关集装箱查询的热议实际上始于去年12月,当时米丽亚姆•苏珊娜(Miriam Suzanne)发布了一份提案(采纳了大卫•巴隆的提案),但3月底,Una Kravets在推特上发布的一条消息称,他们在chrome://flags的#enable-container-queries旗后投放了Chrome Canary 91.0.4459.0在如此短的时间内,容器查询已经覆盖了如此多的地方,而且规范甚至还不是最终的!我很高兴看到C...

日期:2021-06-24 03:00:04 浏览:920

CSS target=blank

那会不会让你的眼睛有点抽搐?就像…是打字错误。值的开头应该是带有下划线的>。就像…Welp, that\"s correct syntax!In the case of the no-underscore>, the blank部分只是一个名称。可能是任何东西。它可以是>,或者,可能是为了预示这里的目的:>。是一个特殊的关键字,它将在新选项卡中打开链接,每次都打开一个新选项卡。>将在新选项卡中打开第一个单击的链接,但任何共享>的链接都将在新打开的选项卡中打开。我从来不知道这一点!我相信这条微博的解释。我创建...

日期:2021-06-24 04:00:02 浏览:1004

CSS查看WCAG 2.5.5以获得更好的目标尺寸

你有没有经历过这样的挫折:试图点击移动设备上的一个按钮却什么也不做,因为目标大小不够大,而且它在你的按键上不起作用?也许你有更大的手指,像我一样,也可能是由于灵活性有限。这是因为我们,即用户,必须与之交互的元素的目标区域越来越小,我们来谈谈如何使其足够大,以便用户能够轻松地与元素交互。如果用户在一个小型手持式触摸屏设备上访问内容,而这个设备的不动产要紧得多,那么这将是一个特别大的问题。成功标准重温我在上一篇涉及WCAG 2.1标准的文章中谈到了成功标准,Label in Name。简言之,WCAG标准是我们...

日期:2021-06-24 04:00:03 浏览:544

CSS Trickz:Netlify随需应变构建器的实验

默认情况下,WordPress站点有一个API。想看看这个网站的最新帖子吗,只是一组特定的数据…JSON格式?给你。Alex Riviere用它做了一个笑话站点。起初,当加载该API客户端时,该站点将fetch。很好,但是如果我们认真考虑一下,它对于访问站点的人来说是非常低效的(也就是说,比服务器呈现的HTML慢),对于API命中率也不是很高。所以,Alex用Netlify函数重新编写了它。然后Netlify函数将从API中fetch(在云中的节点中),并为预呈现的HTML提供服务。这可能更好一些,但正如亚...

日期:2021-06-24 04:00:04 浏览:592