mirror of
https://github.com/xuthus83/pigallery2.git
synced 2024-11-03 21:04:03 +08:00
Fixing localized bundle caching issue by renaming file. Fixes #652
This commit is contained in:
parent
e4710da4e5
commit
7ddbfdcae9
63
gulpfile.ts
63
gulpfile.ts
@ -242,16 +242,6 @@ gulp.task('zip-release', (): any =>
|
|||||||
.pipe(gulp.dest('.'))
|
.pipe(gulp.dest('.'))
|
||||||
);
|
);
|
||||||
|
|
||||||
gulp.task(
|
|
||||||
'create-release',
|
|
||||||
gulp.series(
|
|
||||||
'build-frontend',
|
|
||||||
'build-backend',
|
|
||||||
'copy-static',
|
|
||||||
'copy-package',
|
|
||||||
'zip-release'
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
const simpleBuild = (isProd: boolean): any => {
|
const simpleBuild = (isProd: boolean): any => {
|
||||||
const tasks = [];
|
const tasks = [];
|
||||||
@ -389,10 +379,61 @@ gulp.task('generate-man', async (cb): Promise<void> => {
|
|||||||
cb();
|
cb();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// this is a workaround for bundle hash is not considering localization
|
||||||
|
// so all the js files would have the same name and caching would not be possible to use
|
||||||
|
// prefixing main.js with localization to force reload
|
||||||
|
// see: https://github.com/angular/angular-cli/issues/17416
|
||||||
|
gulp.task('localize-bundles', async (cb): Promise<void> => {
|
||||||
|
const bundlesToUpdate = ['main'];
|
||||||
|
const foldersToCheck = ['./dist', './release/dist'];
|
||||||
|
for (let f = 0; f < foldersToCheck.length; ++f) {
|
||||||
|
const folder = foldersToCheck[f];
|
||||||
|
if (!fs.existsSync(folder)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const builds = fs.readdirSync(folder);
|
||||||
|
|
||||||
|
for (let i = 0; i < builds.length; ++i) {
|
||||||
|
const dir = path.join(folder, builds[i]);
|
||||||
|
const indexhtmlPath = path.join(dir, 'index.html');
|
||||||
|
|
||||||
|
let indexhtml = fs.readFileSync(indexhtmlPath, 'utf8');
|
||||||
|
|
||||||
|
for (let j = 0; j < bundlesToUpdate.length; ++j) {
|
||||||
|
|
||||||
|
const rgx = new RegExp('<script src="' + bundlesToUpdate[j], 'g');
|
||||||
|
indexhtml = indexhtml.replace(rgx, '<script src="' + builds[i] + '.' + bundlesToUpdate[j]);
|
||||||
|
fs.readdirSync(folder);
|
||||||
|
|
||||||
|
const fileToRename = fs.readdirSync(dir)
|
||||||
|
.find(fl => fl.startsWith(bundlesToUpdate[j]) && fl.endsWith('js'));
|
||||||
|
if (!fileToRename) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
fs.renameSync(path.join(dir, fileToRename), path.join(dir, builds[i] + '.' + fileToRename));
|
||||||
|
}
|
||||||
|
fs.writeFileSync(indexhtmlPath, indexhtml, 'utf8');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cb();
|
||||||
|
});
|
||||||
|
|
||||||
gulp.task(
|
gulp.task(
|
||||||
'add-translation',
|
'add-translation',
|
||||||
gulp.series('extract-locale', 'add-translation-only')
|
gulp.series('extract-locale', 'add-translation-only')
|
||||||
);
|
);
|
||||||
|
|
||||||
gulp.task('build-dev', simpleBuild(false));
|
gulp.task('build-dev', simpleBuild(false));
|
||||||
gulp.task('build-prod', simpleBuild(true));
|
gulp.task('build-prod', gulp.series(simpleBuild(true), 'localize-bundles'));
|
||||||
|
|
||||||
|
gulp.task(
|
||||||
|
'create-release',
|
||||||
|
gulp.series(
|
||||||
|
'build-frontend',
|
||||||
|
'localize-bundles',
|
||||||
|
'build-backend',
|
||||||
|
'copy-static',
|
||||||
|
'copy-package',
|
||||||
|
'zip-release'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user