From b2acd1e8a85e6979aafc0530359f8ff961ffd3f1 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Thu, 20 Dec 2018 11:21:15 +0100 Subject: [PATCH] Use specific methods from lodash to reduce bundle size --- front/src/App.vue | 2 +- front/src/components/Pagination.vue | 2 +- front/src/components/audio/Search.vue | 2 +- front/src/components/audio/Track.vue | 2 +- front/src/components/audio/album/Widget.vue | 2 +- front/src/components/audio/track/Widget.vue | 4 ++-- front/src/components/federation/LibraryWidget.vue | 2 +- front/src/components/instance/Stats.vue | 2 +- front/src/components/library/Artist.vue | 2 +- front/src/components/library/Artists.vue | 2 +- front/src/components/library/FileUpload.vue | 1 + front/src/components/library/Radios.vue | 2 +- front/src/components/library/radios/Builder.vue | 2 +- front/src/components/library/radios/Filter.vue | 2 +- front/src/components/manage/library/FilesTable.vue | 2 +- .../components/manage/users/InvitationsTable.vue | 2 +- front/src/components/manage/users/UsersTable.vue | 2 +- front/src/components/playlists/PlaylistModal.vue | 2 +- front/src/components/playlists/Widget.vue | 2 +- front/src/lodash.js | 13 +++++++++++++ front/src/store/instance.js | 2 +- front/src/store/queue.js | 2 +- front/src/views/content/libraries/FilesTable.vue | 2 +- front/src/views/playlists/List.vue | 2 +- front/tests/unit/specs/store/queue.spec.js | 2 +- 25 files changed, 38 insertions(+), 24 deletions(-) create mode 100644 front/src/lodash.js diff --git a/front/src/App.vue b/front/src/App.vue index 55cfab6e9f..d61e5a8375 100644 --- a/front/src/App.vue +++ b/front/src/App.vue @@ -52,7 +52,7 @@ <script> import axios from 'axios' -import _ from 'lodash' +import _ from '@/lodash' import {mapState} from 'vuex' import { WebSocketBridge } from 'django-channels' import GlobalEvents from '@/components/utils/global-events' diff --git a/front/src/components/Pagination.vue b/front/src/components/Pagination.vue index 1064a827e8..57cac2815a 100644 --- a/front/src/components/Pagination.vue +++ b/front/src/components/Pagination.vue @@ -24,7 +24,7 @@ </template> <script> -import _ from "lodash" +import _ from "@/lodash" export default { props: { diff --git a/front/src/components/audio/Search.vue b/front/src/components/audio/Search.vue index 06ae2c1cc7..e21a569bd9 100644 --- a/front/src/components/audio/Search.vue +++ b/front/src/components/audio/Search.vue @@ -29,7 +29,7 @@ </template> <script> -import _ from 'lodash' +import _ from '@/lodash' import axios from 'axios' import logger from '@/logging' import AlbumCard from '@/components/audio/album/Card' diff --git a/front/src/components/audio/Track.vue b/front/src/components/audio/Track.vue index c847d4de1a..888a81c007 100644 --- a/front/src/components/audio/Track.vue +++ b/front/src/components/audio/Track.vue @@ -4,7 +4,7 @@ <script> import {mapState} from 'vuex' -import _ from 'lodash' +import _ from '@/lodash' import url from '@/utils/url' import {Howl} from 'howler' diff --git a/front/src/components/audio/album/Widget.vue b/front/src/components/audio/album/Widget.vue index ccef492955..53f569c13b 100644 --- a/front/src/components/audio/album/Widget.vue +++ b/front/src/components/audio/album/Widget.vue @@ -36,7 +36,7 @@ </template> <script> -import _ from 'lodash' +import _ from '@/lodash' import axios from 'axios' import PlayButton from '@/components/audio/PlayButton' diff --git a/front/src/components/audio/track/Widget.vue b/front/src/components/audio/track/Widget.vue index 5ed2809810..f909945f0f 100644 --- a/front/src/components/audio/track/Widget.vue +++ b/front/src/components/audio/track/Widget.vue @@ -47,7 +47,7 @@ </template> <script> -import _ from 'lodash' +import _ from '@/lodash' import axios from 'axios' import PlayButton from '@/components/audio/PlayButton' @@ -109,7 +109,7 @@ export default { </script> <style scoped lang="scss"> -@import '../../../style/vendor/media'; +@import "../../../style/vendor/media"; .play-overlay { position: absolute; diff --git a/front/src/components/federation/LibraryWidget.vue b/front/src/components/federation/LibraryWidget.vue index abe993e466..0902b1b9d1 100644 --- a/front/src/components/federation/LibraryWidget.vue +++ b/front/src/components/federation/LibraryWidget.vue @@ -26,7 +26,7 @@ </template> <script> -import _ from 'lodash' +import _ from '@/lodash' import axios from 'axios' import LibraryCard from '@/views/content/remote/Card' diff --git a/front/src/components/instance/Stats.vue b/front/src/components/instance/Stats.vue index bb23b617c2..78632f6d23 100644 --- a/front/src/components/instance/Stats.vue +++ b/front/src/components/instance/Stats.vue @@ -61,7 +61,7 @@ </template> <script> -import _ from 'lodash' +import _ from '@/lodash' import axios from 'axios' import logger from '@/logging' diff --git a/front/src/components/library/Artist.vue b/front/src/components/library/Artist.vue index e16e6728d5..1cebafd8da 100644 --- a/front/src/components/library/Artist.vue +++ b/front/src/components/library/Artist.vue @@ -69,7 +69,7 @@ </template> <script> -import _ from "lodash" +import _ from "@/lodash" import axios from "axios" import logger from "@/logging" import backend from "@/audio/backend" diff --git a/front/src/components/library/Artists.vue b/front/src/components/library/Artists.vue index 83dd0e8e26..f6fcc1b8b8 100644 --- a/front/src/components/library/Artists.vue +++ b/front/src/components/library/Artists.vue @@ -70,7 +70,7 @@ <script> import axios from "axios" -import _ from "lodash" +import _ from "@/lodash" import $ from "jquery" import logger from "@/logging" diff --git a/front/src/components/library/FileUpload.vue b/front/src/components/library/FileUpload.vue index 0dbe4a4b67..d2c93202f6 100644 --- a/front/src/components/library/FileUpload.vue +++ b/front/src/components/library/FileUpload.vue @@ -123,6 +123,7 @@ </template> <script> +import _ from "@/lodash" import $ from "jquery"; import axios from "axios"; import logger from "@/logging"; diff --git a/front/src/components/library/Radios.vue b/front/src/components/library/Radios.vue index 48e9b1e2f3..42a825d230 100644 --- a/front/src/components/library/Radios.vue +++ b/front/src/components/library/Radios.vue @@ -92,7 +92,7 @@ <script> import axios from "axios" -import _ from "lodash" +import _ from "@/lodash" import $ from "jquery" import logger from "@/logging" diff --git a/front/src/components/library/radios/Builder.vue b/front/src/components/library/radios/Builder.vue index b015749798..5698a71f42 100644 --- a/front/src/components/library/radios/Builder.vue +++ b/front/src/components/library/radios/Builder.vue @@ -94,7 +94,7 @@ <script> import axios from "axios" import $ from "jquery" -import _ from "lodash" +import _ from "@/lodash" import BuilderFilter from "./Filter" import TrackTable from "@/components/audio/track/Table" import RadioButton from "@/components/radios/Button" diff --git a/front/src/components/library/radios/Filter.vue b/front/src/components/library/radios/Filter.vue index 470d852fad..5fd7eec893 100644 --- a/front/src/components/library/radios/Filter.vue +++ b/front/src/components/library/radios/Filter.vue @@ -64,7 +64,7 @@ <script> import axios from 'axios' import $ from 'jquery' -import _ from 'lodash' +import _ from '@/lodash' import Modal from '@/components/semantic/Modal' import TrackTable from '@/components/audio/track/Table' diff --git a/front/src/components/manage/library/FilesTable.vue b/front/src/components/manage/library/FilesTable.vue index 1f5fc39764..bcee39ffde 100644 --- a/front/src/components/manage/library/FilesTable.vue +++ b/front/src/components/manage/library/FilesTable.vue @@ -106,7 +106,7 @@ <script> import axios from 'axios' -import _ from 'lodash' +import _ from '@/lodash' import time from '@/utils/time' import Pagination from '@/components/Pagination' import ActionTable from '@/components/common/ActionTable' diff --git a/front/src/components/manage/users/InvitationsTable.vue b/front/src/components/manage/users/InvitationsTable.vue index d697c3821d..0c8b15c181 100644 --- a/front/src/components/manage/users/InvitationsTable.vue +++ b/front/src/components/manage/users/InvitationsTable.vue @@ -86,7 +86,7 @@ <script> import axios from 'axios' import moment from 'moment' -import _ from 'lodash' +import _ from '@/lodash' import Pagination from '@/components/Pagination' import ActionTable from '@/components/common/ActionTable' import OrderingMixin from '@/components/mixins/Ordering' diff --git a/front/src/components/manage/users/UsersTable.vue b/front/src/components/manage/users/UsersTable.vue index cb46ed811f..33b2433cb5 100644 --- a/front/src/components/manage/users/UsersTable.vue +++ b/front/src/components/manage/users/UsersTable.vue @@ -96,7 +96,7 @@ <script> import axios from 'axios' -import _ from 'lodash' +import _ from '@/lodash' import time from '@/utils/time' import Pagination from '@/components/Pagination' import ActionTable from '@/components/common/ActionTable' diff --git a/front/src/components/playlists/PlaylistModal.vue b/front/src/components/playlists/PlaylistModal.vue index a5a7e9ea02..3065631afb 100644 --- a/front/src/components/playlists/PlaylistModal.vue +++ b/front/src/components/playlists/PlaylistModal.vue @@ -67,7 +67,7 @@ </template> <script> -import _ from 'lodash' +import _ from '@/lodash' import axios from 'axios' import {mapState} from 'vuex' diff --git a/front/src/components/playlists/Widget.vue b/front/src/components/playlists/Widget.vue index 868719f1c2..c289e6de9f 100644 --- a/front/src/components/playlists/Widget.vue +++ b/front/src/components/playlists/Widget.vue @@ -15,7 +15,7 @@ </template> <script> -import _ from 'lodash' +import _ from '@/lodash' import axios from 'axios' import PlaylistCard from '@/components/playlists/Card' diff --git a/front/src/lodash.js b/front/src/lodash.js new file mode 100644 index 0000000000..91e1a0eac3 --- /dev/null +++ b/front/src/lodash.js @@ -0,0 +1,13 @@ +// cherry-pick specific lodash methods here to reduce bundle size + +export default { + clone: require('lodash/clone'), + debounce: require('lodash/debounce'), + get: require('lodash/get'), + merge: require('lodash/merge'), + range: require('lodash/range'), + shuffle: require('lodash/shuffle'), + sortBy: require('lodash/sortBy'), + throttle: require('lodash/throttle'), + uniq: require('lodash/uniq'), +} diff --git a/front/src/store/instance.js b/front/src/store/instance.js index 72a960cd05..dd0de956b4 100644 --- a/front/src/store/instance.js +++ b/front/src/store/instance.js @@ -1,6 +1,6 @@ import axios from 'axios' import logger from '@/logging' -import _ from 'lodash' +import _ from '@/lodash' function getDefaultUrl () { return ( diff --git a/front/src/store/queue.js b/front/src/store/queue.js index dba102b466..9a0d55c0bf 100644 --- a/front/src/store/queue.js +++ b/front/src/store/queue.js @@ -1,5 +1,5 @@ import logger from '@/logging' -import _ from 'lodash' +import _ from '@/lodash' export default { namespaced: true, diff --git a/front/src/views/content/libraries/FilesTable.vue b/front/src/views/content/libraries/FilesTable.vue index 21ad79e720..1f176d8cbb 100644 --- a/front/src/views/content/libraries/FilesTable.vue +++ b/front/src/views/content/libraries/FilesTable.vue @@ -120,7 +120,7 @@ <script> import axios from 'axios' -import _ from 'lodash' +import _ from '@/lodash' import time from '@/utils/time' import {normalizeQuery, parseTokens, compileTokens} from '@/search' diff --git a/front/src/views/playlists/List.vue b/front/src/views/playlists/List.vue index de9ca78ac7..64c78d72b0 100644 --- a/front/src/views/playlists/List.vue +++ b/front/src/views/playlists/List.vue @@ -56,7 +56,7 @@ <script> import axios from "axios" -import _ from "lodash" +import _ from "@/lodash" import $ from "jquery" import OrderingMixin from "@/components/mixins/Ordering" diff --git a/front/tests/unit/specs/store/queue.spec.js b/front/tests/unit/specs/store/queue.spec.js index 3fa481d193..140ce071a0 100644 --- a/front/tests/unit/specs/store/queue.spec.js +++ b/front/tests/unit/specs/store/queue.spec.js @@ -1,7 +1,7 @@ var sinon = require('sinon') import {expect} from 'chai' -import _ from 'lodash' +import _ from '@/lodash' import store from '@/store/queue' import { testAction } from '../../utils' -- GitLab