mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
Chore: Mobile: Remove duplicate bundle minification (#9221)
This commit is contained in:
parent
02361e37f0
commit
e9c598cf46
@ -101,7 +101,6 @@
|
|||||||
"@types/tar-stream": "2.2.3",
|
"@types/tar-stream": "2.2.3",
|
||||||
"babel-jest": "29.7.0",
|
"babel-jest": "29.7.0",
|
||||||
"babel-plugin-module-resolver": "4.1.0",
|
"babel-plugin-module-resolver": "4.1.0",
|
||||||
"execa": "4.1.0",
|
|
||||||
"fs-extra": "11.1.1",
|
"fs-extra": "11.1.1",
|
||||||
"gulp": "4.0.2",
|
"gulp": "4.0.2",
|
||||||
"jest": "29.7.0",
|
"jest": "29.7.0",
|
||||||
@ -109,7 +108,6 @@
|
|||||||
"jetifier": "2.0.0",
|
"jetifier": "2.0.0",
|
||||||
"js-draw": "1.5.0",
|
"js-draw": "1.5.0",
|
||||||
"jsdom": "22.1.0",
|
"jsdom": "22.1.0",
|
||||||
"md5-file": "5.0.0",
|
|
||||||
"metro-react-native-babel-preset": "0.73.9",
|
"metro-react-native-babel-preset": "0.73.9",
|
||||||
"nodemon": "3.0.1",
|
"nodemon": "3.0.1",
|
||||||
"react-test-renderer": "18.2.0",
|
"react-test-renderer": "18.2.0",
|
||||||
|
@ -3,10 +3,8 @@
|
|||||||
// files: First here we convert the JS file to a plain string, and that string
|
// files: First here we convert the JS file to a plain string, and that string
|
||||||
// is then loaded by eg. the Mermaid plugin, and finally injected in the WebView.
|
// is then loaded by eg. the Mermaid plugin, and finally injected in the WebView.
|
||||||
|
|
||||||
import { mkdirp, pathExists, readFile, writeFile } from 'fs-extra';
|
import { mkdirp, readFile, writeFile } from 'fs-extra';
|
||||||
import { dirname, extname, basename } from 'path';
|
import { dirname, extname, basename } from 'path';
|
||||||
const md5File = require('md5-file');
|
|
||||||
const execa = require('execa');
|
|
||||||
|
|
||||||
// We need this to be transpiled to `const webpack = require('webpack')`.
|
// We need this to be transpiled to `const webpack = require('webpack')`.
|
||||||
// As such, do a namespace import. See https://www.typescriptlang.org/tsconfig#esModuleInterop
|
// As such, do a namespace import. See https://www.typescriptlang.org/tsconfig#esModuleInterop
|
||||||
@ -30,7 +28,6 @@ async function copyJs(name: string, filePath: string) {
|
|||||||
|
|
||||||
class BundledFile {
|
class BundledFile {
|
||||||
private readonly bundleOutputPath: string;
|
private readonly bundleOutputPath: string;
|
||||||
private readonly bundleMinifiedPath: string;
|
|
||||||
private readonly bundleBaseName: string;
|
private readonly bundleBaseName: string;
|
||||||
private readonly rootFileDirectory: string;
|
private readonly rootFileDirectory: string;
|
||||||
|
|
||||||
@ -41,7 +38,6 @@ class BundledFile {
|
|||||||
this.rootFileDirectory = dirname(sourceFilePath);
|
this.rootFileDirectory = dirname(sourceFilePath);
|
||||||
this.bundleBaseName = basename(sourceFilePath, extname(sourceFilePath));
|
this.bundleBaseName = basename(sourceFilePath, extname(sourceFilePath));
|
||||||
this.bundleOutputPath = `${this.rootFileDirectory}/${this.bundleBaseName}.bundle.js`;
|
this.bundleOutputPath = `${this.rootFileDirectory}/${this.bundleBaseName}.bundle.js`;
|
||||||
this.bundleMinifiedPath = `${this.rootFileDirectory}/${this.bundleBaseName}.bundle.min.js`;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private getWebpackOptions(mode: 'production' | 'development'): webpack.Configuration {
|
private getWebpackOptions(mode: 'production' | 'development'): webpack.Configuration {
|
||||||
@ -86,28 +82,6 @@ class BundledFile {
|
|||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async uglify() {
|
|
||||||
const md5Path = `${this.bundleOutputPath}.md5`;
|
|
||||||
const newMd5 = await md5File(this.bundleOutputPath);
|
|
||||||
const previousMd5 = await pathExists(md5Path) ? await readFile(md5Path, 'utf8') : '';
|
|
||||||
|
|
||||||
if (newMd5 === previousMd5 && await pathExists(this.bundleMinifiedPath)) {
|
|
||||||
console.info('Bundle has not changed - skipping minifying...');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
console.info(`Minifying bundle: ${this.bundleName}...`);
|
|
||||||
|
|
||||||
await execa('yarn', [
|
|
||||||
'run', 'uglifyjs',
|
|
||||||
'--compress',
|
|
||||||
'-o', this.bundleMinifiedPath,
|
|
||||||
this.bundleOutputPath,
|
|
||||||
]);
|
|
||||||
|
|
||||||
await writeFile(md5Path, newMd5, 'utf8');
|
|
||||||
}
|
|
||||||
|
|
||||||
private handleErrors(error: Error | undefined | null, stats: webpack.Stats | undefined): boolean {
|
private handleErrors(error: Error | undefined | null, stats: webpack.Stats | undefined): boolean {
|
||||||
let failed = false;
|
let failed = false;
|
||||||
|
|
||||||
@ -163,7 +137,6 @@ class BundledFile {
|
|||||||
failed = true;
|
failed = true;
|
||||||
}
|
}
|
||||||
if (!failed) {
|
if (!failed) {
|
||||||
await this.uglify();
|
|
||||||
resolve();
|
resolve();
|
||||||
} else {
|
} else {
|
||||||
reject();
|
reject();
|
||||||
@ -183,7 +156,6 @@ class BundledFile {
|
|||||||
compiler.watch(watchOptions, async (error, stats) => {
|
compiler.watch(watchOptions, async (error, stats) => {
|
||||||
const failed = this.handleErrors(error, stats);
|
const failed = this.handleErrors(error, stats);
|
||||||
if (!failed) {
|
if (!failed) {
|
||||||
await this.uglify();
|
|
||||||
await this.copyToImportableFile();
|
await this.copyToImportableFile();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -192,7 +164,7 @@ class BundledFile {
|
|||||||
// Creates a file that can be imported by React native. This file contains the
|
// Creates a file that can be imported by React native. This file contains the
|
||||||
// bundled JS as a string.
|
// bundled JS as a string.
|
||||||
public async copyToImportableFile() {
|
public async copyToImportableFile() {
|
||||||
await copyJs(`${this.bundleBaseName}.bundle`, this.bundleMinifiedPath);
|
await copyJs(`${this.bundleBaseName}.bundle`, this.bundleOutputPath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6318,7 +6318,6 @@ __metadata:
|
|||||||
crypto-browserify: 3.12.0
|
crypto-browserify: 3.12.0
|
||||||
deprecated-react-native-prop-types: 4.2.3
|
deprecated-react-native-prop-types: 4.2.3
|
||||||
events: 3.3.0
|
events: 3.3.0
|
||||||
execa: 4.1.0
|
|
||||||
fs-extra: 11.1.1
|
fs-extra: 11.1.1
|
||||||
gulp: 4.0.2
|
gulp: 4.0.2
|
||||||
jest: 29.7.0
|
jest: 29.7.0
|
||||||
@ -6329,7 +6328,6 @@ __metadata:
|
|||||||
jsdom: 22.1.0
|
jsdom: 22.1.0
|
||||||
lodash: 4.17.21
|
lodash: 4.17.21
|
||||||
md5: 2.3.0
|
md5: 2.3.0
|
||||||
md5-file: 5.0.0
|
|
||||||
metro-react-native-babel-preset: 0.73.9
|
metro-react-native-babel-preset: 0.73.9
|
||||||
nodemon: 3.0.1
|
nodemon: 3.0.1
|
||||||
path-browserify: 1.0.1
|
path-browserify: 1.0.1
|
||||||
|
Loading…
Reference in New Issue
Block a user