Skip to content

Commit ebcfe55

Browse files
weaverryanfabpot
authored andcommitted
[AssetMapper] Adding "excluded_patterns" option
1 parent 35540d0 commit ebcfe55

File tree

6 files changed

+19
-1
lines changed

6 files changed

+19
-1
lines changed

DependencyInjection/Configuration.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -821,6 +821,7 @@ private function addAssetMapperSection(ArrayNodeDefinition $rootNode, callable $
821821
->info('Asset Mapper configuration')
822822
->{$enableIfStandalone('symfony/asset-mapper', AssetMapper::class)}()
823823
->fixXmlConfig('path')
824+
->fixXmlConfig('excluded_pattern')
824825
->fixXmlConfig('extension')
825826
->fixXmlConfig('importmap_script_attribute')
826827
->children()
@@ -856,6 +857,11 @@ private function addAssetMapperSection(ArrayNodeDefinition $rootNode, callable $
856857
->end()
857858
->prototype('scalar')->end()
858859
->end()
860+
->arrayNode('excluded_patterns')
861+
->info('Array of glob patterns of asset file paths that should not be in the asset mapper')
862+
->prototype('scalar')->end()
863+
->example(['*/assets/build/*', '*/*_.scss'])
864+
->end()
859865
->booleanNode('server')
860866
->info('If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default)')
861867
->defaultValue($this->debug)

DependencyInjection/FrameworkExtension.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
7373
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
7474
use Symfony\Component\Finder\Finder;
75+
use Symfony\Component\Finder\Glob;
7576
use Symfony\Component\Form\ChoiceList\Factory\CachingFactoryDecorator;
7677
use Symfony\Component\Form\Extension\HtmlSanitizer\Type\TextTypeHtmlSanitizerExtension;
7778
use Symfony\Component\Form\Form;
@@ -1277,8 +1278,14 @@ private function registerAssetMapperConfiguration(array $config, ContainerBuilde
12771278
$paths[$dir] = sprintf('bundles/%s', preg_replace('/bundle$/', '', strtolower($name)));
12781279
}
12791280
}
1281+
$excludedPathPatterns = [];
1282+
foreach ($config['excluded_patterns'] as $path) {
1283+
$excludedPathPatterns[] = Glob::toRegex($path, true, false);
1284+
}
1285+
12801286
$container->getDefinition('asset_mapper.repository')
1281-
->setArgument(0, $paths);
1287+
->setArgument(0, $paths)
1288+
->setArgument(2, $excludedPathPatterns);
12821289

12831290
$publicDirName = $this->getPublicDirectoryName($container);
12841291
$container->getDefinition('asset_mapper.public_assets_path_resolver')

Resources/config/asset_mapper.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
->args([
4646
abstract_arg('array of asset mapper paths'),
4747
param('kernel.project_dir'),
48+
abstract_arg('array of excluded path patterns'),
4849
])
4950

5051
->set('asset_mapper.public_assets_path_resolver', PublicAssetsPathResolver::class)

Resources/config/schema/symfony-1.0.xsd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@
190190
<xsd:complexType name="asset_mapper">
191191
<xsd:sequence>
192192
<xsd:element name="path" type="asset_mapper_path" minOccurs="0" maxOccurs="unbounded" />
193+
<xsd:element name="excluded-pattern" type="xsd:string" minOccurs="0" maxOccurs="unbounded" />
193194
<xsd:element name="server" type="xsd:boolean" minOccurs="0" />
194195
<xsd:element name="public_prefix" type="xsd:string" minOccurs="0" />
195196
<xsd:element name="strict-mode" type="xsd:boolean" minOccurs="0" />

Tests/DependencyInjection/ConfigurationTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ public function testAssetMapperCanBeEnabled()
104104
$defaultConfig = [
105105
'enabled' => true,
106106
'paths' => [],
107+
'excluded_patterns' => [],
107108
'server' => true,
108109
'public_prefix' => '/assets/',
109110
'strict_mode' => true,
@@ -615,6 +616,7 @@ protected static function getBundleDefaultConfig()
615616
'asset_mapper' => [
616617
'enabled' => !class_exists(FullStack::class),
617618
'paths' => [],
619+
'excluded_patterns' => [],
618620
'server' => true,
619621
'public_prefix' => '/assets/',
620622
'strict_mode' => true,

Tests/DependencyInjection/Fixtures/xml/asset_mapper.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<framework:asset-mapper>
1111
<framework:path>assets/</framework:path>
1212
<framework:path namespace="my_namespace">assets2/</framework:path>
13+
<framework:excluded-pattern>*/*.scss</framework:excluded-pattern>
1314
<framework:server>true</framework:server>
1415
<framework:public_prefix>/assets_path/</framework:public_prefix>
1516
<framework:strict-mode>true</framework:strict-mode>

0 commit comments

Comments
 (0)