mirror of https://github.com/laurent22/joplin.git
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
import BundledFile from './BundledFile';
|
|
import { mkdirp } from 'fs-extra';
|
|
import { mobileDir, outputDir } from './constants';
|
|
import copyAssets from './copyAssets';
|
|
import { readdir, existsSync } from 'fs-extra';
|
|
import { join } from 'path';
|
|
|
|
const getBundles = async () => {
|
|
// All folders in the contentScripts/ directories are bundles
|
|
const contentScriptDir = `${mobileDir}/contentScripts/`;
|
|
const bundles = [];
|
|
|
|
for (const folderOrFileName of await readdir(contentScriptDir)) {
|
|
// Only check subfolders
|
|
if (folderOrFileName.includes('.')) continue;
|
|
// Skip utilities shared between bundles
|
|
if (folderOrFileName === 'utils') continue;
|
|
|
|
const bundlePath = join(contentScriptDir, folderOrFileName);
|
|
const indexPath = join(bundlePath, 'contentScript', 'index.ts');
|
|
const contentScriptPath = existsSync(indexPath) ? indexPath : join(bundlePath, 'contentScript.ts');
|
|
bundles.push(new BundledFile(folderOrFileName, contentScriptPath));
|
|
}
|
|
|
|
// Bundled JS may also exist within the components/ directory:
|
|
bundles.push(new BundledFile(
|
|
'pluginBackgroundPage',
|
|
`${mobileDir}/components/plugins/backgroundPage/pluginRunnerBackgroundPage.ts`,
|
|
));
|
|
|
|
return bundles;
|
|
};
|
|
|
|
const gulpTasks = {
|
|
beforeBundle: {
|
|
fn: () => mkdirp(outputDir),
|
|
},
|
|
buildBundledJs: {
|
|
fn: async () => {
|
|
for (const bundle of await getBundles()) {
|
|
await bundle.build();
|
|
}
|
|
},
|
|
},
|
|
watchBundledJs: {
|
|
fn: async () => {
|
|
const watchPromises = [];
|
|
for (const bundle of await getBundles()) {
|
|
watchPromises.push(bundle.startWatching());
|
|
}
|
|
await Promise.all(watchPromises);
|
|
},
|
|
},
|
|
copyWebviewLib: {
|
|
fn: () => copyAssets('webviewLib', { js: `${mobileDir}/../lib/renderers/webviewLib.js` }),
|
|
},
|
|
};
|
|
|
|
export default gulpTasks;
|