text: "use strict";(globalThis["webpackChunkquasar_dev"]=globalThis["webpackChunkquasar_dev"]||[]).push([[84324],{84324:(e,o,t)=>{t.r(o),t.d(o,{default:()=>Bo});var a=t(83673);const n=(0,a._)("p",null,"This guide covers ways in which you can become a part of the ongoing development of Quasar.",-1),s=(0,a.Uk)("But, before we begin, a first important note. Everyone interacting in Quasar is expected to follow the "),i=(0,a.Uk)("Quasar code of conduct"),l=(0,a.Uk)("."),r=(0,a._)("p",null,"Now that we’ve got that covered, let’s go!",-1),u=(0,a._)("p",null,"After reading this guide, you will know:",-1),c=(0,a._)("ul",null,[(0,a._)("li",null,"How to use GitHub to report issues."),(0,a._)("li",null,"How to clone master and run the test suite."),(0,a._)("li",null,"How to help resolve existing issues."),(0,a._)("li",null,"How to contribute to the Quasar documentation."),(0,a._)("li",null,"How to create a Quasar App Extension."),(0,a._)("li",null,"How to contribute to the Quasar code.")],-1),d=(0,a._)("p",null,"Quasar is not “someone else’s framework”. Many people have contributed to Quasar ranging from a single character to massive architectural changes or significant documentation - all with the goal of making Quasar better for everyone. Even if you don’t feel up to writing code or documentation yet, there are a variety of other ways that you can contribute, from reporting issues to testing patches.",-1),h=(0,a._)("p",null,"One of the easiest ways to contribute is to answer questions in the different Q&A systems we have. Be a supportive and positive member of the Quasar community by answering questions you know answers to, or even by adding your best guess. Being a part of such discussions can also be a good learning experience. It’s a win-win!",-1),p=(0,a._)("p",null,"Here are our discussion/Q&A venues:",-1),g=(0,a.Uk)("Forum"),_=(0,a.Uk)(": The best place to ask questions and get answers about Quasar and its ecosystem."),k=(0,a.Uk)("Chat"),m=(0,a.Uk)(": A place for Quasar devs to meet and chat in real time."),y=(0,a._)("p",null,"Apart from answering questions and sharing resources in the forum and chat, there are a few other less obvious ways to share and expand what you know:",-1),f=(0,a._)("li",null,[(0,a._)("strong",null,"Develop learning materials"),(0,a.Uk)(". It’s often said that the best way to learn is to teach. If there’s something interesting you’re doing with Quasar, strengthen your expertise by writing a blog post, developing a workshop, or even publishing a gist that you share on social media.")],-1),b=(0,a._)("strong",null,"Share your tech stack",-1),w=(0,a.Uk)(". Show others which technologies are well tested and can be integrated with Quasar. Promote your project and "),U=(0,a.Uk)("fill out your favorite Quasar-based stack"),v=(0,a.Uk)(". Make sure to mention @ Quasar framework and all other relevant technologies."),q=(0,a._)("li",null,[(0,a._)("strong",null,"Watch a repo you care about"),(0,a.Uk)(". This will send you notifications whenever there’s activity in that repository, giving you insider knowledge about ongoing discussions and upcoming features. It’s a fantastic way to build expertise so that you’re eventually able to help address issues and pull requests.")],-1),x=(0,a.Uk)("GitHub"),Q=(0,a.Uk)(": If you have a bug to report or feature to request, that’s what the GitHub issues are for. Make sure that you specify that your bug is related to Quasar v2."),C={class:"doc-note doc-note--danger"},H=(0,a._)("p",{class:"doc-note__title"},"Reporting a vulnerability",-1),I=(0,a.Uk)("Please do not report security vulnerabilities with public GitHub issue reports. Follow the "),W=(0,a.Uk)("Report a vulnerability"),T=(0,a.Uk)(" steps for security issues."),S=(0,a.Uk)("If you’ve found a problem in Quasar which is not a security risk, do a search on GitHub under "),A=(0,a.Uk)("Issues"),P=(0,a.Uk)(" to check if it is already answered or even fixed in the development branch ("),D=(0,a._)("code",{class:"doc-token"},"dev",-1),R=(0,a.Uk)(")."),M=(0,a.Uk)("The issue list of the "),E=(0,a.Uk)("main repo"),$=(0,a.Uk)(" is "),j=(0,a._)("strong",null,"exclusively",-1),F=(0,a.Uk)(" for bug reports and feature requests. Non-conforming issues will be closed immediately."),G=(0,a.Uk)("For simple beginner questions, you can get quick answers from the "),N=(0,a.Uk)("Quasar Discord chat"),O=(0,a.Uk)("."),J=(0,a.Uk)("For more complicated questions, you can use "),B=(0,a.Uk)("the official forum"),Y=(0,a.Uk)(". Make sure to provide enough information when asking your questions - this makes it easier for others to help you!"),z=(0,a._)("li",null,[(0,a._)("p",null,"Check if the issue is reproducible with the latest stable version of Quasar. If you are using a pre-release, please indicate the specific version you are using.")],-1),V=(0,a._)("li",null,[(0,a._)("p",null,[(0,a.Uk)("It is "),(0,a._)("strong",null,"required"),(0,a.Uk)(" that you clearly describe the steps necessary to reproduce the issue you are running into. Although we would love to help our users as much as possible, diagnosing issues without clear reproduction steps is extremely time-consuming and simply not sustainable.")])],-1),L=(0,a._)("li",null,[(0,a._)("p",null,"Use only the minimum amount of code necessary to reproduce the unexpected behavior. A good bug report should isolate specific methods that exhibit unexpected behavior and precisely define how expectations were violated. What did you expect the method or methods to do, and how did the observed behavior differ? The more precisely you isolate the issue, the faster we can investigate.")],-1),K=(0,a._)("li",null,[(0,a._)("p",null,"Issues with no clear reproduction steps will not be triaged. If an issue labeled “need repro” receives no further input from the issue author for more than 5 days, it will be closed.")],-1),Z=(0,a._)("li",null,[(0,a._)("p",null,"If your issue is resolved but still open, don’t hesitate to close it. In case you found a solution by yourself, it could be helpful to explain how you fixed it.")],-1),X=(0,a._)("li",null,[(0,a._)("p",null,"Most importantly, we beg your patience: the team must balance your request against many other responsibilities — fixing other bugs, answering other questions, new features, new documentation, etc. The issue list is not paid support and we cannot make guarantees about how fast your issue can be resolved, although we do our very best.")],-1),ee=(0,a._)("p",null,"As a next step beyond reporting issues, you can help the Quasar Team resolve existing ones by providing feedback about them. If you are new to Quasar development, that might be a great way to walk your first steps, you’ll get familiar with the code base and the processes.",-1),oe=(0,a.Uk)("If you check the issues list in "),te=(0,a.Uk)("GitHub Issues"),ae=(0,a.Uk)(", you’ll find lots of issues already requiring attention. What can you do for these? Quite a bit, actually:"),ne=(0,a._)("p",null,"For starters, it helps just to verify bug reports. Can you reproduce the reported issue on your own computer? If so, you can add a comment to the issue saying that you’re seeing the same thing.",-1),se=(0,a._)("p",null,"If an issue is very vague, can you help narrow it down to something more specific? Maybe you can provide additional information to help reproduce a bug, or help by eliminating needless steps that aren’t required to demonstrate the problem.",-1),ie=(0,a._)("p",null,"Anything you can do to make bug reports more succinct or easier to reproduce helps folks trying to write code to fix those bugs - whether you end up writing the code yourself or not.",-1),le=(0,a._)("p",null,"You can also help out by examining pull requests that have been submitted to Quasar via GitHub. In order to apply someone’s changes, you need to first create a dedicated branch:",-1),re=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a.Uk)("$ "),(0,a._)("span",{class:"token function"},"git"),(0,a.Uk)(" checkout -b testing_branch\n")])],-1),ue=(0,a._)("p",null,"Then, you can use their remote branch to update your codebase. For example, let’s say the GitHub user JohnSmith has forked and pushed to a topic branch “orange” located at https://github.com/JohnSmith/quasar.",-1),ce=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a.Uk)("$ "),(0,a._)("span",{class:"token function"},"git"),(0,a.Uk)(" remote "),(0,a._)("span",{class:"token function"},"add"),(0,a.Uk)(" JohnSmith https://github.com/JohnSmith/quasar.git\n$ "),(0,a._)("span",{class:"token function"},"git"),(0,a.Uk)(" pull JohnSmith orange\n")])],-1),de=(0,a._)("p",null,"After applying their branch, test it out! Here are some things to think about:",-1),he=(0,a._)("ul",null,[(0,a._)("li",null,"Does the change actually work?"),(0,a._)("li",null,"Does it have the proper documentation coverage? Should documentation elsewhere be updated?"),(0,a._)("li",null,"Do you like the implementation? Can you think of a nicer or faster way to implement a part of their change?")],-1),pe=(0,a._)("p",null,"Once you’re happy that the pull request contains a good change, comment on the GitHub issue indicating your approval. Your comment should indicate that you like the change and what you like about it. Something like:",-1),ge=(0,a._)("div",{class:"doc-note doc-note--tip"},[(0,a._)("p",{class:"doc-note__title"},"Example pull request comment"),(0,a._)("p",null,"I like the way you’ve restructured the code in card.vue - much nicer. Documentation is updated too.")],-1),_e=(0,a._)("p",null,"If your comment simply reads “+1”, then odds are that other reviewers aren’t going to take it too seriously. Show that you took the time to review the pull request.",-1),ke=(0,a._)("p",null,"You can help improve the Quasar documentation by making it more coherent, consistent, or readable, adding missing information, correcting factual errors, fixing typos, or bringing them up to date with the latest edge Quasar.",-1),me=(0,a._)("div",{class:"doc-note doc-note--tip"},[(0,a._)("p",{class:"doc-note__title"},"Typos or small changes can be fixed directly from the documentation"),(0,a._)("p",null,[(0,a.Uk)("Use a pencil icon in the top right corner of every documentation page. Edit the source file, preview the changes, add a description of your change and hit "),(0,a._)("code",{class:"doc-token"},"Propose a file change"),(0,a.Uk)(" and on the next screen "),(0,a._)("code",{class:"doc-token"},"Create pull request"),(0,a.Uk)(".")])],-1),ye=(0,a.Uk)("For larger edits change the Quasar source files (located "),fe=(0,a.Uk)("here"),be=(0,a.Uk)(" on GitHub)."),we=(0,a._)("p",null,"Over time we consolidated a set of rules which we follow and following them will speed up the merge process:",-1),Ue=(0,a.Uk)("Capitalize titles, see "),ve=(0,a.Uk)("How to Use Capitalize My Title"),qe=(0,a.Uk)("."),xe=(0,a._)("li",null,"Use the present tense.",-1),Qe=(0,a._)("li",null,"Be concise, avoid text / code duplication.",-1),Ce=(0,a.Uk)("Link to the external sources which are used as master information sources and are usually updated more frequently, like "),He=(0,a.Uk)("Mozilla MDN"),Ie=(0,a.Uk)(", "),We=(0,a.Uk)("Vue.js API"),Te=(0,a.Uk)(" rather than compiled tutorials which tend to be outdated soon."),Se=(0,a._)("li",null,"Do the proofreading before opening a PR",-1),Ae=(0,a._)("li",null,"Do not repeat texts from other sources, but keep only things which are relevant and shows in a context Quasar specific features",-1),Pe=(0,a._)("li",null,[(0,a.Uk)("Use official names. For example use "),(0,a._)("code",{class:"doc-token"},"Firebase"),(0,a.Uk)(" instead of "),(0,a._)("code",{class:"doc-token"},"firebase")],-1),De=(0,a._)("li",null,"Exclude from PR all drafts and unfinished pages",-1),Re=(0,a.Uk)("Navigate to the Quasar "),Me=(0,a.Uk)("GitHub repository"),Ee=(0,a.Uk)(" and press “Fork” in the upper right-hand corner."),$e=(0,a._)("div",{class:"doc-note doc-note--warning"},[(0,a._)("p",{class:"doc-note__title"},"Select dev branch"),(0,a._)("p",null,[(0,a.Uk)("Make sure you have "),(0,a._)("code",{class:"doc-token"},"dev"),(0,a.Uk)(" branch selected and this is where all the work is done.")])],-1),je=(0,a._)("p",null,"To be able to change the documentation, you need to clone forked repository:",-1),Fe=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a.Uk)("$ "),(0,a._)("span",{class:"token function"},"git"),(0,a.Uk)(" clone https://github.com/your-user-name/quasar.git\n$ "),(0,a._)("span",{class:"token function"},"git"),(0,a.Uk)(" checkout dev\n")])],-1),Ge=(0,a._)("p",null,"Install the required dependencies.",-1),Ne=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a.Uk)("$ "),(0,a._)("span",{class:"token builtin class-name"},"cd"),(0,a.Uk)(" quasar/docs\n$ "),(0,a._)("span",{class:"token function"},"yarn"),(0,a.Uk)(),(0,a._)("span",{class:"token comment"},"# or npm install"),(0,a.Uk)("\n")])],-1),Oe=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},"$ quasar dev\n")],-1),Je=(0,a._)("p",null,"The documentation runs against your local cloned repository.",-1),Be=(0,a._)("p",null,"When you’re happy with the change on your computer, you need to commit the changes to Git:",-1),Ye=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a.Uk)("$ "),(0,a._)("span",{class:"token function"},"git"),(0,a.Uk)(" commit -a\n")])],-1),ze=(0,a._)("p",null,"This should fire up your editor to write a commit message. When you have finished, save and close to continue.",-1),Ve=(0,a._)("p",null,"It’s pretty likely that other changes to master have happened while you were working. Go get them.",-1),Le=(0,a._)("ol",null,[(0,a._)("li",null,"Add a remote Quasar repository as an upstream")],-1),Ke=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a.Uk)("$ "),(0,a._)("span",{class:"token function"},"git"),(0,a.Uk)(" remote "),(0,a._)("span",{class:"token function"},"add"),(0,a.Uk)(" upstream https://github.com/quasarframework/quasar.git\n")])],-1),Ze=(0,a._)("ol",{start:"2"},[(0,a._)("li",null,[(0,a.Uk)("Check out your fork’s local "),(0,a._)("code",{class:"doc-token"},"dev"),(0,a.Uk)(" branch.")])],-1),Xe=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a.Uk)("$ "),(0,a._)("span",{class:"token function"},"git"),(0,a.Uk)(" checkout dev\n"),(0,a._)("span",{class:"token operator"},">"),(0,a.Uk)(" Switched to branch "),(0,a._)("span",{class:"token string"},"'dev'"),(0,a.Uk)("\n")])],-1),eo=(0,a._)("ol",{start:"3"},[(0,a._)("li",null,[(0,a.Uk)("Merge the changes from "),(0,a._)("code",{class:"doc-token"},"upstream/dev"),(0,a.Uk)(" into your local "),(0,a._)("code",{class:"doc-token"},"dev"),(0,a.Uk)(" branch. This brings your fork’s "),(0,a._)("code",{class:"doc-token"},"dev"),(0,a.Uk)(" branch into sync with the upstream repository, without losing your local changes.")])],-1),oo=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a.Uk)("$ "),(0,a._)("span",{class:"token function"},"git"),(0,a.Uk)(" merge upstream/dev\n")])],-1),to=(0,a._)("p",null,"No conflicts? Tests still pass? Change still seems reasonable to you? Then move on and open a pull request to apply your changes to the dev branch in main Quasar repository.",-1),ao=(0,a._)("p",null,"Navigate to your repository you just pushed to (e.g. https://github.com/your-user-name/quasar) and click on “New Pull Request” seen in the left top panel.",-1),no=(0,a._)("p",null,"Ensure the change sets you introduced are included. Fill in some details about your potential patch including a meaningful title. When finished, press Click on “Create pull request”. The Quasar core team will be notified about your submission.",-1),so=(0,a._)("p",null,"We’re always looking for great write-ups on how you are using Quasar or the great experiences you’ve had with Quasar. If you write an article, we will publish it on our Medium publication channel and we’ll also make sure your article gets the attention it deserves with our social media presence. If you are interested, please contact blog(at)quasar.dev. We’d love to hear from you!",-1),io=(0,a.Uk)("An easy way to start to contribute to Quasar is to generalize the code you have created on your project and publish it as a Quasar App Extension. Follow this guide on how to "),lo=(0,a.Uk)("create a new extension"),ro=(0,a.Uk)("."),uo=(0,a.Uk)("When done, submit a PR on "),co=(0,a.Uk)("Quasar Awesome"),ho=(0,a.Uk)(", share your achievement via "),po=(0,a.Uk)("Quasar Forum"),go=(0,a.Uk)("."),_o=(0,a.Uk)("As with any project, there are rules to contributing. Ours are written here, please read them carefully. After that, read the "),ko=(0,a.Uk)("Quasar code of conduct"),mo=(0,a.Uk)(" and you’ll be ready to contribute to Quasar’s core repositories."),yo=(0,a.Uk)("An article "),fo=(0,a.Uk)("Look at the source code"),bo=(0,a.Uk)(" will help you to get familiar with a Quasar code base."),wo=(0,a._)("ul",null,[(0,a._)("li",null,[(0,a._)("p",null,[(0,a.Uk)("Checkout a topic branch from the relevant branch, e.g. "),(0,a._)("code",{class:"doc-token"},"dev"),(0,a.Uk)(" (Qv2) or "),(0,a._)("code",{class:"doc-token"},"v1"),(0,a.Uk)(" (Qv1), and merge back against that branch.")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("strong",null,"DO NOT"),(0,a.Uk)(" check in "),(0,a._)("code",{class:"doc-token"},"dist"),(0,a.Uk)(" in the commits.")])]),(0,a._)("li",null,[(0,a._)("p",null,"It’s OK to have multiple small commits as you work on the PR - we will let GitHub automatically squash it before merging.")]),(0,a._)("li",null,[(0,a._)("p",null,"If adding new feature:"),(0,a._)("ul",null,[(0,a._)("li",null,"Provide convincing reason to add this feature. Ideally you should open a suggestion issue first and have it greenlighted before working on it.")])]),(0,a._)("li",null,[(0,a._)("p",null,"If fixing a bug:"),(0,a._)("ul",null,[(0,a._)("li",null,[(0,a.Uk)("If you are resolving a special issue, add "),(0,a._)("code",{class:"doc-token"},"(fix: #xxxx[,#xxx])"),(0,a.Uk)(" (#xxxx is the issue id) in your PR title for a better release log, e.g. "),(0,a._)("code",{class:"doc-token"},"fix: update entities encoding/decoding (fix #3899)"),(0,a.Uk)(".")]),(0,a._)("li",null,"Provide detailed description of the bug in the PR. Live demo preferred.")])])],-1),Uo=(0,a.Uk)("You will need "),vo=(0,a.Uk)("Node.js"),qo=(0,a.Uk)(" version "),xo=(0,a._)("strong",null,"12.22.1+",-1),Qo=(0,a.Uk)(" along "),Co=(0,a.Uk)("Yarn"),Ho=(0,a.Uk)(" or "),Io=(0,a.Uk)("NPM"),Wo=(0,a.Uk)(". Read "),To=(0,a._)("code",{class:"doc-token"},"package.json",-1),So=(0,a.Uk)(" and take notice of the scripts you can use."),Ao=(0,a._)("p",null,"After cloning the repo run:",-1),Po=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a.Uk)("$ "),(0,a._)("span",{class:"token builtin class-name"},"cd"),(0,a.Uk)(" ui\n$ "),(0,a._)("span",{class:"token function"},"yarn"),(0,a.Uk)(),(0,a._)("span",{class:"token comment"},"# or: npm install"),(0,a.Uk)("\n")])],-1),Do=(0,a._)("pre",{class:"doc-code language-bash"},[(0,a._)("code",{class:"doc-code__inner doc-code__inner--prerendered language-bash"},[(0,a._)("span",{class:"token comment"},"# Start dev server with a demo app. This app has Quasar source code linked directly so any change will trigger HMR (Hot Module Reload) on the dev server."),(0,a.Uk)("\n"),(0,a._)("span",{class:"token comment"},"# There's a section for each feature where tests are made."),(0,a.Uk)("\n$ "),(0,a._)("span",{class:"token function"},"yarn"),(0,a.Uk)(" dev "),(0,a._)("span",{class:"token comment"},"# or: npm run dev"),(0,a.Uk)("\n\n"),(0,a._)("span",{class:"token comment"},"# build all dist files, including npm packages"),(0,a.Uk)("\n$ "),(0,a._)("span",{class:"token function"},"yarn"),(0,a.Uk)(" build      "),(0,a._)("span",{class:"token comment"},"# or: npm run build"),(0,a.Uk)("\n"),(0,a._)("span",{class:"token comment"},"# build only js dist files"),(0,a.Uk)("\n$ "),(0,a._)("span",{class:"token function"},"yarn"),(0,a.Uk)(" build js   "),(0,a._)("span",{class:"token comment"},"# or: npm run build js"),(0,a.Uk)("\n"),(0,a._)("span",{class:"token comment"},"# build only css dist files"),(0,a.Uk)("\n$ "),(0,a._)("span",{class:"token function"},"yarn"),(0,a.Uk)(" build css  "),(0,a._)("span",{class:"token comment"},"# or: npm run build css"),(0,a.Uk)("\n\n"),(0,a._)("span",{class:"token comment"},"# lint sources"),(0,a.Uk)("\n$ "),(0,a._)("span",{class:"token function"},"yarn"),(0,a.Uk)(" lint "),(0,a._)("span",{class:"token comment"},"# or: npm run lint"),(0,a.Uk)("\n")])],-1),Ro=(0,a._)("ul",null,[(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"build"),(0,a.Uk)(" - contains build-related configuration files. In most cases you don’t need to touch them.")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"src"),(0,a.Uk)(" - contains the source code, obviously. The codebase is written in ES2015.")]),(0,a._)("ul",null,[(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"components"),(0,a.Uk)(" - JS, Sass and JSON (API) files for Quasar Vue components")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"composables"),(0,a.Uk)(" - Quasar’s composables for Vue 3 Composition API")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"directives"),(0,a.Uk)(" - Vue directives supplied by Quasar")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"plugins"),(0,a.Uk)(" - Quasar plugins")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"css"),(0,a.Uk)(" - Sass definitions and core code for Quasar themes")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"utils"),(0,a.Uk)(" - utilities used by the framework and exported to the public API")])])])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"lang"),(0,a.Uk)(" - Quasar language packs")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"icon-set"),(0,a.Uk)(" - Quasar icon sets")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"dist"),(0,a.Uk)(" - contains built files for distribution (only after a build). Note this directory is only updated when a release happens; they do not reflect the latest changes in development branches.")])]),(0,a._)("li",null,[(0,a._)("p",null,[(0,a._)("code",{class:"doc-token"},"dev"),(0,a.Uk)(" - app with Quasar sources linked directly used for testing purposes. Each feature/component has its own "),(0,a._)("code",{class:"doc-token"},"*.vue"),(0,a.Uk)(" file. Adding a new file automatically creates a route for it and adds it to the “homepage” list (based on the file name).")])])],-1),Mo=(0,a._)("p",null,[(0,a.Uk)("Running "),(0,a._)("code",{class:"doc-token"},"yarn dev"),(0,a.Uk)(" (or "),(0,a._)("code",{class:"doc-token"},"npm run dev"),(0,a.Uk)(") starts up a dev server which uses HMR (Hot Module Reload) for Quasar source code. You can easily test your changes by making necessary changes to "),(0,a._)("code",{class:"doc-token"},"/dev"),(0,a.Uk)(),(0,a._)("code",{class:"doc-token"},"*.vue"),(0,a.Uk)(" files.")],-1),Eo=(0,a.Uk)("Thank you to all the people who already "),$o=(0,a.Uk)("contributed to Quasar"),jo=(0,a.Uk)("!");function Fo(e,o,t,Fo,Go,No){const Oo=(0,a.up)("doc-link"),Jo=(0,a.up)("doc-page");return(0,a.wg)(),(0,a.j4)(Jo,{"meta-title":Fo.metaTitle,title:"Contribution Guide","meta-desc":Fo.metaDesc},{default:(0,a.w5)((()=>[n,(0,a._)("p",null,[s,(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar/blob/dev/.github/CODE_OF_CONDUCT.md"},{default:(0,a.w5)((()=>[i])),_:1}),l]),r,u,c,d,(0,a._)("h2",{id:"help-with-support",class:"doc-heading doc-h2",onClick:o[0]||(o[0]=e=>Fo.copyHeading("help-with-support"))},"Help with Support"),h,p,(0,a._)("ul",null,[(0,a._)("li",null,[(0,a.Wm)(Oo,{to:"https://forum.quasar.dev/"},{default:(0,a.w5)((()=>[g])),_:1}),_]),(0,a._)("li",null,[(0,a.Wm)(Oo,{to:"https://chat.quasar.dev/"},{default:(0,a.w5)((()=>[k])),_:1}),m])]),(0,a._)("h2",{id:"share-and-build-your-experience",class:"doc-heading doc-h2",onClick:o[1]||(o[1]=e=>Fo.copyHeading("share-and-build-your-experience"))},"Share (and Build) Your Experience"),y,(0,a._)("ul",null,[f,(0,a._)("li",null,[b,w,(0,a.Wm)(Oo,{to:"https://stackshare.io/tool/quasar-framework/decisions"},{default:(0,a.w5)((()=>[U])),_:1}),v]),q]),(0,a._)("h2",{id:"reporting-an-issue",class:"doc-heading doc-h2",onClick:o[2]||(o[2]=e=>Fo.copyHeading("reporting-an-issue"))},"Reporting an Issue"),(0,a._)("ul",null,[(0,a._)("li",null,[(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar/issues"},{default:(0,a.w5)((()=>[x])),_:1}),Q])]),(0,a._)("div",C,[H,(0,a._)("p",null,[I,(0,a.Wm)(Oo,{to:"/security/report-a-vulnerability"},{default:(0,a.w5)((()=>[W])),_:1}),T])]),(0,a._)("p",null,[S,(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar/issues"},{default:(0,a.w5)((()=>[A])),_:1}),P,D,R]),(0,a._)("ul",null,[(0,a._)("li",null,[(0,a._)("p",null,[M,(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar"},{default:(0,a.w5)((()=>[E])),_:1}),$,j,F]),(0,a._)("ul",null,[(0,a._)("li",null,[(0,a._)("p",null,[G,(0,a.Wm)(Oo,{to:"https://chat.quasar.dev"},{default:(0,a.w5)((()=>[N])),_:1}),O])]),(0,a._)("li",null,[(0,a._)("p",null,[J,(0,a.Wm)(Oo,{to:"https://forum.quasar-framework.org/category/11/help"},{default:(0,a.w5)((()=>[B])),_:1}),Y])])])]),z,V,L,K,Z,X]),(0,a._)("h2",{id:"helping-to-resolve-existing-issues",class:"doc-heading doc-h2",onClick:o[3]||(o[3]=e=>Fo.copyHeading("helping-to-resolve-existing-issues"))},"Helping to Resolve Existing Issues"),ee,(0,a._)("p",null,[oe,(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar/issues"},{default:(0,a.w5)((()=>[te])),_:1}),ae]),(0,a._)("h4",{id:"verifying-bug-reports",class:"doc-heading doc-h4",onClick:o[4]||(o[4]=e=>Fo.copyHeading("verifying-bug-reports"))},"Verifying Bug Reports"),ne,se,ie,(0,a._)("h4",{id:"testing-patches",class:"doc-heading doc-h4",onClick:o[5]||(o[5]=e=>Fo.copyHeading("testing-patches"))},"Testing Patches"),le,re,ue,ce,de,he,pe,ge,_e,(0,a._)("h2",{id:"contributing-to-the-quasar-documentation",class:"doc-heading doc-h2",onClick:o[6]||(o[6]=e=>Fo.copyHeading("contributing-to-the-quasar-documentation"))},"Contributing to the Quasar Documentation"),ke,me,(0,a._)("p",null,[ye,(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar/tree/dev/docs/src/pages"},{default:(0,a.w5)((()=>[fe])),_:1}),be]),(0,a._)("h3",{id:"documentation-best-practices",class:"doc-heading doc-h3",onClick:o[7]||(o[7]=e=>Fo.copyHeading("documentation-best-practices"))},"Documentation Best Practices"),we,(0,a._)("ul",null,[(0,a._)("li",null,[Ue,(0,a.Wm)(Oo,{to:"https://capitalizemytitle.com/"},{default:(0,a.w5)((()=>[ve])),_:1}),qe]),xe,Qe,(0,a._)("li",null,[Ce,(0,a.Wm)(Oo,{to:"https://developer.mozilla.org/en-US/docs/Web/JavaScript"},{default:(0,a.w5)((()=>[He])),_:1}),Ie,(0,a.Wm)(Oo,{to:"https://v3.vuejs.org/api/"},{default:(0,a.w5)((()=>[We])),_:1}),Te]),Se,Ae,Pe,De]),(0,a._)("h4",{id:"fork",class:"doc-heading doc-h4",onClick:o[8]||(o[8]=e=>Fo.copyHeading("fork"))},"Fork"),(0,a._)("p",null,[Re,(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar"},{default:(0,a.w5)((()=>[Me])),_:1}),Ee]),$e,(0,a._)("h4",{id:"clone-the-forked-repository",class:"doc-heading doc-h4",onClick:o[9]||(o[9]=e=>Fo.copyHeading("clone-the-forked-repository"))},"Clone the forked repository"),je,Fe,(0,a._)("h4",{id:"install-dependencies",class:"doc-heading doc-h4",onClick:o[10]||(o[10]=e=>Fo.copyHeading("install-dependencies"))},"Install dependencies"),Ge,Ne,(0,a._)("h4",{id:"running-documentation-against-your-local-repository",class:"doc-heading doc-h4",onClick:o[11]||(o[11]=e=>Fo.copyHeading("running-documentation-against-your-local-repository"))},"Running documentation against your local repository"),Oe,Je,(0,a._)("h4",{id:"edit-and-test-your-changes-locally",class:"doc-heading doc-h4",onClick:o[12]||(o[12]=e=>Fo.copyHeading("edit-and-test-your-changes-locally"))},"Edit and test your changes locally"),(0,a._)("h4",{id:"commit-your-changes",class:"doc-heading doc-h4",onClick:o[13]||(o[13]=e=>Fo.copyHeading("commit-your-changes"))},"Commit your changes"),Be,Ye,ze,(0,a._)("h4",{id:"update-your-local-repository",class:"doc-heading doc-h4",onClick:o[14]||(o[14]=e=>Fo.copyHeading("update-your-local-repository"))},"Update your local repository"),Ve,Le,Ke,Ze,Xe,eo,oo,to,(0,a._)("h4",{id:"issue-a-pull-request",class:"doc-heading doc-h4",onClick:o[15]||(o[15]=e=>Fo.copyHeading("issue-a-pull-request"))},"Issue a pull request"),ao,no,(0,a._)("h2",{id:"write-your-story",class:"doc-heading doc-h2",onClick:o[16]||(o[16]=e=>Fo.copyHeading("write-your-story"))},"Write your Story"),so,(0,a._)("h2",{id:"create-new-quasar-app-extension",class:"doc-heading doc-h2",onClick:o[17]||(o[17]=e=>Fo.copyHeading("create-new-quasar-app-extension"))},"Create new Quasar App Extension"),(0,a._)("p",null,[io,(0,a.Wm)(Oo,{to:"/app-extensions/development-guide/introduction"},{default:(0,a.w5)((()=>[lo])),_:1}),ro]),(0,a._)("p",null,[uo,(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar-awesome/blob/master/README.md#community-app-extensions"},{default:(0,a.w5)((()=>[co])),_:1}),ho,(0,a.Wm)(Oo,{to:"https://forum.quasar-framework.org/category/15/v1-app-extensions"},{default:(0,a.w5)((()=>[po])),_:1}),go]),(0,a._)("h2",{id:"contributing-to-the-quasar-ui-source-code",class:"doc-heading doc-h2",onClick:o[18]||(o[18]=e=>Fo.copyHeading("contributing-to-the-quasar-ui-source-code"))},"Contributing to the Quasar UI Source Code"),(0,a._)("p",null,[_o,(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar/blob/dev/.github/CODE_OF_CONDUCT.md"},{default:(0,a.w5)((()=>[ko])),_:1}),mo]),(0,a._)("p",null,[yo,(0,a.Wm)(Oo,{to:"https://medium.com/quasar-framework/wip-look-at-the-source-code-please-1b905ea4906"},{default:(0,a.w5)((()=>[fo])),_:1}),bo]),(0,a._)("h4",{id:"pull-request-guidelines",class:"doc-heading doc-h4",onClick:o[19]||(o[19]=e=>Fo.copyHeading("pull-request-guidelines"))},"Pull Request Guidelines"),wo,(0,a._)("h4",{id:"development-setup",class:"doc-heading doc-h4",onClick:o[20]||(o[20]=e=>Fo.copyHeading("development-setup"))},"Development Setup"),(0,a._)("p",null,[Uo,(0,a.Wm)(Oo,{to:"http://nodejs.org"},{default:(0,a.w5)((()=>[vo])),_:1}),qo,xo,Qo,(0,a.Wm)(Oo,{to:"https://yarnpkg.com/"},{default:(0,a.w5)((()=>[Co])),_:1}),Ho,(0,a.Wm)(Oo,{to:"https://docs.npmjs.com/getting-started/installing-node"},{default:(0,a.w5)((()=>[Io])),_:1}),Wo,To,So]),Ao,Po,(0,a._)("h4",{id:"commonly-used-npm-scripts",class:"doc-heading doc-h4",onClick:o[21]||(o[21]=e=>Fo.copyHeading("commonly-used-npm-scripts"))},"Commonly used NPM scripts"),Do,(0,a._)("h4",{id:"project-structure-ui-",class:"doc-heading doc-h4",onClick:o[22]||(o[22]=e=>Fo.copyHeading("project-structure-ui-"))},"Project Structure (/ui)"),Ro,(0,a._)("h4",{id:"dev-server-for-quasar-ui-",class:"doc-heading doc-h4",onClick:o[23]||(o[23]=e=>Fo.copyHeading("dev-server-for-quasar-ui-"))},"Dev Server for Quasar (/ui)"),Mo,(0,a._)("h2",{id:"quasar-contributors",class:"doc-heading doc-h2",onClick:o[24]||(o[24]=e=>Fo.copyHeading("quasar-contributors"))},"Quasar Contributors"),(0,a._)("p",null,[Eo,(0,a.Wm)(Oo,{to:"https://github.com/quasarframework/quasar/graphs/contributors"},{default:(0,a.w5)((()=>[$o])),_:1}),jo])])),_:1},8,["meta-title","meta-desc"])}var Go=t(17536);const No={name:"DocMarkdownPage",setup(){return{metaTitle:"Contribution Guide",metaDesc:"How to contribute to Quasar Framework.",copyHeading:Go.Et}}};var Oo=t(74260);const Jo=(0,Oo.Z)(No,[["render",Fo]]),Bo=Jo}}]);