Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Html Output Doesn't Contain Replaced Names If Using $.rev.manifest() #70

Closed
mtpultz opened this issue Jan 16, 2017 · 2 comments
Closed

Comments

@mtpultz
Copy link

mtpultz commented Jan 16, 2017

Using rev-replace with rev.manifest seems to prevent replacement of the revisioned files.

gulp.task('build', [
    'sass',
    'inject-loader',
    'inject-scripts',
    'inject-templates',
    'inject-library-scripts',
    'inject-library-styles'
], function () {

    helpers.log('Build Application');

    var masterFile = path.join(config.viewPath, config.master);
    var assets = $.useref({
        searchPath: ['public']
    });

    var publicBuildFolder = path.join(config.publicPath, '/build');
    var viewBuildFolder = path.join(config.viewPath, '/build');

    // Clean out the previous build
    helpers.clean([
        path.join(publicBuildFolder, '**/*'),
        path.join(viewBuildFolder, '**/*')
    ]);

    var filterAssets = $.filter([
        '**/app.js',
        '**/lib.css',
        '!**/master.blade.php'
    ], {restore: true});

    var filterHtml = $.filter([
        '**/master.blade.php'
    ], {restore: true});

    // Process and replace with new build
    // Process and replace with new build
    return gulp.src(masterFile)
               .pipe(assets)
               .pipe($.plumber())

               .pipe(filterAssets)
               .pipe($.rev())
               .pipe(gulp.dest(config.publicPath))
               // .pipe($.rev.manifest())
               // .pipe(gulp.dest(publicBuildFolder))
               .pipe(filterAssets.restore)

               .pipe(args.verbose ? $.print() : $.util.noop())

               .pipe($.revReplace({
                   replaceInExtensions: ['.php']
               }))
               // .pipe($.revReplace({
               //     replaceInExtensions: ['.php'],
               //     manifest: gulp.src(publicBuildFolder + 'rev-manifest.json')
               // }))

               .pipe(filterHtml)

               .pipe(gulp.dest(viewBuildFolder));
});

Original template in /views/master.blade.php

<!-- Vendor Scripts -->
<!-- build:js /build/js/app.js -->

<!-- removed scripts for brevity -->

<!-- endbuild -->

Output in /views/build/master.blade.php

<script src="/build/js/app.js"></script>

Should be:

<script src="/build/js/app-01ab31dk.js"></script>
@mtpultz
Copy link
Author

mtpultz commented Jan 17, 2017

Looks like if I don't use $.rev.manifest() it works. Any ideas on how to get the manifest file as well?

@mtpultz mtpultz changed the title Html Output Doesn't Contain Replaced Names Html Output Doesn't Contain Replaced Names If Using $.rev.manifest() Jan 17, 2017
@mtpultz
Copy link
Author

mtpultz commented Jan 17, 2017

Figured it out. $.rev.manifest() has to be invoked after revReplace and the output of the template to its destination, otherwise no replace occurs if performed in filter, and no template is output if placed before replace.

    return gulp.src(masterFile)
               .pipe($.useref({
                   searchPath: ['public']
               }))

               // Apply error handling to the task
               .pipe($.plumber())

               // Output list of files in the stream if --verbose used in terminal
               // .pipe(args.verbose ? $.print() : $.util.noop())

               // Filter out only the assets from the stream for processing, which
               // includes revisions and gzip (optional) before being output to
               // their associated destinations, and then return the changes
               // to the stream
               .pipe(filterAssets)
               .pipe($.rev())
               .pipe($.gzip())
               .pipe(gulp.dest(config.publicPath))
-              .pipe($.rev.manifest())
-              .pipe(gulp.dest(publicBuildFolder));
               .pipe(filterAssets.restore)

               // Replace the revisioned and gzipped (optional) asset file names in
               // the streamed template file
               // ---
               // NOTE: Extension .php is not a default for the plugin and needs to
               // be added
               .pipe($.revReplace({
                   replaceInExtensions: ['.php']
               }))

               // Filter out the updated template from the stream, and output it to
               // its associated build directory
               .pipe(filterHtml)
               .pipe(gulp.dest(viewBuildFolder))
               .pipe(filterHtml.restore)

               // Create and output a revision manifest file
               // ---
               // NOTE: Must be applied at the end otherwise it will prevent replace
               // and output of the updated template from the stream
+              .pipe($.rev.manifest())
+              .pipe(gulp.dest(publicBuildFolder));

@mtpultz mtpultz closed this as completed Jan 17, 2017
@mtpultz mtpultz reopened this Jan 17, 2017
@mtpultz mtpultz closed this as completed Jan 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant