You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2020/09/17 21:28:34 UTC

[airavata-django-portal] 02/03: Documenting how to format JS/Vue.js code

This is an automated email from the ASF dual-hosted git repository.

machristie pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git

commit c9b85416e0264b53c5a4b021510496fe9c2f827a
Author: Marcus Christie <ma...@apache.org>
AuthorDate: Thu Sep 17 17:25:42 2020 -0400

    Documenting how to format JS/Vue.js code
---
 README.md                                          |  1 +
 django_airavata/apps/admin/.prettierignore         |  2 ++
 django_airavata/apps/admin/package.json            |  4 ++-
 django_airavata/apps/admin/yarn.lock               |  5 +++
 django_airavata/apps/api/.prettierignore           |  1 +
 django_airavata/apps/api/package.json              |  4 ++-
 django_airavata/apps/api/yarn.lock                 |  5 +++
 django_airavata/apps/dataparsers/.prettierignore   |  2 ++
 django_airavata/apps/dataparsers/package.json      |  4 ++-
 django_airavata/apps/dataparsers/yarn.lock         |  5 +++
 django_airavata/apps/groups/.prettierignore        |  2 ++
 django_airavata/apps/groups/package.json           |  4 ++-
 django_airavata/apps/groups/yarn.lock              |  5 +++
 django_airavata/apps/workspace/.prettierignore     |  4 +++
 .../.prettierignore                                |  2 ++
 .../package.json                                   |  4 ++-
 .../django-airavata-workspace-plugin-api/yarn.lock |  5 +++
 django_airavata/apps/workspace/package.json        |  4 ++-
 django_airavata/apps/workspace/yarn.lock           |  5 +++
 django_airavata/static/common/.prettierignore      |  2 ++
 django_airavata/static/common/package.json         |  4 ++-
 django_airavata/static/common/yarn.lock            |  5 +++
 docs/dev/developing_frontend.md                    | 38 +++++++++++++---------
 docs/dev/new_django_app.md                         |  4 ++-
 requirements-dev.txt                               |  2 +-
 25 files changed, 99 insertions(+), 24 deletions(-)

diff --git a/README.md b/README.md
index e6f9725..14cec56 100644
--- a/README.md
+++ b/README.md
@@ -148,6 +148,7 @@ libraries.
 
 Use a code editor that integrates with editorconfig and flake8. I also recommend
 autopep8 for automatically formatting code to follow the PEP8 guidelines.
+Prettier is used for formatting JavaScript and Vue.js code.
 
 See the docs for more information on
 [developing the backend](./docs/dev/developing_backend.md) and
diff --git a/django_airavata/apps/admin/.prettierignore b/django_airavata/apps/admin/.prettierignore
new file mode 100644
index 0000000..0d842b9
--- /dev/null
+++ b/django_airavata/apps/admin/.prettierignore
@@ -0,0 +1,2 @@
+dist
+templates
diff --git a/django_airavata/apps/admin/package.json b/django_airavata/apps/admin/package.json
index 1e97060..41b8299 100644
--- a/django_airavata/apps/admin/package.json
+++ b/django_airavata/apps/admin/package.json
@@ -8,7 +8,8 @@
     "serve": "vue-cli-service serve ./static/django_airavata_admin/src/main.js",
     "build": "vue-cli-service build ./static/django_airavata_admin/src/main.js",
     "lint": "vue-cli-service lint ./static/django_airavata_admin/src/",
