Использование manifest.json для возврата пути к файлу в php - PullRequest
0 голосов
/ 25 июня 2018

Прежде всего, пожалуйста, извините мою методологию, я уверен, что есть намного лучшие способы сделать это, но я самоучка и определенно не профессионал: D

В любом случае, я учусь, какпересмотреть активы, используя gulp-rev-rewrite, и я проделал большую часть пути туда.

Все мои задачи gulp работают, пересмотр - это нормально, и я могу сгенерировать файл rev-manifest.json, который содержит пересмотренные имена файлов, например:

"app.css": "app-df7223f44c.css"

Теперь я не могу понять, какиспользуйте данные в файле manifest.json, чтобы указать путь к файлу в моем php.Я нашел другой ресурс из аналогичного пакета gulp, который содержал функцию .php, которую я надеялся адаптировать:

<?php /**
 * @param  string  $filename
 * @return string
 */
function asset_path($filename) {
    $manifest_path = '../dist/rev-manifest.json';

    if (file_exists($manifest_path)) {
        $manifest = json_decode(file_get_contents($manifest_path), TRUE);
    } else {
        $manifest = [];
    }

    if (array_key_exists($filename, $manifest)) {
        return $manifest[$filename];
    }

    return $filename;
}
?>

Я вставляю эту функцию, используя

 <?php require 'require/filepaths.php';?>

Изатем попробуйте использовать путь к файлу следующим образом:

 <link rel="stylesheet" href="<?php asset_path('dist/app.css');?>" rel="preload">

Только это не работает, и я в тупике.

Путь к файлу, который возвращается:

<link rel="stylesheet" href="" rel="preload">

Может кто-нибудь указать, что я делаю неправильно?

Я попытался вручную включить путь к файлу в filepaths.php, который сработал, так что я предполагаю, что проблема в этом файле где-то?

Любой совет очень ценится.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Спасибо Аллену - думаю, у меня есть это сейчас.

Вы были правы в том, что URL был неверным относительно корня сайта.Я нашел ответ здесь .

В основном мне нужно было передать dist/ в путь к файлу в манифесте, поэтому ключом было изменение рецепта GULP от:

gulp.task('revision', function() {
  return gulp.src(['dist/app.css', 'dist/app.js'])
    .pipe(gulp.dest('./dist'))
    .pipe(rev())
    .pipe(gulp.dest('./dist'))
    .pipe(rev.manifest({
      merge: true
    }))
    .pipe(revDel({ dest: 'dist' }))
    .pipe(gulp.dest('dist'))
    .pipe(notify({ message: 'Rev task complete' }));
});

до:

gulp.task('revision', function() {
  return gulp.src(['dist/app.css', 'dist/app.js'])
    .pipe(gulp.dest('./dist'))
    .pipe(rev())
    .pipe(gulp.dest('./dist'))
    .pipe(rename({
        dirname: "dist/" // rename dir in manifest
    }))
    .pipe(rev.manifest({
      merge: true
    }))
    .pipe(revDel({ dest: 'dist' }))
    .pipe(gulp.dest('dist'))
    .pipe(notify({ message: 'Rev task complete' }));
});
0 голосов
/ 26 июня 2018

После того, как вы опубликовали свой манифест, я не уверен, как вы ожидаете, что это сработает.Если вы var_dump манифест после вас json_decode, вы увидите, что ключ массива - app.css, а не dist/app.css, который вы ищете.

<?php asset_path('app.css');?> должно работатьпросто хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...