Twig支持的非Laravel项目中的Laravel Mix

更新 :playlist-converter.me已售出,所有链接现在为playlist-downloader.com。

最近,在开发新的播放列表转换器前端时,我需要一种快速简便的解决方案来编译资产(编译Sass文件,减少用于生产的js代码…等)。 但是,由于我使用的是Twig的模板引擎,因此我还需要一个可以与其集成的解决方案。

我想到的第一件事是:

像Laravel那样做…

经过几次Google搜索,我发现了这一点: Laravel Mix ,以前是Elixir,这是Laravel使用的Webpack的PHP API包装器,使资产编译变得异常简单。

现在的问题是:如何在非Laravel项目中使用它? 好吧,这就是我如何做到的。

最初设定

首先,如果尚未定义,请初始化一个NPM项目。 为此,您将需要全局安装Node和NPM。

cd ProjectFolder/
npm init -y
npm i laravel-mix --save-dev
cp -r node_modules/laravel-mix/setup/** ./

那应该给你

  • node_modules /(如果您使用的是Git for VCS,请不要忘记将其添加到.gitignore中)
  • package.json
  • webpack.config.js
  • webpack.mix.js

接下来,您需要配置一些NPM实际的构建脚本,有关此(以及更多)的说明可以在Mix的Github安装选项中找到。

添加树枝支持

现在,如果我们要使用Laravel-mix的缓存清除解决方案(向已编译资产添加哈希以强制浏览器更新缓存,那么app.js可能会变成app.b2328beb0372c051d06d.js 。)我们需要一种获取方法新生成的资产名称,并将其添加到我们的HTML中。

我试图查找一些已经进行的Twig扩展,这使我想到了这个仓:Elixir-twig-extension。

但是,自201612月6日以来未进行过更新因此,使用Github fork的魔术,我重新编写了自己的扩展名并命名为…等待它.. Laravel-Mix Twig扩展名。

安装扩展

您可以简单地使用Composer:

composer require stormiix/laravel-mix-twig-extension:dev-master

注册扩展

 使用Stormiix \ Twig \ Extension \ MixExtension; 

$ mix =新的MixExtension(
$ publicDir,//绝对公共目录
$ manifestName //清单文件名(默认值为'mix-manifest.json')
);
$ twig-> addExtension($ mix);

使用扩展

   

最初发表于 Anas Mazouni