From 1cc305331645864f3b3fda81d1a3c668774432ce Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Mon, 4 Nov 2019 23:12:45 +0100 Subject: [PATCH] Create locale build command --- .gitignore | 1 + package-lock.json | 70 +++++++++++++++++++++++++++++++++++++++++ package.json | 2 ++ scripts/build-locale.js | 28 +++++++++++++++++ 4 files changed, 101 insertions(+) create mode 100644 scripts/build-locale.js diff --git a/.gitignore b/.gitignore index a68fe8236..2e1407124 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ images/ private/ vendor/ coverage/ +locale/ node_modules/ bower_components/ grapesjs-*.tgz diff --git a/package-lock.json b/package-lock.json index f8ad2ff5d..805354737 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,59 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/cli": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.6.4.tgz", + "integrity": "sha512-tqrDyvPryBM6xjIyKKUwr3s8CzmmYidwgdswd7Uc/Cv0ogZcuS1TYQTLx/eWKP3UbJ6JxZAiYlBZabXm/rtRsQ==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "commander": "^2.8.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.13", + "mkdirp": "^0.5.1", + "output-file-sync": "^2.0.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + }, + "dependencies": { + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, "@babel/code-frame": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", @@ -8774,6 +8827,12 @@ "through2": "^2.0.3" } }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -14328,6 +14387,17 @@ "os-tmpdir": "^1.0.0" } }, + "output-file-sync": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", + "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "is-plain-obj": "^1.1.0", + "mkdirp": "^0.5.1" + } + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", diff --git a/package.json b/package.json index 15cb3e76d..65a57f826 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "underscore": "^1.9.1" }, "devDependencies": { + "@babel/cli": "^7.6.4", "@babel/core": "^7.6.0", "@babel/plugin-transform-runtime": "^7.6.0", "@babel/preset-env": "^7.6.0", @@ -124,6 +125,7 @@ "build-n": "npm run check && npm run build:css && webpack --env=prod", "build-dev": "webpack --env=dev && npm run build:css", "build:css": "node-sass src/styles/scss/main.scss dist/css/grapes.min.css --output-style compressed", + "build:locale": "rm -rf ./locale && node scripts/build-locale.js && babel locale -d locale --copy-files --no-comments", "v:patch": "npm version --no-git-tag-version patch", "start": "run-p start:*", "start:css": "npm run build:css -- -w", diff --git a/scripts/build-locale.js b/scripts/build-locale.js new file mode 100644 index 000000000..8c49b4c96 --- /dev/null +++ b/scripts/build-locale.js @@ -0,0 +1,28 @@ +const fs = require('fs'); +const path = require('path'); +const localeDir = './locale'; +const localeSrcDir = './src/i18n/locale'; + +const copyRecursiveSync = (src, dest) => { + const exists = fs.existsSync(src); + const isDir = exists && fs.statSync(src).isDirectory(); + + if (isDir) { + fs.mkdirSync(dest); + fs.readdirSync(src).forEach((file) => { + copyRecursiveSync(path.join(src, file), path.join(dest, file)); + }); + } else if (exists) { + fs.createReadStream(src).pipe(fs.createWriteStream(dest)); + } +}; + +copyRecursiveSync(localeSrcDir, localeDir); + +// Create locale/index.js file +let result = ''; +fs.readdirSync(localeDir).forEach(file => { + const name = file.replace('.js', ''); + result += `export { default as ${name} } from './${name}'\n`; +}); +fs.writeFileSync(`${localeDir}/index.js`, result); \ No newline at end of file