From 7c43e03b31831b8ec8b7115504a855b164bf702b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Sun, 12 Jul 2020 10:39:06 +0200 Subject: [PATCH] Move to webpack vue global config & clean routes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- appinfo/routes.php | 8 +- lib/Controller/PageController.php | 58 +------ package-lock.json | 270 ++++++++++++++++-------------- package.json | 17 +- webpack.common.js | 64 ------- webpack.dev.js | 13 -- webpack.js | 18 ++ webpack.prod.js | 7 - 8 files changed, 179 insertions(+), 276 deletions(-) delete mode 100644 webpack.common.js delete mode 100644 webpack.dev.js create mode 100644 webpack.js delete mode 100644 webpack.prod.js diff --git a/appinfo/routes.php b/appinfo/routes.php index 72735f6..5319209 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -29,10 +29,10 @@ return [ ['name' => 'page#index', 'url' => '/', 'verb' => 'GET'], // Before /{hash} to avoid conflict - ['name' => 'page#createForm', 'url' => '/new', 'verb' => 'GET'], - ['name' => 'page#editForm', 'url' => '/{hash}/edit', 'verb' => 'GET'], - ['name' => 'page#cloneForm', 'url' => '/{hash}/clone', 'verb' => 'GET'], - ['name' => 'page#getResult', 'url' => '/{hash}/results', 'verb' => 'GET'], + ['name' => 'page#index', 'url' => '/new', 'verb' => 'GET', 'postfix' => 'create'], + ['name' => 'page#index', 'url' => '/{hash}/edit', 'verb' => 'GET', 'postfix' => 'edit'], + ['name' => 'page#index', 'url' => '/{hash}/clone', 'verb' => 'GET', 'postfix' => 'clone'], + ['name' => 'page#index', 'url' => '/{hash}/results', 'verb' => 'GET', 'postfix' => 'results'], ['name' => 'page#goto_form', 'url' => '/{hash}', 'verb' => 'GET'], diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index 1b35567..8334915 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -126,61 +126,7 @@ class PageController extends Controller { * @return TemplateResponse */ public function index(): TemplateResponse { - Util::addScript($this->appName, 'forms'); - Util::addStyle($this->appName, 'forms'); - $this->initialStateService->provideInitialState($this->appName, 'maxStringLengths', $this->maxStringLengths); - return new TemplateResponse($this->appName, self::TEMPLATE_MAIN); - } - - /** - * @NoAdminRequired - * @NoCSRFRequired - * - * @return TemplateResponse - */ - public function createForm(): TemplateResponse { - Util::addScript($this->appName, 'forms'); - Util::addStyle($this->appName, 'forms'); - $this->initialStateService->provideInitialState($this->appName, 'maxStringLengths', $this->maxStringLengths); - return new TemplateResponse($this->appName, self::TEMPLATE_MAIN); - } - - /** - * @NoAdminRequired - * @NoCSRFRequired - * - * TODO: Implement cloning - * - * @return TemplateResponse - */ - public function cloneForm(): TemplateResponse { - Util::addScript($this->appName, 'forms'); - Util::addStyle($this->appName, 'forms'); - $this->initialStateService->provideInitialState($this->appName, 'maxStringLengths', $this->maxStringLengths); - return new TemplateResponse($this->appName, self::TEMPLATE_MAIN); - } - - /** - * @NoAdminRequired - * @NoCSRFRequired - * - * @return TemplateResponse - */ - public function editForm(): TemplateResponse { - Util::addScript($this->appName, 'forms'); - Util::addStyle($this->appName, 'forms'); - $this->initialStateService->provideInitialState($this->appName, 'maxStringLengths', $this->maxStringLengths); - return new TemplateResponse($this->appName, self::TEMPLATE_MAIN); - } - - /** - * @NoAdminRequired - * @NoCSRFRequired - * - * @return TemplateResponse - */ - public function getResult(): TemplateResponse { - Util::addScript($this->appName, 'forms'); + Util::addScript($this->appName, 'forms-main'); Util::addStyle($this->appName, 'forms'); $this->initialStateService->provideInitialState($this->appName, 'maxStringLengths', $this->maxStringLengths); return new TemplateResponse($this->appName, self::TEMPLATE_MAIN); @@ -219,7 +165,7 @@ class PageController extends Controller { } // Main Template to fill the form - Util::addScript($this->appName, 'submit'); + Util::addScript($this->appName, 'forms-submit'); $this->initialStateService->provideInitialState($this->appName, 'form', $this->formsService->getPublicForm($form->getId())); $this->initialStateService->provideInitialState($this->appName, 'maxStringLengths', $this->maxStringLengths); return $this->provideTemplate(self::TEMPLATE_MAIN, $form); diff --git a/package-lock.json b/package-lock.json index db3dbd6..8be49ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -241,6 +241,11 @@ "ms": "^2.1.1" } }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2897,9 +2902,9 @@ } }, "@nextcloud/eslint-config": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-2.0.0.tgz", - "integrity": "sha512-rpBCwFm4/UpJUhGf38CHbOGzoQikvht90JqqbI0GtbpP2Ty1F8Pvr/3ntg+OVeu6utkJL1hybtD9pQswiZfWCg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@nextcloud/eslint-config/-/eslint-config-2.2.0.tgz", + "integrity": "sha512-8L60rcZHEYq28lKeQ64lBsDFlTMIYXujpuqa2tdjSFP0ynqRMGoW0wtmGJVdNHKTXATy0Yna02WQQNGy5+OHEg==", "dev": true }, "@nextcloud/eslint-plugin": { @@ -3040,6 +3045,12 @@ "vue2-datepicker": "^3.4.1" } }, + "@nextcloud/webpack-vue-config": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@nextcloud/webpack-vue-config/-/webpack-vue-config-1.0.2.tgz", + "integrity": "sha512-m0OT7xGjNfGjvX3yHOWH+0eVkUeWjY1jAm/yF7OlUFRaIg7cHeplajy0dMpixl/eGl8LojHiNZTP6iTomA5RJA==", + "dev": true + }, "@nodelib/fs.scandir": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", @@ -4673,6 +4684,17 @@ } } }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, "clone-regexp": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", @@ -5569,9 +5591,9 @@ } }, "eslint-config-standard": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", - "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz", + "integrity": "sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg==", "dev": true }, "eslint-import-resolver-node": { @@ -5643,45 +5665,103 @@ } }, "eslint-loader": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.4.tgz", - "integrity": "sha512-I496aBd+Hi23Y0Cx+sKvw+VwlJre4ScIRlkrvTO6Scq68X/UXbN6F3lAhN8b0Zv8atAyprkyrA42K5QBJtCyaw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-4.0.2.tgz", + "integrity": "sha512-EDpXor6lsjtTzZpLUn7KmXs02+nIjGcgees9BYjNkWra3jVq5vVa8IoCKgzT2M7dNNeoMBtaSG83Bd40N3poLw==", "dev": true, "requires": { + "find-cache-dir": "^3.3.1", "fs-extra": "^8.1.0", - "loader-fs-cache": "^1.0.3", - "loader-utils": "^1.2.3", + "loader-utils": "^2.0.0", "object-hash": "^2.0.3", "schema-utils": "^2.6.5" }, "dependencies": { - "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true }, - "schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", "dev": true, "requires": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true } } }, @@ -8202,12 +8282,6 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, - "klona": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/klona/-/klona-1.1.2.tgz", - "integrity": "sha512-xf88rTeHiXk+XE2Vhi6yj8Wm3gMZrygGdKjJqN8HkV+PwF/t50/LdAKHoHpPcxFAlmQszTZ1CugrK25S7qDRLA==", - "dev": true - }, "known-css-properties": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.19.0.tgz", @@ -8263,57 +8337,6 @@ } } }, - "loader-fs-cache": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", - "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", - "dev": true, - "requires": { - "find-cache-dir": "^0.1.1", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "mkdirp": "^0.5.1", - "pkg-dir": "^1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - } - } - } - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -8353,9 +8376,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==" }, "lodash.get": { "version": "4.4.2", @@ -10663,39 +10686,22 @@ } }, "sass-loader": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-9.0.2.tgz", - "integrity": "sha512-nphcum3jNI442njnrZ5wJgSNX5lfEOHOKHCLf+PrTIaleploKqAMUuT9CVKjf+lyi6c2MCGPHh1vb9nGsjnZJA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", "dev": true, "requires": { - "klona": "^1.1.1", - "loader-utils": "^2.0.0", + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", "neo-async": "^2.6.1", - "schema-utils": "^2.7.0", - "semver": "^7.3.2" + "schema-utils": "^2.6.1", + "semver": "^6.3.0" }, "dependencies": { - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } @@ -10806,6 +10812,15 @@ "safe-buffer": "^5.0.1" } }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -13190,12 +13205,13 @@ } }, "webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.0.9.tgz", + "integrity": "sha512-P4teh6O26xIDPugOGX61wPxaeP918QOMjmzhu54zTVcLtOS28ffPWtnv+ilt3wscwBUCL2WNMnh97XkrKqt9Fw==", "dev": true, "requires": { - "lodash": "^4.17.15" + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" } }, "webpack-sources": { @@ -13240,6 +13256,12 @@ "string-width": "^1.0.2 || 2" } }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", diff --git a/package.json b/package.json index 3b44cfb..6bbc460 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,9 @@ "license": "AGPL-3.0", "private": true, "scripts": { - "build": "NODE_ENV=production webpack --progress --hide-modules --config webpack.prod.js", - "dev": "NODE_ENV=development webpack --progress --config webpack.dev.js", - "watch": "NODE_ENV=development webpack --progress --watch --config webpack.dev.js", + "build": "NODE_ENV=production webpack --progress --hide-modules --config webpack.js", + "dev": "NODE_ENV=development webpack --progress --config webpack.js", + "watch": "NODE_ENV=development webpack --progress --watch --config webpack.js", "lint": "eslint --ext .js,.vue src", "lint:fix": "eslint --ext .js,.vue src --fix", "stylelint": "stylelint css/*.css css/*.scss src/**/*.vue", @@ -55,15 +55,16 @@ "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/preset-env": "^7.10.4", "@nextcloud/browserslist-config": "^1.0.0", - "@nextcloud/eslint-config": "^2.0.0", + "@nextcloud/eslint-config": "^2.2.0", "@nextcloud/eslint-plugin": "^1.4.0", + "@nextcloud/webpack-vue-config": "^1.0.2", "babel-eslint": "^10.1.0", "babel-loader": "^8.1.0", "css-loader": "^3.6.0", "eslint": "^6.8.0", - "eslint-config-standard": "^12.0.0", + "eslint-config-standard": "^14.1.1", "eslint-import-resolver-webpack": "^0.12.2", - "eslint-loader": "^3.0.4", + "eslint-loader": "^4.0.2", "eslint-plugin-import": "^2.22.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^4.2.1", @@ -71,7 +72,7 @@ "eslint-plugin-vue": "^6.2.2", "file-loader": "^6.0.0", "node-sass": "^4.14.1", - "sass-loader": "^9.0.2", + "sass-loader": "^8.0.2", "stylelint": "^13.6.1", "stylelint-config-recommended-scss": "^4.2.0", "stylelint-scss": "^3.18.0", @@ -82,6 +83,6 @@ "vue-template-compiler": "^2.6.11", "webpack": "^4.43.0", "webpack-cli": "^3.3.12", - "webpack-merge": "^4.2.2" + "webpack-merge": "^5.0.9" } } diff --git a/webpack.common.js b/webpack.common.js deleted file mode 100644 index 713b5c8..0000000 --- a/webpack.common.js +++ /dev/null @@ -1,64 +0,0 @@ -const path = require('path') -const webpack = require('webpack') - -const StyleLintPlugin = require('stylelint-webpack-plugin') -const VueLoaderPlugin = require('vue-loader/lib/plugin') - -const appName = process.env.npm_package_name.toString() -const appVersion = process.env.npm_package_version.toString() -console.info('Building', appName, appVersion, '\n') - -module.exports = { - entry: { - forms: path.resolve(path.join('src', 'main.js')), - submit: path.resolve(path.join('src', 'submit.js')), - }, - output: { - path: path.resolve('./js'), - publicPath: '/js/', - filename: `[name].js`, - chunkFilename: `${appName}.[name].js?v=[contenthash]`, - }, - module: { - rules: [ - { - test: /\.css$/, - use: ['vue-style-loader', 'css-loader'], - }, - { - test: /\.scss$/, - use: ['vue-style-loader', 'css-loader', 'sass-loader'], - }, - { - test: /\.(js|vue)$/, - use: 'eslint-loader', - exclude: /node_modules/, - enforce: 'pre', - }, - { - test: /\.vue$/, - loader: 'vue-loader', - exclude: /node_modules/, - }, - { - test: /\.js$/, - loader: 'babel-loader', - exclude: /node_modules/, - }, - ], - }, - plugins: [ - new VueLoaderPlugin(), - new StyleLintPlugin({ - files: ['**/*.vue'], - }), - // Make appName & appVersion available as a constant - new webpack.DefinePlugin({ appName }), - new webpack.DefinePlugin({ appVersion }), - new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), - ], - resolve: { - extensions: ['*', '.js', '.vue'], - symlinks: false, - }, -} diff --git a/webpack.dev.js b/webpack.dev.js deleted file mode 100644 index af71a3a..0000000 --- a/webpack.dev.js +++ /dev/null @@ -1,13 +0,0 @@ -/** jshint esversion: 6 */ -const merge = require('webpack-merge') -const common = require('./webpack.common.js') - -module.exports = merge(common, { - mode: 'development', - devServer: { - historyApiFallback: true, - noInfo: true, - overlay: true, - }, - devtool: 'source-map', -}) diff --git a/webpack.js b/webpack.js new file mode 100644 index 0000000..5295fc9 --- /dev/null +++ b/webpack.js @@ -0,0 +1,18 @@ +const { merge } = require('webpack-merge') +const path = require('path') +const webpack = require('webpack') +const webpackConfig = require('@nextcloud/webpack-vue-config') + +const config = { + entry: { + submit: path.resolve(path.join('src', 'submit.js')), + }, + plugins: [ + new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), + ], +} + +if (process.env.NODE_ENV === 'production') { + module.exports = merge(config, webpackConfig.prod) +} +module.exports = merge(config, webpackConfig.dev) diff --git a/webpack.prod.js b/webpack.prod.js deleted file mode 100644 index f127f5e..0000000 --- a/webpack.prod.js +++ /dev/null @@ -1,7 +0,0 @@ -/** jshint esversion: 6 */ -const merge = require('webpack-merge') -const common = require('./webpack.common.js') - -module.exports = merge(common, { - mode: 'production', -})