keaton/webpack-migration-bundle-3

帮助从Assetic迁移到Webpack的打包工具

0.2.3 2017-12-18 21:11 UTC

This package is not auto-updated.

Last update: 2024-09-29 06:02:27 UTC


README

帮助从 assetic 集成到 webpack 的打包工具。

它使用 maba/webpack-bundlesymfony/assetic-bundle 作为依赖。

它在您的存储库中创建和修改文件。这意味着它不应用于生产环境 - 安装它,使用它,然后从项目中移除它。始终确保使用版本控制系统如git,并且没有未提交的更改,以免丢失数据。

Webpack是什么?为什么从Assetic迁移?

Webpack是模块打包器和CommonJS / AMD依赖管理器。

对我来说,它取代了grunt/gulp和RequireJS。

有关更多信息,请参阅Webpack是什么?其文档

要比较Assetic和基于Webpack的替代方案,请参阅maba/webpack-bundle

这个打包工具做什么?

  1. 在您的twig模板中找到assetic节点(stylesheetsjavascripts节点)。
  2. 输出代表打包资源的js文件。
  3. 用指向输出文件的webpack_asset函数替换它们。
  4. 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

它们被忽略,因为默认情况下,在生成环境中对jscss文件进行了压缩,并且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方式导出。

这会导致问题,因为您当前的代码期望在全局范围内找到 jQueryangular 等库。

此包分析 JavaScript 文件以查找常见模式,并尝试使用正确的加载器来解决这些问题。但这并不总是能够直接解决问题。您可以始终使用额外的加载器或修改生成的代码——包仅创建和替换您的存储库中的文件,之后对代码的所有其他修改都可以手动进行。

运行替换命令

app/console maba:webpack-migration:modify-twig-templates

现在您的 twig 文件已被修改——您可以安全地从内核和 vendors 中移除这两个包(这个和 MabaTwigTemplateModificationBundle)。您只需在 AppKernel.phpcomposer.jsoncomposer.lock 中撤销更改,确保您已单独安装 MabaWebpackBundle。

运行测试

Travis status

composer install
vendor/bin/phpunit