在Lightning 2.1.7中,我们终于回答了一个长期存在的问题:如果我使用Composer管理我的代码库,我如何将前端JavaScript库引入我的站点?
这一直是一个棘手的问题。drupal.org并没有真正提供官方解决方案 – 需要JavaScript库的模块通常包含自己下载和提取所述库的说明。在某些情况下,库API可以提供帮助; 分发允许运送某些库。但是,如果您使用Composer构建站点,那么您或多或少都是靠自己构建的。
现在,Lightning团队决定增加对Asset Packagist的支持。这个有用的存储库充当了Composer与流行的NPM和Bower存储库之间的桥梁,这些存储库存储了数千个有用的前端和JavaScript包。在Composer项目中启用Asset Packagist后,您可以像这样安装Bower包(以Dropzone为例):
$ composer require bower-asset/dropzone
您可以轻松安装NPM包:
$ composer需要npm-asset / dropzone
要在项目中使用Asset Packagist,请将以下内容合并到composer.json中:
普雷斯托!您现在可以将Bower和NPM包添加到项目中,就像它们是普通的PHP包一样。好极了!然而…
通常,资产包将安装在供应商目录中,与任何其他Composer包一样。这可能不是你想要用前端JavaScript库做的事情 – 幸运的是,有一个特殊的插件可以用来在正确的位置安装库。请注意,您需要使用Composer 1.5(最近发布)或更高版本才能使用它; 运行composer self-update
如果您使用的作曲家的旧版本。
现在,将插件添加为依赖项:
$ composer需要oomphinc / composer-installers-extender
然后将以下内容合并到composer.json中:
"extra": { "installer-types": [ "bower-asset", "npm-asset" ], "installer-paths": { "path/to/docroot/libraries/{$name}": [ "type:bower-asset", "type:npm-asset" ] } }
现在,当您安装Bower或NPM软件包时,它将被放置在 docroot / libraries / NAME_OF_PACKAGE中。嘘 – 呀!
让我们面对现实吧 – 如果您使用Composer来管理您的Drupal代码库,并且您想要添加一些JavaScript库,那么Asset Packagist就会围绕这个块进行攻击。
但!请注意,这 – 将前端库添加到基于浏览器的应用程序 – 实际上是Asset Packagist适合的唯一用例。如果您正在为Node编写JavaScript应用程序,则应使用NPM或Yarn,而不是Composer!Asset Packagist并不意味着取代NPM或Bower,它不一定以与它们相同的方式解决依赖关系。所以明智地使用这种力量!
PS Lightning 2.1.7包含一个脚本,可以帮助您设置项目的composer.json以使用Asset Packagist。要运行此脚本,请切换到Lightning配置文件目录并运行:
$ composer run enable-asset-packagist