diff --git a/package.json b/package.json index 16f08bb8bd..53d9e51f33 100644 --- a/package.json +++ b/package.json @@ -45,9 +45,9 @@ "build:bundle-stats": "webpack --progress --mode production --json > webpack-stats.json", "build:module_system": "tsc --project ./tsconfig.module_system.json && node ./lib/module_system/scripts/install.js", "dist": "scripts/package.sh", - "start": "yarn build:module_system && concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js\"", + "start": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n modules,res,jitsi \"yarn build:module_system\" \"yarn build:res\" \"yarn build:jitsi\" && concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js\"", "start:https": "concurrently --kill-others-on-fail --prefix \"{time} [{name}]\" -n res,element-js \"yarn start:res\" \"yarn start:js --https\"", - "start:res": "yarn build:jitsi && ts-node scripts/copy-res.ts -w", + "start:res": "ts-node scripts/copy-res.ts -w", "start:js": "webpack serve --output-path webapp --mode development", "lint": "yarn lint:types && yarn lint:js && yarn lint:style", "lint:js": "yarn lint:js:src && yarn lint:js:module_system", diff --git a/scripts/copy-res.ts b/scripts/copy-res.ts index 592e41639d..d4ecad8ee7 100755 --- a/scripts/copy-res.ts +++ b/scripts/copy-res.ts @@ -94,7 +94,7 @@ function next(i: number, err?: Error): void { createCpx(path, dest).copy(errCheck); }; chokidar - .watch(source) + .watch(source, { ignoreInitial: true }) .on("ready", () => { logWatch(source); cb(); @@ -107,7 +107,7 @@ function next(i: number, err?: Error): void { } } -function genLangFile(lang: string, dest: string): string { +function prepareLangFile(lang: string, dest: string): [filename: string, json: string] { const reactSdkFile = REACT_I18N_BASE_PATH + lang + ".json"; const riotWebFile = I18N_BASE_PATH + lang + ".json"; @@ -128,12 +128,14 @@ function genLangFile(lang: string, dest: string): string { const digest = loaderUtils.getHashDigest(jsonBuffer, null, "hex", 7); const filename = `${lang}.${digest}.json`; + return [filename, json]; +} + +function genLangFile(dest: string, filename: string, json: string) { fs.writeFileSync(dest + filename, json); if (verbose) { console.log("Generated language file: " + filename); } - - return filename; } function genLangList(langFileMap: Record): void { @@ -176,7 +178,8 @@ function watchLanguage(lang: string, dest: string, langFileMap: Record { - const filename = genLangFile(lang, dest); + const [filename, json] = prepareLangFile(lang, dest); + genLangFile(dest, filename, json); langFileMap[lang] = filename; genLangList(langFileMap); }, 500); @@ -184,7 +187,7 @@ function watchLanguage(lang: string, dest: string, langFileMap: Record { logWatch(f); }) @@ -197,14 +200,18 @@ function watchLanguage(lang: string, dest: string, langFileMap: Record>((m, l) => { - const filename = genLangFile(l, I18N_DEST); + const [filename, json] = prepareLangFile(l, I18N_DEST); + if (!watch) { + genLangFile(I18N_DEST, filename, json); + } m[l] = filename; return m; }, {}); -genLangList(I18N_FILENAME_MAP); if (watch) { INCLUDE_LANGS.forEach((l) => watchLanguage(l, I18N_DEST, I18N_FILENAME_MAP)); +} else { + genLangList(I18N_FILENAME_MAP); } // non-language resources