bentools/webpack-encore-resolver

Webpack Encore 的独立路径解析器

0.1 2019-12-11 10:21 UTC

This package is auto-updated.

Last update: 2024-09-04 06:02:32 UTC


README

Latest Stable Version License Build Status Coverage Status Quality Score Total Downloads

Webpack Encore 解析器

Webpack Encore 可以通过 yarn add @symfony/webpack-encore 作为独立的 JavaScript 库运行。然而,为了动态加载资源(运行时、供应商、版本化资源等),你仍然需要在后端部分使用 Symfony/Twig 以及 webpack-encore-bundle

因此,这里有一个独立的 PHP 包,可以将 Webpack Encoreasset()encore_entry_js_files()encore_entry_css_files()encore_entry_script_tags()encore_entry_link_tags() 函数移植到 Twig 范围之外,在纯 PHP 项目中使用。

安装

composer require bentools/webpack-encore-resolver

示例用法

考虑以下 webpack.config.js 文件

const Encore = require('@symfony/webpack-encore');

Encore
    .setOutputPath('public/build/')
    .setPublicPath('/build')
    .addEntry('main', './assets/js/main.js')
    .enableVersioning(true)
    // ...
;

module.exports = Encore.getWebpackConfig();

你可以按以下方式生成版本化资源标签

<?php
require_once __DIR__ . '/../vendor/autoload.php';

use function BenTools\WebpackEncoreResolver\encore_entry_link_tags;
use function BenTools\WebpackEncoreResolver\encore_entry_script_tags;
?>
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <?php encore_entry_link_tags('main');?>
    <?php encore_entry_script_tags('main');?>
    <!-- ... -->

替代方案(以获取更多对标记的控制)

<?php
require_once __DIR__ . '/../vendor/autoload.php';

use function BenTools\WebpackEncoreResolver\asset;
use function BenTools\WebpackEncoreResolver\encore_entry_css_files;
use function BenTools\WebpackEncoreResolver\encore_entry_js_files;
?>
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <?php foreach (encore_entry_css_files('main') as $resource): ?>
        <link rel="stylesheet" href="<?=$resource?>">
    <?php endforeach; ?>
    <?php foreach (encore_entry_js_files('main') as $resource): ?>
        <script src="<?=$resource?>"></script>
    <?php endforeach; ?>
    <!-- Or request a specific resource -->
    <link rel="stylesheet" href="<?=asset('main.css')?>">

注意事项

目前不支持多个 webpack 配置/多个清单。欢迎 PRs!

测试

./vendor/bin/phpunit

许可证

MIT。