From 7c88f1023a88e130434fa9426db822a3585d97c7 Mon Sep 17 00:00:00 2001 From: pgonzal Date: Mon, 21 May 2018 11:21:44 -0700 Subject: [PATCH 01/17] Remove news feed, since that will be hosted on rushstack.io --- news/_posts/2017-11-3-Rush-4-released.md | 75 ------------------- news/_posts/2017-5-15-Rush-3-released.md | 41 ---------- news/_posts/2017-9-5-Changes-in-Rush.md | 12 --- news/_posts/2018-1-8-Rush-support-for-PNPM.md | 32 -------- news/news.html | 21 ------ 5 files changed, 181 deletions(-) delete mode 100644 news/_posts/2017-11-3-Rush-4-released.md delete mode 100644 news/_posts/2017-5-15-Rush-3-released.md delete mode 100644 news/_posts/2017-9-5-Changes-in-Rush.md delete mode 100644 news/_posts/2018-1-8-Rush-support-for-PNPM.md delete mode 100644 news/news.html diff --git a/news/_posts/2017-11-3-Rush-4-released.md b/news/_posts/2017-11-3-Rush-4-released.md deleted file mode 100644 index 353683ad..00000000 --- a/news/_posts/2017-11-3-Rush-4-released.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -layout: post -title: Rush 4 released! -author: pete ---- - -We’re excited to announce Rush version 4! First things first... - -### What repo maintainers need to do: - -- To upgrade, repo maintainers should delete `rushMinimumVersion` from **rush.json**, and replace it with `"rushVersion": "4.0.0"` -- Or, if you’re not ready to migrate yet, make sure your `rushMinimumVersion` specifies the version you want developers using, because Rush 4’s version selector will install that for them -- If you rely on Rush command-line options that are being removed (`--vso`, `--npm`, `--ship`, `--minimal`, `--production`, `--colors`), you’ll need to update your build scripts -- If you rely on Rush invoking the `test` and `clean` scripts in your **package.json**, you’ll need to update your build scripts - -Regular developers don’t need to do anything. These changes should be transparent to the everyday developer experience. And here's what's new under the hood... - -### Simplified build model - -Prior to Rush 4, when you ran "**rush rebuild**", it would do the following for each project: - -#### Old Rush 3 Behavior -1. Execute the `"clean"` script from **package.json** -2. Execute the `"test"` script from **package.json** (or if `"test"` is not found, use the `"build"` script instead); the `--color` option was always appended to the script - - If the Rush command line included the options `--vso`, `--npm`, `--ship`, or `--minimal`, they were also appended to the `"test"` (or `"build"`) script. - -#### New Rush 4 Behavior - -1. Execute the “build” script from package.json. By default NO options are appended. - - The options `--vso`, `--npm`, `--ship`, and `--minimal` are no longer built-in to Rush. However, we have a new feature that allows repo maintainers to define their own options. This is much more flexible! ([See here](https://github.com/Microsoft/web-build-tools/wiki/Rush-~-Custom-commands) for detailed documentation.) - -To minimize the migration pain, we’ve provided a [legacy-command-line.json](https://github.com/Microsoft/web-build-tools/blob/master/apps/rush-lib/etc/examples/legacy-command-line.json) sample that shows how to restore these options. However, if you had `"clean"` or `"test"` scripts in your **package.json** files, you will still need to merge their implementation into your `"build"` script (e.g. by defining a `--no-clean` or `--no-test` option). - -Note that the `--color` option is no longer appended. This was a workaround for a problem where the **colors** and **chalk** libraries don't show colors when Rush executes your scripts in parallel and [collates](https://www.npmjs.com/package/@microsoft/stream-collator) their output. With Rush 4, we recommend for your build scripts to show colors by default, and then use a `--no-color` option for cases such as Travis logs. Since **colors** and **chalk** look at the `argv` variable, you can just add something like this to the top of your Gulpfile: - -```javascript -if (process.argv.indexOf('--no-color') === -1) { - process.argv.push('--color'); -} -``` - -For a complete migration example, here’s the [PR](https://github.com/Microsoft/web-build-tools/pull/396) we used for upgrading **web-build-tools** to Rush 4. - -### Improvements for “rush change” - -Rush 4 includes some improvements to make change tracking more pleasant: - -- In the past, if you committed more fixes to your branch after running `rush change`, you couldn’t run it again without first deleting the JSON files it created. That has been fixed! -- `rush change` now allows you to enter multiple changes for the same project (e.g. for a PR that fixed several bugs) -- We also fixed a usability issue where `rush change` would prompt for irrelevant release types (e.g. “major” when the major is supposed to be locked) -- In the change logs, the message “Changes not tracked” now says “Version update only” to clarify that changes *are* being tracked - -### The Rush version selector - -In the past, developers could install any version of Rush that satisfies the `rushMinimumVersion` field. This led to several problems: - -- When a bug or compatibility issue occurred, people would have trouble reproducing it -- If the latest Rush release contained a bug, there was no easy way to downgrade everyone while waiting for a fix -- A certain class of bugs (e.g. shrinkwrap file format changes) arise only when your Rush version is different from the person who ran `rush generate` - -Rush 4 solves all these problems by replacing `rushMinimumVersion` with an explicit `rushVersion`. When you invoke Rush 4 from the command line, the “version selector” feature will examine this setting and automatically install that version of the engine (i.e. **rush-lib** package). Regardless of which version of Rush a developer installed globally, inside a given repo the Rush tool will behave like the release specified in **rush.json**. Even the `rush –h` command line help will be from this version. (It even works for previous Rush versions -- Rush 4 will simply install the rushMinimumVersion.) - -The version selector helps repo maintainers by ensuring deterministic build behavior for all users. It helps developers by allowing them to work in different repos without worrying about which version of Rush they have installed. (Unless the selector itself has a bug, you may never need to upgrade Rush again!) Lastly, it helps the people who work on Rush by making regressions easier to diagnose and avoiding a fire drill when an issue is found. - -> NOTE: Don’t forget to edit **rush.json** periodically to upgrade your `rushVersion`. Otherwise, you’ll be stuck on the old version indefinitely. :-) - -### API cleanup for rush-lib - -Moving all the Rush code into **rush-lib** enabled us to remove a bunch of internal utilities that were cluttering up the API. The leaner, meaner **rush-lib** package is now documented in our [API reference](https://microsoft.github.io/web-build-tools/api/rush-lib.html). - -### NPM 5 workaround - -So far NPM 5 has been a... rather rough ride. As of version 5.5.1 it still has [regressions](https://github.com/npm/npm/issues/19006) that are causing trouble for people. Rush 4 includes some workarounds that should eliminate the [recent issue](https://github.com/Microsoft/web-build-tools/issues/394) that was blocking people from using NPM 5. (Our long term strategy is still to move to [PNPM](https://github.com/Microsoft/web-build-tools/wiki/Rush-~-FAQ#have-you-heard-of-yarn-or-pnpm), which should be available soon as an “opt-in” feature. The [PR](https://github.com/Microsoft/web-build-tools/pull/427) is here.) diff --git a/news/_posts/2017-5-15-Rush-3-released.md b/news/_posts/2017-5-15-Rush-3-released.md deleted file mode 100644 index 0b2f1859..00000000 --- a/news/_posts/2017-5-15-Rush-3-released.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: post -title: Rush 3 released! -author: pete ---- - -_**This is a breaking change. In order to upgrade, you must migrate your repo.**_ In the past, Rush upgrades have always been backwards compatible, but this time we made some structural changes that would be expensive to support. (We're planning a future feature that will allow Rush to emulate old versions of itself, but it's not ready yet.) - -_NOTE: If your repo hasn't been upgraded yet, you can use `npm install -g @microsoft/rush@2.5.0` to install the old version._ - -### What's new in Rush 3 - -- **Streamlined workflow:** Hurray! You no longer need to run `rush generate` every time you modify a **package.json** file. Just run a simple `rush install`, and in most cases Rush will find what it needs in your existing shrinkwrap file. You can even add new projects. Under this new model, _**you never need to run `rush generate` unless `rush install` explicitly tells you to**_. This is a big change that eliminates a lot of hassle from your everyday Rush experience. - -- **Simplified .gitignore**: When setting a new repo, you no longer need to guess about which files to commit. Every temporary file for Rush has been moved under **./common/temp**, so now a single .gitignore rule is all you need. - -- **Simplified configuration**: We eliminated some obscure and deprecated settings, and consolidated Rush's config files in a single folder **./common/config/rush**. (**rush.json** still goes at your repo root.) - -- **Improved package approval**: The old "packageReviewFile" setting has been replace by two separate config files **browser-approved-packages.json** and **nonbrowser-approved-packages.json**. (When the list was combined in a single file, people didn't realize there were two sections, so this solves that problem.) - -- **Shorter command line**: We renamed some Rush command-line verbs: `rush check` is now `rush scan`, and `rush check-versions` is now just `rush check`. - -- **Infrastructure improvements**: The `rush link` command now skips if nothing has changed. The change log data files were redesigned to support subset publishing (coming soon!). More operations use the AsyncRecycleBin optimization. Better unit test coverage. - -### Migration checklist - -When upgrading a repo to use Rush 3: -1. Delete "common/package.json" and "common/temp_modules/..." and remove them from Git -2. Move your "npm-shrinkwrap.json" and (if needed) ".npmrc" files into the "common/config/rush" folder. -3. If you have a "pinnedVersions.json" file, rename it to "pinned-versions.json" and move under "common/config/rush" as well. -4. Delete the "commonFolder" and "useLocalNpmCache" settings from your **rush.json** file. -5. **If you use the "packageReviewFile" feature:** Split the review file into "browser-approved-packages.json" and "nonbrowser-approved-packages.json" files, and move them to "common/config/rush". In rush.json, delete the "packageReviewFile" setting, and move your "reviewCategories" into an "approvedPackagesPolicy" block like this: -```json - "approvedPackagesPolicy": { - "reviewCategories": [ "first-party", "third-party", "prototype" ], - "ignoredNpmScopes": [ "@types" ] - }, -``` -6. Delete extraneous .gitignore rules from the old Rush; see [[Setting up your repo|Rush ~ Setting up your repo]] for a .gitignore example. -7. Rush "rush generate" again -8. If you have any tools that use **@microsoft/rush-lib**, you may need to update their code. \ No newline at end of file diff --git a/news/_posts/2017-9-5-Changes-in-Rush.md b/news/_posts/2017-9-5-Changes-in-Rush.md deleted file mode 100644 index f5186c42..00000000 --- a/news/_posts/2017-9-5-Changes-in-Rush.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: post -title: Changes requiring action in Rush 3.0.15 -author: pete ---- - -Rush 3.0.15 changes some behavior in the temp modules folder to be compatible with [NPM 5](https://github.com/npm/npm/pull/15900) and [PNPM](https://github.com/pnpm/pnpm/issues/772). You will likely see the following error during installation: -``` -ERROR: Failed to parse package.json for : Invalid version: "file:projects/.tgz" -``` - -This is due to your shrinkwrap file needing a small update for Rush 3.0.15. **To fix the issue, run `rush generate` and checkin the changes to the shrinkwrap file.** (Alternately, you could change all the "file:projects/{PROJECT_NAME}" references in the shrinkwrap to "file:/{PROJECT_NAME}.tgz".) \ No newline at end of file diff --git a/news/_posts/2018-1-8-Rush-support-for-PNPM.md b/news/_posts/2018-1-8-Rush-support-for-PNPM.md deleted file mode 100644 index de290553..00000000 --- a/news/_posts/2018-1-8-Rush-support-for-PNPM.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -layout: post -title: Rush now has preliminary support for PNPM -author: nick ---- - -We have added support in Rush for the [PNPM package manager](https://github.com/pnpm/pnpm). PNPM has several advantages over NPM, including performance, disk efficiency, rigor and simplicity. The primary idea behind PNPM is to install packages a single time, and construct your node_modules folder using only symlinks. By comparison, NPM imposes a tree of physical folders that often requires excessive duplication of the exact same contents. - -We just enabled PNPM for use by people who work in the web-build-tools repository! - -Testing locally, in web-build-tools, PNPM appears to greatly improve rush generate speeds! - -![performance comparison](https://raw.githubusercontent.com/Microsoft/web-build-tools/master/common/wiki-images/performance_pnpm.png) - -| | PNPM | NPM | -|-----------------------------|--------------|--------------| -| install (clean) performance | 231 s | 304 s | -| install (clean) disk usage | 175 mb | 200 mb | -| rush link (clean) | <1 s | 60 s | -| generate (not clean) | 48 s | 271 s | - -### Benefits - -* PNPM eliminates the annoying [race condition issue](https://github.com/request/request/issues/2807) in NPM! -* **Disk efficiency** - unlike NPM, PNPM will install a specific version of a package only once on disk, saving many gigabytes (reducing node_modules folder size from 10-30%). -* **Performance** – since PNPM only install packages a single time, then constructs the dependency graph using much cheaper symlinks, it is also much faster than PNPM. This in turn makes rush install much faster. -* With PNPM, “rush generate” is much faster because we no longer have to delete the node_modules folder and do a full re-install. -* **Rigor** – PNPM creates links in the node_modules folder *only* for direct dependencies. This means you can’t accidentally `require()` things that aren’t in your package.json, which can lead to strange errors for consumers of your library. -* **Simpler structure** – this will enable to more easily implement Rush feature requests such as repo-to-repo linking. - -### How to use PNPM -Simply change the `npmVersion` field in your `package.json` to `pnpmVersion`, as documented in the "How to tell Rush which package manager to use" section of [this page](https://github.com/Microsoft/web-build-tools/wiki/Rush-~-NPM-vs-PNPM-vs-Yarn#how-to-tell-rush-which-package-manager-to-use). \ No newline at end of file diff --git a/news/news.html b/news/news.html deleted file mode 100644 index fe89ccc4..00000000 --- a/news/news.html +++ /dev/null @@ -1,21 +0,0 @@ ---- -layout: page -title: News -permalink: /news/ ---- - -
- {% for post in site.categories.news %} - - {% endfor %} -
\ No newline at end of file From adb53d09693ea6a1a927734e1bd57ac4e38a36f2 Mon Sep 17 00:00:00 2001 From: pgonzal Date: Mon, 21 May 2018 13:36:16 -0700 Subject: [PATCH 02/17] Update logo images --- images/404.jpg | Bin 54799 -> 0 bytes images/rush-404.svg | 4 ++++ images/rush-horiz.svg | 14 +++++++------- images/rush.svg | 4 ++++ 4 files changed, 15 insertions(+), 7 deletions(-) delete mode 100644 images/404.jpg create mode 100644 images/rush-404.svg create mode 100644 images/rush.svg diff --git a/images/404.jpg b/images/404.jpg deleted file mode 100644 index 166a17ef05d5ff3761aabb29fc9db52f111fdaea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54799 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%0A|JTow_!fp1|t!Uxp` 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 RE^=W)idpN5{{ZKI|Jj)uHa`FW diff --git a/images/rush-404.svg b/images/rush-404.svg new file mode 100644 index 00000000..185ea47b --- /dev/null +++ b/images/rush-404.svg @@ -0,0 +1,4 @@ + + + +Rush 404image/svg+xmlRush 404https://github.com/pgonzalCopyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. diff --git a/images/rush-horiz.svg b/images/rush-horiz.svg index 64b27ac7..18aa4b05 100644 --- a/images/rush-horiz.svg +++ b/images/rush-horiz.svg @@ -1,7 +1,7 @@ - - - -Rushimage/svg+xmlRushhttps://github.com/pgonzalCopyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. + + + +Rushimage/svg+xmlRushhttps://github.com/pgonzalCopyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. diff --git a/images/rush.svg b/images/rush.svg new file mode 100644 index 00000000..5e720597 --- /dev/null +++ b/images/rush.svg @@ -0,0 +1,4 @@ + + + +Rushimage/svg+xmlRushhttps://github.com/pgonzalCopyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. \ No newline at end of file From 670d6d277ee0bf248550371b223ffdc967da63c8 Mon Sep 17 00:00:00 2001 From: pgonzal Date: Mon, 21 May 2018 13:47:01 -0700 Subject: [PATCH 03/17] Customize 404 page --- _includes/base/footer.html | 2 +- _includes/base/navbar.html | 2 +- pages/404.md | 9 --------- permalinks/404.html | 22 ++++++++++++++++++++++ 4 files changed, 24 insertions(+), 11 deletions(-) delete mode 100644 pages/404.md create mode 100644 permalinks/404.html diff --git a/_includes/base/footer.html b/_includes/base/footer.html index 9c73cc45..fb254a54 100644 --- a/_includes/base/footer.html +++ b/_includes/base/footer.html @@ -10,7 +10,7 @@ {% endfor %} -

