Navigation Menu

Skip to content

Commit

Permalink
docs: Update release notes and authoring new components for release (#…
Browse files Browse the repository at this point in the history
…264)

- Update CONTRIBUTING.md to revamp releasing section with more thorough
  and up-to-date information on how to properly release MDC-Web.
- Update authoring components guide to outline exactly what a new
  component's package.json should look like for a successful release.
  • Loading branch information
traviskaufman committed Feb 8, 2017
1 parent e0e817f commit 471e14d
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 11 deletions.
32 changes: 23 additions & 9 deletions CONTRIBUTING.md
Expand Up @@ -120,24 +120,38 @@ Finally, it helps to make sure that your branch/fork is up to date with what's c
> NOTE: This section is for collaborators only. Contributors without repo write access can ignore
> this section.
To release MDC-Web, you should perform the following steps.
#### Pre-requisites

Before releasing MDC-Web, ensure that you have the following:

- Write access to the material-components-web repo
- Correct credentials for npm
- The [Google Cloud SDK](https://cloud.google.com/sdk/) installed. Please run `gcloud init` command
to login to your Google Cloud account and choose `material-components-web` if this is your first
time working with the SDK.
- Access to the `material-components-web` Google Cloud project

You should ping a core team member regarding any/all of these items if you're unsure whether or not
they are all set up.

#### Performing the release.

To release MDC-Web, you perform the following steps.

1. Run `./scripts/pre-release.sh`. This will run `npm test`, build MDC-Web, copy the built assets over
to each module's `dist/` folder, and then print out a summary of all of the new versions that
should be used for changed components. The summary is printed out to both the console, as well
as a `.new-versions.log` file in the repo root. This information should be used within the
following steps.
2. Run `lerna publish`. When prompted for versions for each component, you should use the
1. From the root directory of the repo, run `$(npm bin)/lerna publish -m "chore: Publish"`. When prompted for versions for each component, you should use the
version info output above. In some cases, e.g. repo-wide refactors that cause all component
versions to be updated, you can ignore this info. However, _it is strongly recommended to adhere
to those specified versions in order to minimize human error_.
3. Run `./scripts/post-release.sh`. This will update our `CHANGELOG.md` with information for the
current release of the overarching `material-components-web` library, and commit those changes.
4. Run `MDC_ENV=development npm run build && gcloud app deploy`. This will deploy demo pages to Google Cloud [App Engine](https://material-components-web.appspot.com). Please request access to the App Engine project `material-components-web` to deploy.

> NOTE: `gcloud` is cli tool provided by [Cloud SDK](https://cloud.google.com/sdk/). Please run `gcloud init` command to login to your Google Cloud account and choose `material-components-web` project before running deploy command as mentioned above.
5. Push the changelog changes to master, and call it a day!
1. Run `./scripts/post-release.sh`. This will update our `CHANGELOG.md` with information for the
current release of the overarching `material-components-web` library, and commit those changes. It will also generate a `vX.Y.Z` semver tag for the entire repo, and commit the tag as such.
1. Run `git push && git push --tags` to push the changelog changes and semver tag to master.
1. Run `MDC_ENV=development npm run build && gcloud app deploy`. This will deploy demo pages to our [App Engine demo site](https://material-components-web.appspot.com).
1. Call it a day! :tada: :rocket: :package:

## "What's the core team up to?"

Expand Down
27 changes: 25 additions & 2 deletions docs/authoring-components.md
Expand Up @@ -499,15 +499,38 @@ This is needed so that lerna will be able to automatically publish new scoped pa
We also require a list of keywords for each package. This list should always include `material components` and `material design`, followed by the component name:

```
"keywords": {
"keywords": [
"material components",
"material design",
<COMPONENT_NAME>
}
]
```

For example, if you are building a checkbox component, `keywords` would include `material components`, `material design`, and `checkbox`

**Below is an example of what a full `package.json` should look like for a new component:**

```json
{
"name": "@material/example",
"version": "0.0.0",
"description": "The Material Components for the web example component",
"license": "Apache-2.0",
"repository": {
"type": "git",
"url": "https://github.com/material-components/material-components-web.git"
},
"keywords": [
"material components",
"material design",
"example"
],
"publishConfig": {
"access": "public"
}
}
```

### License Stanzas

We are required to put the following at the _top_ of _every source code file_, including tests,
Expand Down

0 comments on commit 471e14d

Please sign in to comment.