mirror of
https://github.com/prurigro/hypothetical.git
synced 2024-11-24 08:51:25 -05:00
Replace the CACHE_BUST in the init with a gulp-managed one so we can update the value with gulp watch
This commit is contained in:
parent
a063aaa1a1
commit
65bc4d8f4b
10 changed files with 70 additions and 29 deletions
|
@ -9,8 +9,6 @@ APP_URL=http://localhost
|
|||
|
||||
LOG_CHANNEL=stack
|
||||
|
||||
CACHE_BUST=
|
||||
|
||||
BS_HOST=localhost
|
||||
|
||||
DB_CONNECTION=mysql
|
||||
|
|
30
app/Utilities/Version.php
Normal file
30
app/Utilities/Version.php
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace App\Utilities;
|
||||
|
||||
class Version
|
||||
{
|
||||
/**
|
||||
* The version file
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private static $version_file_path = '/storage/app/__version.txt';
|
||||
|
||||
/**
|
||||
* Returns the current version (or 0 if none is set)
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function get()
|
||||
{
|
||||
$full_version_file_path = base_path() . self::$version_file_path;
|
||||
$version = '0';
|
||||
|
||||
if (file_exists($full_version_file_path)) {
|
||||
$version = trim(file_get_contents($full_version_file_path));
|
||||
}
|
||||
|
||||
return $version;
|
||||
}
|
||||
}
|
|
@ -239,6 +239,7 @@ return [
|
|||
*/
|
||||
'Image' => Intervention\Image\Facades\Image::class,
|
||||
'Language' => App\Utilities\Language::class,
|
||||
'Version' => App\Utilities\Version::class,
|
||||
|
||||
]
|
||||
|
||||
|
|
25
gulpfile.js
vendored
25
gulpfile.js
vendored
|
@ -4,7 +4,9 @@ const gulp = require("gulp"),
|
|||
log = require("fancy-log"),
|
||||
insert = require("gulp-insert"),
|
||||
plumber = require("gulp-plumber"),
|
||||
concat = require("gulp-concat");
|
||||
concat = require("gulp-concat"),
|
||||
fs = require("fs"),
|
||||
crypto = require("crypto");
|
||||
|
||||
// Sass and CSS packages
|
||||
const sass = require("gulp-sass"),
|
||||
|
@ -176,6 +178,17 @@ function processJavaScript(outputFilename, inputFiles, es6) {
|
|||
return javascript.pipe(gulp.dest("public/js/"));
|
||||
}
|
||||
|
||||
// Update the version string
|
||||
function updateVersion() {
|
||||
crypto.randomBytes(16, (err, buf) => {
|
||||
if (err) { throw err; }
|
||||
|
||||
return fs.writeFile("storage/app/__version.txt", buf.toString("hex"), (err) => {
|
||||
if (err) { throw err; }
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Task for error page styles
|
||||
gulp.task("sass-error", () => {
|
||||
return processSass("error");
|
||||
|
@ -225,9 +238,16 @@ gulp.task("fonts", (done) => {
|
|||
done();
|
||||
});
|
||||
|
||||
// Task to update the cache-bust version
|
||||
gulp.task("version", (done) => {
|
||||
updateVersion();
|
||||
done();
|
||||
});
|
||||
|
||||
// Task to watch files and run respective tasks when changes occur
|
||||
gulp.task("watch", () => {
|
||||
const browserSyncReload = (done) => {
|
||||
updateVersion();
|
||||
browserSync.reload();
|
||||
done();
|
||||
};
|
||||
|
@ -260,5 +280,6 @@ gulp.task("default", gulp.parallel(
|
|||
"js-public-libs",
|
||||
"js-dashboard",
|
||||
"js-dashboard-libs",
|
||||
"fonts"
|
||||
"fonts",
|
||||
"version"
|
||||
));
|
||||
|
|
8
init.sh
8
init.sh
|
@ -81,14 +81,6 @@ php artisan route:clear
|
|||
msg "Running: ${c_m}php artisan view:clear"
|
||||
php artisan view:clear
|
||||
|
||||
grep -qe '^CACHE_BUST=' .env || {
|
||||
msg "Adding the ${c_y}CACHE_BUST$c_w variable"
|
||||
printf '\n%s\n' 'CACHE_BUST=' >> .env
|
||||
}
|
||||
|
||||
msg "Updating ${c_y}CACHE_BUST$c_w variable"
|
||||
sed -i 's|^CACHE_BUST=.*|CACHE_BUST='"$(LC_CTYPE=C LANG=C tr -dc A-Za-z0-9 </dev/urandom | head -c 32)"'|' .env
|
||||
|
||||
(( ! no_db )) && {
|
||||
msg "Running: ${c_m}php artisan migrate --force"
|
||||
php artisan migrate --force || error "${c_m}php artisan migrate --force$c_w exited with an error status"
|
||||
|
|
|
@ -37,11 +37,10 @@ The following steps are performed in this order when run:
|
|||
4. Downloads and updates non-development composer dependencies.
|
||||
5. Checks to see if the `APP_KEY` variable in the `.env` file is empty, and if it is, generates a value for it.
|
||||
6. Clears the route and blade cache to ensure everything will be build fresh against the current codebase and dependencies.
|
||||
7. Updates the `CACHE_BUST` variable in the `.env` file, which changes the value of a `version` query string appended to compiled assets and prevents clients from using a previous version in their cache.
|
||||
8. (artisan) Run new database migrations.
|
||||
9. Cleans, downloads and updates npm dependencies.
|
||||
10. Runs `gulp --production` to build project files and copy fonts to `public/fonts` (uses the local version of gulp installed in `node_modules`).
|
||||
11. (artisan) Takes the website out of maintenance mode.
|
||||
7. (artisan) Run new database migrations.
|
||||
8. Cleans, downloads and updates npm dependencies.
|
||||
9. Runs `gulp --production` to build project files and copy fonts to `public/fonts` (uses the local version of gulp installed in `node_modules`).
|
||||
10. (artisan) Takes the website out of maintenance mode.
|
||||
|
||||
**NOTE**: Items with `(artisan)` prepended to them won't be run if `init.sh` is run with the `--no-artisan` flag.
|
||||
|
||||
|
|
|
@ -27,9 +27,9 @@
|
|||
<meta name="twitter:description" content="{{ env('APP_DESC') }}" />
|
||||
<meta name="twitter:image" content="{{ asset('/img/logo.png') }}" />
|
||||
|
||||
<link rel="shortcut icon" href="{{ URL::to('/') }}/favicon.ico?version={{ env('CACHE_BUST') }}" />
|
||||
<link rel="icon" href="{{ URL::to('/') }}/favicon.ico?version={{ env('CACHE_BUST') }}" type="image/x-icon" />
|
||||
<link rel="icon" href="{{ URL::to('/') }}/favicon.png?version={{ env('CACHE_BUST') }}" type="image/png" />
|
||||
<link rel="shortcut icon" href="{{ URL::to('/') }}/favicon.ico?version={{ Version::get() }}" />
|
||||
<link rel="icon" href="{{ URL::to('/') }}/favicon.ico?version={{ Version::get() }}" type="image/x-icon" />
|
||||
<link rel="icon" href="{{ URL::to('/') }}/favicon.png?version={{ Version::get() }}" type="image/png" />
|
||||
<link rel="canonical" href="{{ Request::url() }}" />
|
||||
|
||||
@yield('page-includes')
|
||||
|
@ -50,7 +50,7 @@
|
|||
|
||||
@if(Config::get('app.debug') && Config::get('app.env') === 'local')
|
||||
<script id="__bs_script__">//<![CDATA[
|
||||
document.write("<script async src='http://{{ env('BS_HOST', 'localhost') }}:3000/browser-sync/browser-sync-client.js?version={{ env('CACHE_BUST') }}'><\/script>".replace("HOST", location.hostname));
|
||||
document.write("<script async src='http://{{ env('BS_HOST', 'localhost') }}:3000/browser-sync/browser-sync-client.js?version={{ Version::get() }}'><\/script>".replace("HOST", location.hostname));
|
||||
//]]></script>
|
||||
@endif
|
||||
</body>
|
||||
|
|
|
@ -2,10 +2,10 @@
|
|||
@set('current_page', preg_replace([ '/https?:\/\//', '/^[^\/]*\/[^\/]*\//', '/\/.*/' ], [ '', '', '' ], Request::url()))
|
||||
|
||||
@section('page-includes')
|
||||
<script src="/js/lib-dashboard.js?version={{ env('CACHE_BUST') }}"></script>
|
||||
<script src="/js/dashboard.js?version={{ env('CACHE_BUST') }}"></script>
|
||||
<link rel="stylesheet" href="/css/lib-dashboard.css?version={{ env('CACHE_BUST') }}" />
|
||||
<link rel="stylesheet" href="/css/dashboard.css?version={{ env('CACHE_BUST') }}" />
|
||||
<script src="/js/lib-dashboard.js?version={{ Version::get() }}"></script>
|
||||
<script src="/js/dashboard.js?version={{ Version::get() }}"></script>
|
||||
<link rel="stylesheet" href="/css/lib-dashboard.css?version={{ Version::get() }}" />
|
||||
<link rel="stylesheet" href="/css/dashboard.css?version={{ Version::get() }}" />
|
||||
@endsection
|
||||
|
||||
@section('page-top')
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@extends('templates.base')
|
||||
|
||||
@section('page-includes')
|
||||
<link rel="stylesheet" href="/css/error.css?version={{ env('CACHE_BUST') }}" />
|
||||
<link rel="stylesheet" href="/css/error.css?version={{ Version::get() }}" />
|
||||
@endsection
|
||||
|
||||
@section('page-content')
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
@extends('templates.base')
|
||||
|
||||
@section('page-includes')
|
||||
<script src="/js/lib.js?version={{ env('CACHE_BUST') }}"></script>
|
||||
<link rel="stylesheet" href="/css/app.css?version={{ env('CACHE_BUST') }}" />
|
||||
<script src="/js/lib.js?version={{ Version::get() }}"></script>
|
||||
<link rel="stylesheet" href="/css/app.css?version={{ Version::get() }}" />
|
||||
|
||||
<script>
|
||||
var env = {
|
||||
|
@ -34,5 +34,5 @@
|
|||
@endsection
|
||||
|
||||
@section('page-bottom')
|
||||
<script src="/js/app.js?version={{ env('CACHE_BUST') }}"></script>
|
||||
<script src="/js/app.js?version={{ Version::get() }}"></script>
|
||||
@endsection
|
||||
|
|
Loading…
Reference in a new issue