首页 > 解决方案 > Symfony 4 中不使用 node.js 的 Webpack Encore 的替代方案

问题描述

我从 3.x 时代开始就一直在使用 Symfony,并希望在 4.x 上创建新站点。乍一看似乎还可以(仅查看演示站点),但是,我不喜欢 webpack encore 的想法。

当我安装演示时,由于项目所在的子文件夹导致链接被搞砸了,我发现这是因为我需要更新 webpack encore 中的设置,但是,我无法部署更改,因为我没有安装 node.js,我运行 apache。

目前大多数 cpannel 托管都不支持 node.js,所以依赖 node.js 似乎很愚蠢!我知道我可以在本地服务器上进行部署,然后将部署的版本发送到在线服务器,但这可能只是在问问题,我想在类似于生产环境的环境中进行所有开发。

正因为如此,我正在研究 Symfony 4 中的选项来进行资产管理,它不需要像 node.js(甚至是 yarn)这样的另一个服务器环境。我过去使用过assetic,但在Symfony 4 中已经放弃了对它的支持。我想要一些易于设置和使用的东西。

标签: phpsymfonywebpackassets

解决方案


如果您对 node.js 的东西不满意(这是可以理解的),您仍然可以使用资产。

来自 symfony 的文档:

Assetic 是一个纯 PHP 库,有助于处理和优化您的资产(类似于 Encore)。即使我们推荐使用 Encore,Assetic 仍然很好用

参考链接:https ://symfony.com/doc/current/frontend.html

缺点是你不能确定它是否仍然适用于 SF 的下一个专业更新,我同意,但未来可能会出现新的解决方案,因为你不是唯一一个抱怨它的人。


为了跟进您的评论,使用assets配置部分让他在您想要的任何地方获取文件,我正在考虑类似(赋予文件夹适当的权限):

assetic:
/* ... */
    read_from:        %kernel.root_dir%/../build
    write_to:         %kernel.root_dir%/../build
/* ... */
    assets:
        common:
            inputs:
                - %kernel.root_dir%/../assets/js/your_file1.js
                - %kernel.root_dir%/../assets/js/your_file2.js
        isolatedFileExample:
            inputs:
                - %kernel.root_dir%/../assets/js/your_file3.js

虽然没有测试,但请让我们更新您的测试。可能有点意思。


推荐阅读