© Microsoft 2018. All Rights Reserved.

+

© {{ site.time | date: '%Y' }} Microsoft

diff --git a/_includes/base/navbar.html b/_includes/base/navbar.html index a9571799..f18de607 100644 --- a/_includes/base/navbar.html +++ b/_includes/base/navbar.html @@ -3,7 +3,7 @@
Rush logo + style="height: 40px" alt="rushjs.io" title="rushjs.io" />
diff --git a/pages/404.md b/pages/404.md deleted file mode 100644 index c2d3903f..00000000 --- a/pages/404.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: page -title: 404 - Page not found -permalink: /404.html ---- - -Sorry, we can't find that page that you're looking for. You can try again by going [back to the homepage]({{ site.baseurl }}/). - -[Constructocat by https://github.com/jasoncostello]({{ site.baseurl }}/) diff --git a/permalinks/404.html b/permalinks/404.html new file mode 100644 index 00000000..b483262e --- /dev/null +++ b/permalinks/404.html @@ -0,0 +1,22 @@ +--- +layout: page +title: 404 - Page not found +permalink: /404.html +--- + +Sorry, we can't find the page you're looking for! + + From efe6bde86d9bd44d58d236101fba502201825255 Mon Sep 17 00:00:00 2001 From: pgonzal Date: Mon, 21 May 2018 13:51:12 -0700 Subject: [PATCH 04/17] Move index.html under permalinks folder --- {pages => permalinks}/index.html | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {pages => permalinks}/index.html (100%) diff --git a/pages/index.html b/permalinks/index.html similarity index 100% rename from pages/index.html rename to permalinks/index.html From a4a443d04e026df6802c5ee0a8541f5823fb5060 Mon Sep 17 00:00:00 2001 From: pgonzal Date: Mon, 21 May 2018 15:03:28 -0700 Subject: [PATCH 05/17] Initial skeleton for new content --- _config.yml | 2 +- _data/navigation.yaml | 18 ++++----- pages/about.md | 53 ------------------------- pages/contributing.md | 6 +++ pages/docs/developer/new-developer.md | 6 +++ pages/docs/maintainer/new-maintainer.md | 6 +++ pages/docs/start.md | 10 +++++ pages/faq.md | 6 +++ pages/help.md | 10 +++++ pages/news.md | 9 +++++ 10 files changed, 63 insertions(+), 63 deletions(-) delete mode 100644 pages/about.md create mode 100644 pages/contributing.md create mode 100644 pages/docs/developer/new-developer.md create mode 100644 pages/docs/maintainer/new-maintainer.md create mode 100644 pages/docs/start.md create mode 100644 pages/faq.md create mode 100644 pages/help.md create mode 100644 pages/news.md diff --git a/_config.yml b/_config.yml index 6a4335db..601f94d1 100644 --- a/_config.yml +++ b/_config.yml @@ -62,7 +62,7 @@ baseurl: "" # !! You don't need to change any of the configuration flags below !! # -permalink: /:categories/:year/:title +permalink: pretty # Jekyll 3 now only supports Kramdown for Markdown kramdown: diff --git a/_data/navigation.yaml b/_data/navigation.yaml index 305ba4b5..1189c587 100644 --- a/_data/navigation.yaml +++ b/_data/navigation.yaml @@ -1,15 +1,15 @@ -- text: About - url: /about +- text: Docs + url: /pages/docs/start - text: News - url: /news + url: /pages/news -- text: API - url: https://microsoft.github.io/web-build-tools/api/rush-lib.html +- text: GitHub + url: /pages/contributing -- text: Gitter - url: https://gitter.im/web-build-tools/web-build-tools +- text: Help + url: /pages/help - text: Get Started - url: https://github.com/Microsoft/web-build-tools/wiki/Rush-~-Setting-up-your-repo - primary: true \ No newline at end of file + url: /pages/docs/start + primary: true diff --git a/pages/about.md b/pages/about.md deleted file mode 100644 index 4f7f9517..00000000 --- a/pages/about.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: page -title: About -permalink: /about/ ---- - -**Rush** makes life easier for JavaScript developers who build and publish many NPM packages at once. If you're looking to consolidate all your projects into a single repo, you came to the right place! Rush is a fast, professional solution for managing this scenario. It gives you: - -- **A single NPM install:** In one step, Rush installs all the dependencies for all your projects into a common folder. This is not just a "package.json" file at the root of your repo (which might set you up to accidentally `require()` a sibling's dependencies). Instead, Rush uses symlinks to reconstruct an accurate "node_modules" folder for each project, without any of the limitations or glitches that seem to plague other approaches. - -- **Automatic local linking:** Inside a Rush repo, all your projects are automatically symlinked to each other. When you make a change, you can see the downstream effects without publishing anything, and without any `npm link` headaches. - -- **Fast builds:** Rush detects your dependency graph and builds your projects in the right order. If two packages don't directly depend on each other, Rush parallelizes their build as separate NodeJS processes (and shows live console output in a [readable order](https://www.npmjs.com/package/@microsoft/stream-collator)). In practice this multi-process approach can yield more significant speedups than all those async functions in your single-threaded Gulpfile. - -- **Subset and incremental builds:** If you only plan to work with a few projects from your repo, `rush rebuild --to ` does a clean build of just your upstream dependencies. After you make changes, `rush rebuild --from ` does a clean build of only the affected downstream projects. And if your toolchain is [package-deps-hash](https://www.npmjs.com/package/@microsoft/package-deps-hash) enabled, `rush build` delivers a powerful cross-project incremental build (that also supports subset builds). - -- **Cyclic dependencies:** If you have hammers that build hammer-factory-factories, Rush has you covered! When a package indirectly depends on an older version of itself, projects in the cycle use the last published version, whereas other projects still get the latest bits. - -- **Bulk publishing:** When it's time to do a release, Rush can detect which packages have changes, automatically bump all the appropriate version numbers, and run `npm publish` in each folder. If you like, configure your server to automatically run `rush publish` every hour. - -- **Changelog tracking:** Whenever a PR is created, you can require developers to provide a major/minor/patch log entry for the affected projects. During publishing, these changes will be automatically aggregated into a nicely formatted [CHANGELOG.md](https://github.com/Microsoft/web-build-tools/blob/master/core-build/web-library-build/CHANGELOG.md) file. - -- **Enterprise policies:** Want to review new libraries before developers add them to package.json, but avoid hassling people about already approved cases? Want to enforce that all your projects depend on the same library version numbers? Are dorky personal e-mail addresses showing up in your company's Git history? Rush can help maintain a consistent ecosystem when you've got many developers and many projects in the mix. - -- **Lots more!** Rush was created by the platform team for [Microsoft SharePoint](http://aka.ms/spfx). We build hundreds of production NPM packages every day, from internal and public Git repositories, for third party SDKs and live services with millions of users. If there's an important package management problem that needs solvin', it's likely to end up as a feature for Rush. - -### 3 Minute Demo - -See Rush in action! From your shell, install the tool like this: -``` -$ npm install -g @microsoft/rush -``` - -For command-line help, do this: -``` -$ rush -h -``` - -To see Rush build some real projects, try running these commands: :-) -``` -$ git clone https://github.com/Microsoft/web-build-tools -$ cd web-build-tools -$ rush install -$ rush install # <-- instantaneous! -$ rush rebuild -$ rush build # <-- instantaneous! -``` -_(If you don't have a GitHub account set up, you can use `rush install --bypass-policy`.)_ - -### Contact - -* [Gitter](https://gitter.im/web-build-tools/web-build-tools) - need real-time help? -* [Issues](https://github.com/Microsoft/web-build-tools/issue) - found a bug? report it here \ No newline at end of file diff --git a/pages/contributing.md b/pages/contributing.md new file mode 100644 index 00000000..858ebd71 --- /dev/null +++ b/pages/contributing.md @@ -0,0 +1,6 @@ +--- +layout: page +title: Contributing +--- + +Portal to web-build-tools diff --git a/pages/docs/developer/new-developer.md b/pages/docs/developer/new-developer.md new file mode 100644 index 00000000..7c0c7b7c --- /dev/null +++ b/pages/docs/developer/new-developer.md @@ -0,0 +1,6 @@ +--- +layout: page +title: Working in a Rush Repo +--- + +Content goes here diff --git a/pages/docs/maintainer/new-maintainer.md b/pages/docs/maintainer/new-maintainer.md new file mode 100644 index 00000000..46271a65 --- /dev/null +++ b/pages/docs/maintainer/new-maintainer.md @@ -0,0 +1,6 @@ +--- +layout: page +title: Setting Up a New Repo +--- + +Content goes here diff --git a/pages/docs/start.md b/pages/docs/start.md new file mode 100644 index 00000000..58297f2c --- /dev/null +++ b/pages/docs/start.md @@ -0,0 +1,10 @@ +--- +layout: page +title: Getting Started +--- + +Content goes here + +- 3 Minute Tutorial/Video/Screencap +- [Developer]({% link pages/docs/developer/new-developer.md %}) +- [Maintainer]({% link pages/docs/maintainer/new-maintainer.md %}) diff --git a/pages/faq.md b/pages/faq.md new file mode 100644 index 00000000..42a2c7fb --- /dev/null +++ b/pages/faq.md @@ -0,0 +1,6 @@ +--- +layout: page +title: Frequently Asked Questions +--- + +Content goes here diff --git a/pages/help.md b/pages/help.md new file mode 100644 index 00000000..5ad1fbfc --- /dev/null +++ b/pages/help.md @@ -0,0 +1,10 @@ +--- +layout: page +title: Getting Help +--- + +Content goes here + +- [FAQ]({% link pages/faq.md %}) +- Gitter +- Issues diff --git a/pages/news.md b/pages/news.md new file mode 100644 index 00000000..97e2bd93 --- /dev/null +++ b/pages/news.md @@ -0,0 +1,9 @@ +--- +layout: page +title: What's New +--- + +- Rush Stack feed +- Change log +- Migration instructions +- Coming soon From 7ca2f7dfd2b10a73514dd23c7b8546d7972b2d0d Mon Sep 17 00:00:00 2001 From: pgonzal Date: Mon, 21 May 2018 15:46:03 -0700 Subject: [PATCH 06/17] Rename navbar.html --> topnav.html --- _includes/base/{navbar.html => topnav.html} | 0 _layouts/default.html | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename _includes/base/{navbar.html => topnav.html} (100%) diff --git a/_includes/base/navbar.html b/_includes/base/topnav.html similarity index 100% rename from _includes/base/navbar.html rename to _includes/base/topnav.html diff --git a/_layouts/default.html b/_layouts/default.html index 2f0d567f..28ea6bcc 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -10,7 +10,7 @@ - {% include base/navbar.html %} + {% include base/topnav.html %} {{ content }} From 205d4884d4cff4c6c35b1c5d270a6d8d1a33faf5 Mon Sep 17 00:00:00 2001 From: pgonzal Date: Mon, 21 May 2018 16:28:45 -0700 Subject: [PATCH 07/17] Jekyll uses underscores in filenames, not dashes --- _includes/base/{topnav.html => top_nav.html} | 0 _layouts/default.html | 2 +- _sass/{_call-to-action.scss => _call_to_action.scss} | 0 pages/docs/developer/{new-developer.md => new_developer.md} | 0 .../docs/maintainer/{new-maintainer.md => new_maintainer.md} | 0 pages/docs/start.md | 4 ++-- styles.scss | 2 +- 7 files changed, 4 insertions(+), 4 deletions(-) rename _includes/base/{topnav.html => top_nav.html} (100%) rename _sass/{_call-to-action.scss => _call_to_action.scss} (100%) rename pages/docs/developer/{new-developer.md => new_developer.md} (100%) rename pages/docs/maintainer/{new-maintainer.md => new_maintainer.md} (100%) diff --git a/_includes/base/topnav.html b/_includes/base/top_nav.html similarity index 100% rename from _includes/base/topnav.html rename to _includes/base/top_nav.html diff --git a/_layouts/default.html b/_layouts/default.html index 28ea6bcc..66521946 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -10,7 +10,7 @@ - {% include base/topnav.html %} + {% include base/top_nav.html %} {{ content }} diff --git a/_sass/_call-to-action.scss b/_sass/_call_to_action.scss similarity index 100% rename from _sass/_call-to-action.scss rename to _sass/_call_to_action.scss diff --git a/pages/docs/developer/new-developer.md b/pages/docs/developer/new_developer.md similarity index 100% rename from pages/docs/developer/new-developer.md rename to pages/docs/developer/new_developer.md diff --git a/pages/docs/maintainer/new-maintainer.md b/pages/docs/maintainer/new_maintainer.md similarity index 100% rename from pages/docs/maintainer/new-maintainer.md rename to pages/docs/maintainer/new_maintainer.md diff --git a/pages/docs/start.md b/pages/docs/start.md index 58297f2c..16f595f3 100644 --- a/pages/docs/start.md +++ b/pages/docs/start.md @@ -6,5 +6,5 @@ title: Getting Started Content goes here - 3 Minute Tutorial/Video/Screencap -- [Developer]({% link pages/docs/developer/new-developer.md %}) -- [Maintainer]({% link pages/docs/maintainer/new-maintainer.md %}) +- [Developer]({% link pages/docs/developer/new_developer.md %}) +- [Maintainer]({% link pages/docs/maintainer/new_maintainer.md %}) diff --git a/styles.scss b/styles.scss index 5f752e72..fb9291e6 100644 --- a/styles.scss +++ b/styles.scss @@ -13,6 +13,6 @@ @import "showcase.scss"; @import "icons.scss"; @import "testimonials.scss"; -@import "call-to-action.scss"; +@import "call_to_action.scss"; @import "footer.scss"; @import "algolia.scss" From a32c0bf2c64d6c5950768d5fe3a7084e999c1d2f Mon Sep 17 00:00:00 2001 From: pgonzal Date: Tue, 22 May 2018 12:43:31 -0700 Subject: [PATCH 08/17] Initial prototype of docsite styles and layout --- _includes/base/footer.html | 2 +- _includes/base/side_nav.html | 22 +++++++++++++++ _includes/base/top_nav.html | 2 +- _layouts/custom_page.html | 13 +++++++++ _layouts/page.html | 38 +++++++++++++++++++++----- _sass/_docsite.scss | 52 ++++++++++++++++++++++++++++++++++++ styles.scss | 4 ++- 7 files changed, 123 insertions(+), 10 deletions(-) create mode 100644 _includes/base/side_nav.html create mode 100644 _layouts/custom_page.html create mode 100644 _sass/_docsite.scss diff --git a/_includes/base/footer.html b/_includes/base/footer.html index fb254a54..18b2b8ca 100644 --- a/_includes/base/footer.html +++ b/_includes/base/footer.html @@ -1,5 +1,5 @@ -