100 private $readFactory;
105 private $staticContext;
110 private $minifyAdapter;
115 private $minification;
120 private $repositoryMap;
133 \
Magento\Framework\View\DesignInterface $design,
135 \
Magento\Framework\View\Asset\Repository $assetRepo,
136 \
Magento\Framework\Code\Minifier\AdapterInterface $minifyAdapter,
140 $this->fileSource = $fileSource;
141 $this->design = $design;
142 $this->readFactory = $readFactory;
143 $this->staticContext = $assetRepo->getStaticViewFileContext();
144 $this->minifyAdapter = $minifyAdapter;
145 $this->minification = $minification;
146 $this->repositoryMap = $repositoryMap;
154 public function getConfig()
156 $distributedConfig =
'';
157 $customConfigFiles = $this->fileSource->getFiles($this->design->getDesignTheme(),
self::CONFIG_FILE_NAME);
158 foreach ($customConfigFiles as $file) {
160 $fileReader = $this->readFactory->create($file->getFilename(),
DriverPool::FILE);
161 $config = $fileReader->readAll($file->getName());
162 $distributedConfig .= str_replace(
163 [
'%config%',
'%context%'],
169 $fullConfig = str_replace(
170 [
'%function%',
'%usages%'],
171 [$distributedConfig],
172 self::FULL_CONFIG_TEMPLATE
175 if ($this->minification->isEnabled(
'js')) {
176 $fullConfig = $this->minifyAdapter->minify($fullConfig);
200 'area' => $this->staticContext->getAreaCode(),
201 'theme' => $this->staticContext->getThemePath(),
202 'locale' => $this->staticContext->getLocale(),
230 'baseUrl' => $this->staticContext->getBaseUrl() . $this->staticContext->getPath(),
233 $result =
"require.config($config);";
245 $this->staticContext->getConfigPath() .
247 $this->minification->addMinifiedSign(self::MIN_RESOLVER_FILENAME);
258 'area' => $this->staticContext->getAreaCode(),
259 'theme' => $this->staticContext->getThemePath(),
260 'locale' => $this->staticContext->getLocale(),
277 return $this->minification->addMinifiedSign($this->staticContext->getPath() .
'/' .
self::MAP_FILE_NAME);
285 return $this->minification->addMinifiedSign(self::CONFIG_FILE_NAME);
294 foreach ($this->minification->getExcludes(
'js') as $expression) {
295 $excludes[] =
'!url.match(/' . str_replace(
'/',
'\/', $expression) .
'/)';
297 $excludesCode = empty($excludes) ?
'true' : implode(
'&&', $excludes);
300 var ctx = require.s.contexts._,
301 origNameToUrl = ctx.nameToUrl;
303 ctx.nameToUrl =
function() {
304 var url = origNameToUrl.apply(ctx, arguments);
305 if ({$excludesCode}) {
306 url = url.replace(/(\.min)?\.js$/,
'.min.js');
313 if ($this->minification->isEnabled(
'js')) {
324 private function getRepositoryFilesMap($fileId, array
$params)
326 return $this->repositoryMap->getMap($fileId,
$params);
getMixinsFileRelativePath()
const FULL_CONFIG_TEMPLATE
const MIN_RESOLVER_FILENAME
getConfigFileRelativePath()
__construct(\Magento\Framework\RequireJs\Config\File\Collector\Aggregated $fileSource, \Magento\Framework\View\DesignInterface $design, ReadFactory $readFactory, \Magento\Framework\View\Asset\Repository $assetRepo, \Magento\Framework\Code\Minifier\AdapterInterface $minifyAdapter, Minification $minification, RepositoryMap $repositoryMap)
const URL_RESOLVER_FILE_NAME
getMinResolverRelativePath()
const PARTIAL_CONFIG_TEMPLATE
getUrlResolverFileRelativePath()
$params[\Magento\Store\Model\StoreManager::PARAM_RUN_CODE]
const REQUIRE_JS_FILE_NAME
getRequireJsFileRelativePath()