Note: This page covers Parcel 1, the documentation for Parcel 2 is being worked on here: v2.parceljs.org

🚀 Getting Started

Parcel is a web application bundler, differentiated by its developer experience. It offers blazing fast performance utilizing multicore processing, and requires zero configuration.

First install Parcel using Yarn or npm:

Yarn:

yarn global add parcel-bundler

npm:

npm install -g parcel-bundler

Create a package.json file in your project directory using:

yarn init -y

or

npm init -y

Parcel can take any type of file as an entry point, but an HTML or JavaScript file is a good place to start. If you link your main JavaScript file in the HTML using a relative path, Parcel will also process it for you, and replace the reference with a URL to the output file.

Next, create an index.html and index.js file.

<html>
<body>
  <script src="./index.js"></script>
</body>
</html>

NB: Parcel converts JS assets to ES5, which won't run in in the context of a <script type="module"> tag, so just use plain <script> tags with no type attribute in your source HTML.

console.log('hello world')

Parcel has a development server built in, which will automatically rebuild your app as you change files and supports hot module replacement for fast development. Point it at your entry file:

parcel index.html

Now open http://localhost:1234/ in your browser. If hot module replacement isn't working you may need to configure your editor. You can also override the default port with the -p <port number> option.

Use the development server when you don't have your own server, or your app is entirely client rendered. If you do have your own server, you can run Parcel in watch mode instead. This still automatically rebuilds as files change and supports hot module replacement, but doesn't start a web server.

parcel watch index.html

You can also use createapp.dev to create a Parcel project in the browser. Select the features you need such as React, Vue, Typescript and CSS, and you will see the project being generated in real-time. You can use this tool for learning how to set up a new project and you can also download the project as a ZIP-file and get started coding instantly.

Multiple entry files

In case you have more than one entry file, let's say index.html and about.html, you have 2 ways to run the bundler:

Specifying the file names:

parcel index.html about.html

Use tokens and create a glob:

parcel *.html

NOTE: In case you have a file structure like this:

- folder-1
-- index.html
- folder-2
-- index.html

Going to http://localhost:1234/folder-1/ won't work, instead you will need to explicitly point to the file http://localhost:1234/folder-1/index.html.

Building for production

When you're ready to build for production, the build mode turns off watching and only builds once. See the Production section for more details.

Adding parcel to your project

Sometimes it's not possible to install Parcel globally e.g. if you're building on someone else's build agent or you want to use a CI to build your project programmatically. In this case, you can install and run Parcel as a local package.

To install with Yarn:

yarn add parcel-bundler --dev

To install with NPM:

npm install parcel-bundler --save-dev

Then, add these tasks scripts to your project, by modifying your package.json:

{
  "scripts": {
    "dev": "parcel <your entry file>",
    "build": "parcel build <your entry file>"
  }
}

Then, you will be able to run it:

# To run in development mode
yarn dev
# or
npm run dev

# To run in production mode
yarn build
# or
npm run build

Help us improve the docs

If something is missing or not entirely clear, please file an issue on the website repository or edit this page.