Browse Source

refactor(tauri.js): manually treeshake lodash (#246)

* refactor(tauri.js): manually treeshake lodash

* Update entry.ts

* Update copy-templates.ts

Co-authored-by: Lucas Fernandes Nogueira <lucasfernandesnog@gmail.com>
nothingismagick 5 năm trước cách đây
mục cha
commit
ed946e0069

+ 2 - 4
cli/tauri.js/package.json

@@ -57,8 +57,7 @@
     "is-png": "2.0.0",
     "isbinaryfile": "4.0.2",
     "jsdom": "15.2.1",
-    "lodash.debounce": "4.0.8",
-    "lodash.template": "4.5.0",
+    "lodash": "4.17.15",
     "minimist": "1.2.0",
     "ms": "2.1.2",
     "png2icons": "2.0.1",
@@ -73,8 +72,7 @@
     "@types/imagemin": "7.0.0",
     "@types/imagemin-optipng": "5.2.0",
     "@types/jsdom": "12.2.4",
-    "@types/lodash.debounce": "4.0.6",
-    "@types/lodash.template": "4.4.6",
+    "@types/lodash": "4.14.149",
     "@types/ms": "0.7.31",
     "@types/sharp": "0.23.1",
     "@types/webpack-merge": "4.1.5",

+ 3 - 3
cli/tauri.js/src/entry.ts

@@ -1,13 +1,13 @@
 import { ensureDirSync, writeFileSync } from 'fs-extra'
-import compileTemplate from 'lodash.template'
+import  { template } from 'lodash'
 import path from 'path'
 import { TauriConfig } from './types/config'
 
 export const generate = (outDir: string, cfg: TauriConfig): void => {
   // this MUST be from the templates repo
   const apiTemplate = require('../templates/tauri.js').default
-  const apiContent = compileTemplate(apiTemplate)(cfg)
+  const compiledApi = template(apiTemplate)
 
   ensureDirSync(outDir)
-  writeFileSync(path.join(outDir, 'tauri.js'), apiContent, 'utf-8')
+  writeFileSync(path.join(outDir, 'tauri.js'), compiledApi(cfg), 'utf-8')
 }

+ 3 - 3
cli/tauri.js/src/helpers/copy-templates.ts

@@ -2,7 +2,7 @@
 import fglob from 'fast-glob'
 import fs from 'fs-extra'
 import { isBinaryFileSync as isBinary } from 'isbinaryfile'
-import compileTemplate from 'lodash.template'
+import  { template } from 'lodash'
 import { join, resolve } from 'path'
 
 const copyTemplates = ({
@@ -44,11 +44,11 @@ const copyTemplates = ({
     } else {
       // eslint-disable-next-line security/detect-non-literal-fs-filename
       const rawContent = fs.readFileSync(sourcePath, 'utf-8')
-      const template = compileTemplate(rawContent, {
+      const compiled = template(rawContent, {
         interpolate: /<%=([\s\S]+?)%>/g
       })
       // eslint-disable-next-line security/detect-non-literal-fs-filename
-      fs.writeFileSync(targetPath, template(scope), 'utf-8')
+      fs.writeFileSync(targetPath, compiled(scope), 'utf-8')
     }
   }
 }

+ 1 - 1
cli/tauri.js/src/runner.ts

@@ -3,7 +3,7 @@ import toml from '@tauri-apps/toml'
 import chokidar, { FSWatcher } from 'chokidar'
 import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs-extra'
 import { JSDOM } from 'jsdom'
-import debounce from 'lodash.debounce'
+import { debounce } from 'lodash'
 import path from 'path'
 import * as entry from './entry'
 import { appDir, tauriDir } from './helpers/app-paths'

+ 3 - 42
cli/tauri.js/yarn.lock

@@ -471,23 +471,9 @@
   resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.3.tgz#bdfd69d61e464dcc81b25159c270d75a73c1a636"
   integrity sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==
 
-"@types/lodash.debounce@4.0.6":
-  version "4.0.6"
-  resolved "https://registry.yarnpkg.com/@types/lodash.debounce/-/lodash.debounce-4.0.6.tgz#c5a2326cd3efc46566c47e4c0aa248dc0ee57d60"
-  integrity sha512-4WTmnnhCfDvvuLMaF3KV4Qfki93KebocUF45msxhYyjMttZDQYzHkO639ohhk8+oco2cluAFL3t5+Jn4mleylQ==
-  dependencies:
-    "@types/lodash" "*"
-
-"@types/lodash.template@4.4.6":
-  version "4.4.6"
-  resolved "https://registry.yarnpkg.com/@types/lodash.template/-/lodash.template-4.4.6.tgz#d28a380a0cd152e6846324bf8f68b93318f09bc0"
-  integrity sha512-nBw8J73e8AsYlS/ZoYRKDCQPHqm4F9xAeDLVe4M6xKDo4+1W0pruQ9egw5zgwxveb3C8kzSOetXalCzz3A1cTQ==
-  dependencies:
-    "@types/lodash" "*"
-
-"@types/lodash@*":
+"@types/lodash@4.14.149":
   version "4.14.149"
-  resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440"
+  resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz#1342d63d948c6062838fbf961012f74d4e638440"
   integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==
 
 "@types/minimatch@*":
@@ -5155,11 +5141,6 @@ lockfile-lint@3.0.5:
     lockfile-lint-api "^5.0.4"
     yargs "^15.0.2"
 
-lodash._reinterpolate@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
-  integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-
 lodash.assignin@^4.0.9:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2"
@@ -5170,11 +5151,6 @@ lodash.bind@^4.1.4:
   resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35"
   integrity sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=
 
-lodash.debounce@4.0.8:
-  version "4.0.8"
-  resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
-  integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
-
 lodash.defaults@^4.0.1:
   version "4.2.0"
   resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@@ -5230,27 +5206,12 @@ lodash.sortby@^4.7.0:
   resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
   integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
 
-lodash.template@4.5.0:
-  version "4.5.0"
-  resolved "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
-  integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
-  dependencies:
-    lodash._reinterpolate "^3.0.0"
-    lodash.templatesettings "^4.0.0"
-
-lodash.templatesettings@^4.0.0:
-  version "4.2.0"
-  resolved "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
-  integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
-  dependencies:
-    lodash._reinterpolate "^3.0.0"
-
 lodash.unescape@4.0.1:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
   integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
 
-lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15:
+lodash@4.17.15, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15:
   version "4.17.15"
   resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
   integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==