keaton / webpack-migration-bundle-3
帮助从Assetic迁移到Webpack的打包工具
Requires
- php: >=5.3.2
- maba/twig-template-modification-bundle: ^1.0.1
- maba/webpack-bundle: ^1.0.1
- symfony/assetic-bundle: ^2.6
- symfony/framework-bundle: ^2.6||^3
Requires (Dev)
- phpunit/phpunit: ^4.8
This package is not auto-updated.
Last update: 2024-09-29 06:02:27 UTC
README
帮助从 assetic 集成到 webpack 的打包工具。
它使用 maba/webpack-bundle 和 symfony/assetic-bundle 作为依赖。
它在您的存储库中创建和修改文件。这意味着它不应用于生产环境 - 安装它,使用它,然后从项目中移除它。始终确保使用版本控制系统如git,并且没有未提交的更改,以免丢失数据。
Webpack是什么?为什么从Assetic迁移?
Webpack是模块打包器和CommonJS / AMD依赖管理器。
对我来说,它取代了grunt/gulp和RequireJS。
有关更多信息,请参阅Webpack是什么?和其文档。
要比较Assetic和基于Webpack的替代方案,请参阅maba/webpack-bundle。
这个打包工具做什么?
- 在您的twig模板中找到assetic节点(
stylesheets
和javascripts
节点)。 - 输出代表打包资源的
js
文件。 - 用指向输出文件的
webpack_asset
函数替换它们。 - 在
config.yml
中输出配置的命名资源。
使用twig-template-modification-bundle替换twig模板本身。
值得注意的是,它确实支持assetic变量,但由于结果是可用的,因此从长远来看并不容易管理。请参阅其他方法,通过从javascript本身的条件加载来实现这一点。请参阅symfony-webpack-angular-demo以了解如何使用本地化完成此操作。
还值得注意的是,它忽略了images
assetic节点和其他具有未知过滤器的节点。您可以在config.yml
中通过提供maba_webpack_migration.ignored_filters
参数来配置要忽略的过滤器。
默认情况下,以下过滤器被忽略
- cssrewrite
- less
- lessphp
- scssphp
- sassphp
- jsqueeze
- uglifyjs
- uglifyjs2
- uglifycss
- yui_css
- yui_js
它们被忽略,因为默认情况下,在生成环境中对js
和css
文件进行了压缩,并且SCSS和Less文件可以正常工作。假设您使用正确的文件扩展名(例如,Less文件为.less
)。
安装和用法
composer require maba/webpack-migration-bundle
在AppKernel
内部
new Maba\Bundle\WebpackBundle\MabaWebpackBundle(), // if you don't have it already new Maba\Bundle\WebpackBundle\MabaTwigTemplateModificationBundle(), // dependency new Maba\Bundle\WebpackBundle\MabaWebpackMigrationBundle(),
webpack打包工具的设置文件(有关更多信息,请参阅maba/webpack-bundle)
app/console maba:webpack:setup
配置Webpack以将CSS提取到单独的文件中。这对于stylesheets
标签正常工作是必需的。
maba_webpack: config: parameters: extract_css: true
安装WebpackMigrationBundle使用的npm依赖项,这些依赖项在WebpackBundle中默认未安装
npm install imports-loader exports-loader expose-loader --save-dev
在Webpack上下文中,this
不是像添加普通<script>
标签时的window
,而是指向module.exports
。这由大多数库默认处理,在以这种模式运行时,不会在全局上下文(window
)中注册任何变量,它们只是以CommonJS方式导出。
这会导致问题,因为您当前的代码期望在全局范围内找到 jQuery
、angular
等库。
此包分析 JavaScript 文件以查找常见模式,并尝试使用正确的加载器来解决这些问题。但这并不总是能够直接解决问题。您可以始终使用额外的加载器或修改生成的代码——包仅创建和替换您的存储库中的文件,之后对代码的所有其他修改都可以手动进行。
运行替换命令
app/console maba:webpack-migration:modify-twig-templates
现在您的 twig 文件已被修改——您可以安全地从内核和 vendors 中移除这两个包(这个和 MabaTwigTemplateModificationBundle)。您只需在 AppKernel.php
、composer.json
和 composer.lock
中撤销更改,确保您已单独安装 MabaWebpackBundle。
运行测试
composer install vendor/bin/phpunit