-    "lint:visualstudio": "vue-cli-service lint --format visualstudio ./static/django_airavata_admin/src/"
+    "lint:visualstudio": "vue-cli-service lint --format visualstudio ./static/django_airavata_admin/src/",
+    "format": "prettier --write ."
   },
   "dependencies": {
     "bootstrap": "^4.3.1",
@@ -33,6 +34,7 @@
     "@vue/cli-service": "^3.0.1",
     "@vue/component-compiler-utils": "^2.3.0",
     "autoprefixer": "^9.3.1",
+    "prettier": "^2.1.2",
     "vue-loader": "^15.5.1",
     "vue-template-compiler": "^2.5.22",
     "webpack": "^4.28.4",
diff --git a/django_airavata/apps/admin/yarn.lock b/django_airavata/apps/admin/yarn.lock
index 6cbf48a..d496046 100644
--- a/django_airavata/apps/admin/yarn.lock
+++ b/django_airavata/apps/admin/yarn.lock
@@ -6688,6 +6688,11 @@ prettier@^1.18.2:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
   integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
 
+prettier@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
+  integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
+
 pretty-error@^2.0.2:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
diff --git a/django_airavata/apps/api/.prettierignore b/django_airavata/apps/api/.prettierignore
new file mode 100644
index 0000000..1521c8b
--- /dev/null
+++ b/django_airavata/apps/api/.prettierignore
@@ -0,0 +1 @@
+dist
diff --git a/django_airavata/apps/api/package.json b/django_airavata/apps/api/package.json
index c9e22b1..5cc5385 100644
--- a/django_airavata/apps/api/package.json
+++ b/django_airavata/apps/api/package.json
@@ -13,7 +13,8 @@
     "watch": "webpack --watch",
     "test": "jest",
     "test:watch": "jest --watch",
-    "lint": "eslint ./static/django_airavata_api/js/"
+    "lint": "eslint ./static/django_airavata_api/js/",
+    "format": "prettier --write ."
   },
   "dependencies": {
     "@babel/polyfill": "^7.0.0",
@@ -33,6 +34,7 @@
     "eslint": "^5.12.0",
     "eslint-plugin-import": "^2.14.0",
     "jest": "^23.6.0",
+    "prettier": "^2.1.2",
     "regenerator-runtime": "^0.13.1",
     "webpack": "^4.34.0",
     "webpack-cli": "^3.3.4"
diff --git a/django_airavata/apps/api/yarn.lock b/django_airavata/apps/api/yarn.lock
index 709ad97..541c72c 100644
--- a/django_airavata/apps/api/yarn.lock
+++ b/django_airavata/apps/api/yarn.lock
@@ -4838,6 +4838,11 @@ preserve@^0.2.0:
   resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
   integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
 
+prettier@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
+  integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
+
 pretty-format@^23.6.0:
   version "23.6.0"
   resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760"
diff --git a/django_airavata/apps/dataparsers/.prettierignore b/django_airavata/apps/dataparsers/.prettierignore
new file mode 100644
index 0000000..0d842b9
--- /dev/null
+++ b/django_airavata/apps/dataparsers/.prettierignore
@@ -0,0 +1,2 @@
+dist
+templates
diff --git a/django_airavata/apps/dataparsers/package.json b/django_airavata/apps/dataparsers/package.json
index b2f47fe..cf0b9db 100644
--- a/django_airavata/apps/dataparsers/package.json
+++ b/django_airavata/apps/dataparsers/package.json
@@ -8,7 +8,8 @@
     "serve": "vue-cli-service serve",
     "build": "vue-cli-service build",
     "lint": "vue-cli-service lint ./static/django_airavata_dataparsers/js",
-    "lint:visualstudio": "vue-cli-service lint --format=visualstudio ./static/django_airavata_dataparsers/js"
+    "lint:visualstudio": "vue-cli-service lint --format=visualstudio ./static/django_airavata_dataparsers/js",
+    "format": "prettier --write ."
   },
   "dependencies": {
     "bootstrap": "^4.1.3",
@@ -25,6 +26,7 @@
     "babel-eslint": "^10.0.1",
     "eslint": "^5.8.0",
     "eslint-plugin-vue": "^5.0.0-0",
+    "prettier": "^2.1.2",
     "vue-loader": "^15.5.1",
     "vue-template-compiler": "^2.5.22",
     "webpack": "^4.28.4",
diff --git a/django_airavata/apps/dataparsers/yarn.lock b/django_airavata/apps/dataparsers/yarn.lock
index e88eef2..23bfdd6 100644
--- a/django_airavata/apps/dataparsers/yarn.lock
+++ b/django_airavata/apps/dataparsers/yarn.lock
@@ -6652,6 +6652,11 @@ prettier@^1.18.2:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
   integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
 
+prettier@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
+  integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
+
 pretty-error@^2.0.2:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
diff --git a/django_airavata/apps/groups/.prettierignore b/django_airavata/apps/groups/.prettierignore
new file mode 100644
index 0000000..0d842b9
--- /dev/null
+++ b/django_airavata/apps/groups/.prettierignore
@@ -0,0 +1,2 @@
+dist
+templates
diff --git a/django_airavata/apps/groups/package.json b/django_airavata/apps/groups/package.json
index a4414df..382c677 100755
--- a/django_airavata/apps/groups/package.json
+++ b/django_airavata/apps/groups/package.json
@@ -8,7 +8,8 @@
     "serve": "vue-cli-service serve",
     "build": "vue-cli-service build",
     "lint": "vue-cli-service lint ./static/django_airavata_groups/js",
-    "lint:visualstudio": "vue-cli-service lint --format visualstudio ./static/django_airavata_groups/js"
+    "lint:visualstudio": "vue-cli-service lint --format visualstudio ./static/django_airavata_groups/js",
+    "format": "prettier --write ."
   },
   "dependencies": {
     "bootstrap": "^4.0.0-beta.2",
@@ -26,6 +27,7 @@
     "babel-eslint": "^10.0.1",
     "eslint": "^5.8.0",
     "eslint-plugin-vue": "^5.0.0-0",
+    "prettier": "^2.1.2",
     "vue-loader": "^15.5.1",
     "vue-template-compiler": "^2.5.22",
     "webpack": "^4.28.4",
diff --git a/django_airavata/apps/groups/yarn.lock b/django_airavata/apps/groups/yarn.lock
index f606c56..c66ba8e 100644
--- a/django_airavata/apps/groups/yarn.lock
+++ b/django_airavata/apps/groups/yarn.lock
@@ -6652,6 +6652,11 @@ prettier@^1.18.2:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
   integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
 
+prettier@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
+  integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
+
 pretty-error@^2.0.2:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
diff --git a/django_airavata/apps/workspace/.prettierignore b/django_airavata/apps/workspace/.prettierignore
new file mode 100644
index 0000000..602c283
--- /dev/null
+++ b/django_airavata/apps/workspace/.prettierignore
@@ -0,0 +1,4 @@
+dist
+templates
+# This folder has it's own prettier config
+django-airavata-workspace-plugin-api
diff --git a/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/.prettierignore b/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/.prettierignore
new file mode 100644
index 0000000..0d842b9
--- /dev/null
+++ b/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/.prettierignore
@@ -0,0 +1,2 @@
+dist
+templates
diff --git a/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/package.json b/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/package.json
index 22465bb..63efd2b 100644
--- a/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/package.json
+++ b/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/package.json
@@ -12,7 +12,8 @@
     "watch": "vue-cli-service build --watch --target lib --name index js/index.js",
     "build": "vue-cli-service build --target lib --name index js/index.js",
     "lint": "vue-cli-service lint ./js/",
-    "lint:visualstudio": "vue-cli-service lint --format visualstudio ./js/"
+    "lint:visualstudio": "vue-cli-service lint --format visualstudio ./js/",
+    "format": "prettier --write ."
   },
   "peerDependencies": {
     "django-airavata-api": "^1.0.0-beta"
@@ -24,6 +25,7 @@
     "babel-eslint": "^10.0.1",
     "eslint": "^5.8.0",
     "eslint-plugin-vue": "^5.0.0-0",
+    "prettier": "^2.1.2",
     "terser": "^4.1.2",
     "vue-loader": "^15.5.1",
     "vue-template-compiler": "^2.5.17",
diff --git a/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/yarn.lock b/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/yarn.lock
index 4b80a69..3de1961 100644
--- a/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/yarn.lock
+++ b/django_airavata/apps/workspace/django-airavata-workspace-plugin-api/yarn.lock
@@ -6387,6 +6387,11 @@ prettier@^1.18.2:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
   integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
 
+prettier@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
+  integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
+
 pretty-error@^2.0.2:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
diff --git a/django_airavata/apps/workspace/package.json b/django_airavata/apps/workspace/package.json
index 424c5ed..6471b77 100644
--- a/django_airavata/apps/workspace/package.json
+++ b/django_airavata/apps/workspace/package.json
@@ -11,7 +11,8 @@
     "lint:visualstudio": "vue-cli-service lint --format visualstudio ./static/django_airavata_workspace/js",
     "test": "npm run test:unit",
     "test:unit": "vue-cli-service test:unit",
-    "test:unit:watch": "vue-cli-service test:unit --watch"
+    "test:unit:watch": "vue-cli-service test:unit --watch",
+    "format": "prettier --write ."
   },
   "dependencies": {
     "bootstrap": "^4.3.1",
@@ -37,6 +38,7 @@
     "babel-loader": "^8.0.5",
     "eslint": "^5.8.0",
     "eslint-plugin-vue": "^5.0.0-0",
+    "prettier": "^2.1.2",
     "vue-loader": "^15.5.1",
     "vue-template-compiler": "^2.5.22",
     "webpack": "^4.28.4",
diff --git a/django_airavata/apps/workspace/yarn.lock b/django_airavata/apps/workspace/yarn.lock
index f22f111..cb0abc3 100644
--- a/django_airavata/apps/workspace/yarn.lock
+++ b/django_airavata/apps/workspace/yarn.lock
@@ -7907,6 +7907,11 @@ prettier@^1.18.2:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
   integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
 
+prettier@^2.1.2:
+  version "2.1.2"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5"
+  integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==
+
 pretty-error@^2.0.2:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
diff --git a/django_airavata/static/common/.prettierignore b/django_airavata/static/common/.prettierignore
new file mode 100644
index 0000000..de4d1f0
--- /dev/null
+++ b/django_airavata/static/common/.prettierignore
@@ -0,0 +1,2 @@
+dist
+node_modules
diff --git a/django_airavata/static/common/package.json b/django_airavata/static/common/package.json
index 3107c74..aab9a3b 100644
--- a/django_airavata/static/common/package.json
+++ b/django_airavata/static/common/package.json
@@ -10,7 +10,8 @@
     "watch": "vue-cli-service build --watch --mode production",
     "build": "vue-cli-service build",
     "lint": "vue-cli-service lint ./js/",
-    "lint:visualstudio": "vue-cli-service lint --format visualstudio ./js/"
+    "lint:visualstudio": "vue-cli-service lint --format visualstudio ./js/",
+    "format": "prettier --write ."
   },
   "dependencies": {
     "@fortawesome/fontawesome-free": "^5.6.3",
@@ -38,6 +39,7 @@
     "eslint-plugin-vue": "^5.0.0-0",
     "file-loader": "^3.0.1",
     "node-sass": "^4.11.0",
+    "prettier": "^2.0.5",
     "sass-loader": "^7.1.0",
     "vue-loader": "^15.5.1",
     "vue-template-compiler": "^2.5.22",
diff --git a/django_airavata/static/common/yarn.lock b/django_airavata/static/common/yarn.lock
index 58fe97a..ff0befc 100644
--- a/django_airavata/static/common/yarn.lock
+++ b/django_airavata/static/common/yarn.lock
@@ -6899,6 +6899,11 @@ prettier@^1.18.2:
   resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
   integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
 
+prettier@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4"
+  integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==
+
 pretty-error@^2.0.2:
   version "2.1.1"
   resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3"
diff --git a/docs/dev/developing_frontend.md b/docs/dev/developing_frontend.md
index eb885b5..1fe293b 100644
--- a/docs/dev/developing_frontend.md
+++ b/docs/dev/developing_frontend.md
@@ -1,14 +1,14 @@
 # Getting started with Vue.js development
 
-Make sure you have [the latest version of Node.js LTS
-installed](https://nodejs.org/en/download/). You also need to install [the
-Yarn package manager](https://yarnpkg.com).
+Make sure you have
+[the latest version of Node.js LTS installed](https://nodejs.org/en/download/).
+You also need to install [the Yarn package manager](https://yarnpkg.com).
 
 Start the Django portal (`python manage.py runserver`). Navigate to the Django
-app directory and run `yarn` and then `yarn` to start up the dev
-server. Now you can load the Django app in your browser and as you make code
-changes they should automatically be hot-reloaded in the browser. For example,
-if you wanted to work on the _workspace_ app's frontend code, you could do
+app directory and run `yarn` and then `yarn` to start up the dev server. Now you
+can load the Django app in your browser and as you make code changes they should
+automatically be hot-reloaded in the browser. For example, if you wanted to work
+on the _workspace_ app's frontend code, you could do
 
 ```
 cd django_airavata/apps/workspace
@@ -53,9 +53,9 @@ entry point will generally have the following structure:
 import { components, entry } from "django-airavata-common-ui";
 import SomethingListContainer from "./containers/SomethingListContainer.vue";
 
-entry(Vue => {
+entry((Vue) => {
     new Vue({
-        render: h => h(components.MainLayout, [h(SomethingListContainer)])
+        render: (h) => h(components.MainLayout, [h(SomethingListContainer)]),
     }).$mount("#something-list");
 });
 ```
@@ -133,25 +133,33 @@ the Vue.js app container via a property:
 import { components, entry } from "django-airavata-common-ui";
 import ViewSomethingContainer from "./containers/ViewSomethingContainer.vue";
 
-entry(Vue => {
+entry((Vue) => {
     new Vue({
         render(h) {
             return h(components.MainLayout, [
                 h(ViewSomethingContainer, {
                     props: {
-                        somethingId: this.somethingId
-                    }
-                })
+                        somethingId: this.somethingId,
+                    },
+                }),
             ]);
         },
         data() {
             return {
-                somethingId: null
+                somethingId: null,
             };
         },
         beforeMount() {
             this.somethingId = this.$el.dataset.somethingId;
-        }
+        },
     }).$mount("#view-something");
 });
 ```
+
+## Automatically formatting source code
+
+Run `prettier --write .` with the following:
+
+```
+yarn format
+```
diff --git a/docs/dev/new_django_app.md b/docs/dev/new_django_app.md
index 1cb6b78..bea9d41 100644
--- a/docs/dev/new_django_app.md
+++ b/docs/dev/new_django_app.md
@@ -232,7 +232,8 @@ django_airavata/apps/myapp):
   "scripts": {
     "serve": "vue-cli-service serve",
     "build": "vue-cli-service build",
-    "lint": "vue-cli-service lint"
+    "lint": "vue-cli-service lint",
+    "format": "prettier --write ."
   },
   "dependencies": {
     "bootstrap": "^4.0.0-beta.2",
@@ -248,6 +249,7 @@ django_airavata/apps/myapp):
     "babel-eslint": "^10.0.1",
     "eslint": "^5.8.0",
     "eslint-plugin-vue": "^5.0.0-0",
+    "prettier": "^2.1.2",
     "vue-template-compiler": "^2.5.21",
     "webpack-bundle-tracker": "^0.4.2-beta"
   },
diff --git a/requirements-dev.txt b/requirements-dev.txt
index b5a0618..229feeb 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -1,7 +1,7 @@
 -r requirements.txt
 autopep8==1.3.5
 flake8==3.5.0
-flake8-isort==2.5
+flake8-isort==4.0.0
 isort==5.2.2
 mkdocs==1.0.4
 Markdown==3.2.1