Initial Seed based off Jekyll Now
This commit is contained in:
Родитель
5b65590cd7
Коммит
22d02bd6e4
|
@ -34,6 +34,8 @@ build-iPhoneSimulator/
|
|||
/_yardoc/
|
||||
/doc/
|
||||
/rdoc/
|
||||
/_site/
|
||||
/.sass-cache
|
||||
|
||||
## Environment normalization:
|
||||
/.bundle/
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
layout: page
|
||||
title: 404 - Page not found
|
||||
---
|
||||
|
||||
Sorry, we can't find that page that you're looking for. You can try again by going [back to the homepage]({{ site.baseurl }}/).
|
||||
|
||||
[<img src="{{ site.baseurl }}/images/404.jpg" alt="Constructocat by https://github.com/jasoncostello" style="width: 400px;"/>]({{ site.baseurl }}/)
|
|
@ -0,0 +1 @@
|
|||
rushjs.io
|
|
@ -0,0 +1,88 @@
|
|||
#
|
||||
# This file contains configuration flags to customize your site
|
||||
#
|
||||
|
||||
theme: jekyll-theme-minimal
|
||||
|
||||
# Name of your site (displayed in the header)
|
||||
name: Rush
|
||||
|
||||
# Short bio or description (displayed in the header)
|
||||
description: Enterprise-grade Mono-repo Management
|
||||
|
||||
# URL of your avatar or profile pic (you could use your GitHub profile pic)
|
||||
avatar: https://raw.githubusercontent.com/Microsoft/web-build-tools/master/common/wiki-images/rush-logo.png
|
||||
|
||||
#
|
||||
# Flags below are optional
|
||||
#
|
||||
|
||||
# Includes an icon in the footer for each username you enter
|
||||
footer-links:
|
||||
dribbble:
|
||||
email:
|
||||
facebook:
|
||||
flickr:
|
||||
github: Microsoft/web-build-tools
|
||||
instagram:
|
||||
linkedin:
|
||||
pinterest:
|
||||
rss: # just type anything here for a working RSS icon
|
||||
twitter:
|
||||
stackoverflow: # your stackoverflow profile, e.g. "users/50476/bart-kiers"
|
||||
youtube: # channel/<your_long_string> or user/<user-name>
|
||||
googleplus: # anything in your profile username that comes after plus.google.com/
|
||||
|
||||
|
||||
# Enter your Disqus shortname (not your username) to enable commenting on posts
|
||||
# You can find your shortname on the Settings page of your Disqus account
|
||||
disqus:
|
||||
|
||||
# Enter your Google Analytics web tracking code (e.g. UA-2110908-2) to activate tracking
|
||||
google_analytics:
|
||||
|
||||
# Your website URL (e.g. http://barryclark.github.io or http://www.barryclark.co)
|
||||
# Used for Sitemap.xml and your RSS feed
|
||||
url: http://www.rushjs.io
|
||||
|
||||
# If you're hosting your site at a Project repository on GitHub pages
|
||||
# (http://yourusername.github.io/repository-name)
|
||||
# and NOT your User repository (http://yourusername.github.io)
|
||||
# then add in the baseurl here, like this: "/repository-name"
|
||||
baseurl: ""
|
||||
|
||||
#
|
||||
# !! You don't need to change any of the configuration flags below !!
|
||||
#
|
||||
|
||||
permalink: /:title/
|
||||
|
||||
# The release of Jekyll Now that you're using
|
||||
version: v1.2.0
|
||||
|
||||
# Jekyll 3 now only supports Kramdown for Markdown
|
||||
kramdown:
|
||||
# Use GitHub flavored markdown, including triple backtick fenced code blocks
|
||||
input: GFM
|
||||
# Jekyll 3 and GitHub Pages now only support rouge for syntax highlighting
|
||||
syntax_highlighter: rouge
|
||||
syntax_highlighter_opts:
|
||||
# Use existing pygments syntax highlighting css
|
||||
css_class: 'highlight'
|
||||
|
||||
# Set the Sass partials directory, as we're using @imports
|
||||
sass:
|
||||
style: :expanded # You might prefer to minify using :compressed
|
||||
|
||||
# Use the following plug-ins
|
||||
gems:
|
||||
- jekyll-sitemap # Create a sitemap using the official Jekyll sitemap gem
|
||||
- jekyll-feed # Create an Atom feed using the official Jekyll feed gem
|
||||
|
||||
# Exclude these files from your production _site
|
||||
exclude:
|
||||
- Gemfile
|
||||
- Gemfile.lock
|
||||
- LICENSE
|
||||
- README.md
|
||||
- CNAME
|
|
@ -0,0 +1,16 @@
|
|||
{% if site.google_analytics %}
|
||||
<!-- Google Analytics -->
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '{{ site.google_analytics }}', 'auto');
|
||||
ga('send', 'pageview', {
|
||||
'page': '{{ site.baseurl }}{{ page.url }}',
|
||||
'title': '{{ page.title | replace: "'", "\\'" }}'
|
||||
});
|
||||
</script>
|
||||
<!-- End Google Analytics -->
|
||||
{% endif %}
|
|
@ -0,0 +1,17 @@
|
|||
{% if site.disqus %}
|
||||
<div class="comments">
|
||||
<div id="disqus_thread"></div>
|
||||
<script type="text/javascript">
|
||||
|
||||
var disqus_shortname = '{{ site.disqus }}';
|
||||
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
</div>
|
||||
{% endif %}
|
|
@ -0,0 +1,18 @@
|
|||
<meta charset="utf-8" />
|
||||
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
|
||||
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1.0, maximum-scale=1.0'>
|
||||
|
||||
{% if page.excerpt %}
|
||||
<meta name="description" content="{{ page.excerpt| strip_html }}" />
|
||||
<meta property="og:description" content="{{ page.excerpt| strip_html }}" />
|
||||
{% else %}
|
||||
<meta name="description" content="{{ site.description }}">
|
||||
<meta property="og:description" content="{{ site.description }}" />
|
||||
{% endif %}
|
||||
<meta name="author" content="{{ site.name }}" />
|
||||
|
||||
{% if page.title %}
|
||||
<meta property="og:title" content="{{ page.title }}" />
|
||||
<meta property="twitter:title" content="{{ page.title }}" />
|
||||
{% endif %}
|
|
@ -0,0 +1,13 @@
|
|||
{% if site.footer-links.dribbble %}<a href="https://dribbble.com/{{ site.footer-links.dribbble }}"><i class="svg-icon dribbble"></i></a>{% endif %}
|
||||
{% if site.footer-links.email %}<a href="mailto:{{ site.footer-links.email }}"><i class="svg-icon email"></i></a>{% endif %}
|
||||
{% if site.footer-links.facebook %}<a href="https://www.facebook.com/{{ site.footer-links.facebook }}"><i class="svg-icon facebook"></i></a>{% endif %}
|
||||
{% if site.footer-links.flickr %}<a href="https://www.flickr.com/{{ site.footer-links.flickr }}"><i class="svg-icon flickr"></i></a>{% endif %}
|
||||
{% if site.footer-links.github %}<a href="https://github.com/{{ site.footer-links.github }}"><i class="svg-icon github"></i></a>{% endif %}
|
||||
{% if site.footer-links.instagram %}<a href="https://instagram.com/{{ site.footer-links.instagram }}"><i class="svg-icon instagram"></i></a>{% endif %}
|
||||
{% if site.footer-links.linkedin %}<a href="https://www.linkedin.com/in/{{ site.footer-links.linkedin }}"><i class="svg-icon linkedin"></i></a>{% endif %}
|
||||
{% if site.footer-links.pinterest %}<a href="https://www.pinterest.com/{{ site.footer-links.pinterest }}"><i class="svg-icon pinterest"></i></a>{% endif %}
|
||||
{% if site.footer-links.rss %}<a href="{{ site.baseurl }}/feed.xml"><i class="svg-icon rss"></i></a>{% endif %}
|
||||
{% if site.footer-links.twitter %}<a href="https://www.twitter.com/{{ site.footer-links.twitter }}"><i class="svg-icon twitter"></i></a>{% endif %}
|
||||
{% if site.footer-links.stackoverflow %}<a href="http://stackoverflow.com/{{ site.footer-links.stackoverflow }}"><i class="svg-icon stackoverflow"></i></a>{% endif %}
|
||||
{% if site.footer-links.youtube %}<a href="https://youtube.com/{{ site.footer-links.youtube }}"><i class="svg-icon youtube"></i></a>{% endif %}
|
||||
{% if site.footer-links.googleplus %}<a href="https://plus.google.com/{{ site.footer-links.googleplus }}"><i class="svg-icon googleplus"></i></a>{% endif %}
|
|
@ -0,0 +1,51 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{% if page.title %}{{ page.title }} – {% endif %}{{ site.name }} – {{ site.description }}</title>
|
||||
|
||||
{% include meta.html %}
|
||||
|
||||
<!--[if lt IE 9]>
|
||||
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}/style.css" />
|
||||
<link rel="alternate" type="application/rss+xml" title="{{ site.name }} - {{ site.description }}" href="{{ site.baseurl }}/feed.xml" />
|
||||
|
||||
<!-- Created with Jekyll Now - http://github.com/barryclark/jekyll-now -->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="wrapper-masthead">
|
||||
<div class="container">
|
||||
<header class="masthead clearfix">
|
||||
<a href="{{ site.baseurl }}/" class="site-avatar"><img src="{{ site.avatar }}" /></a>
|
||||
|
||||
<div class="site-info">
|
||||
<h1 class="site-name"><a href="{{ site.baseurl }}/">{{ site.name }}</a></h1>
|
||||
<p class="site-description">{{ site.description }}</p>
|
||||
</div>
|
||||
|
||||
<nav>
|
||||
<a href="{{ site.baseurl }}/">Blog</a>
|
||||
<a href="{{ site.baseurl }}/about">About</a>
|
||||
</nav>
|
||||
</header>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="main" role="main" class="container">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
<div class="wrapper-footer">
|
||||
<div class="container">
|
||||
<footer class="footer">
|
||||
{% include svg-icons.html %}
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% include analytics.html %}
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<article class="page">
|
||||
|
||||
<h1>{{ page.title }}</h1>
|
||||
|
||||
<div class="entry">
|
||||
{{ content }}
|
||||
</div>
|
||||
</article>
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<article class="post">
|
||||
<h1>{{ page.title }}</h1>
|
||||
|
||||
<div class="entry">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
<div class="date">
|
||||
Written on {{ page.date | date: "%B %e, %Y" }}
|
||||
</div>
|
||||
|
||||
{% include disqus.html %}
|
||||
</article>
|
|
@ -0,0 +1,31 @@
|
|||
---
|
||||
layout: post
|
||||
title: Rush now has preliminary support for PNPM
|
||||
---
|
||||
|
||||
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).
|
|
@ -0,0 +1,84 @@
|
|||
|
||||
.highlight {
|
||||
background-color: #efefef;
|
||||
padding: 7px 7px 7px 10px;
|
||||
border: 1px solid #ddd;
|
||||
-moz-box-shadow: 3px 3px rgba(0,0,0,0.1);
|
||||
-webkit-box-shadow: 3px 3px rgba(0,0,0,0.1);
|
||||
box-shadow: 3px 3px rgba(0,0,0,0.1);
|
||||
margin: 20px 0 20px 0;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family:'Bitstream Vera Sans Mono','Courier', monospace;
|
||||
}
|
||||
|
||||
.highlight .c { color: #586E75 } /* Comment */
|
||||
.highlight .err { color: #93A1A1 } /* Error */
|
||||
.highlight .g { color: #93A1A1 } /* Generic */
|
||||
.highlight .k { color: #859900 } /* Keyword */
|
||||
.highlight .l { color: #93A1A1 } /* Literal */
|
||||
.highlight .n { color: #93A1A1 } /* Name */
|
||||
.highlight .o { color: #859900 } /* Operator */
|
||||
.highlight .x { color: #CB4B16 } /* Other */
|
||||
.highlight .p { color: #93A1A1 } /* Punctuation */
|
||||
.highlight .cm { color: #586E75 } /* Comment.Multiline */
|
||||
.highlight .cp { color: #859900 } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #586E75 } /* Comment.Single */
|
||||
.highlight .cs { color: #859900 } /* Comment.Special */
|
||||
.highlight .gd { color: #2AA198 } /* Generic.Deleted */
|
||||
.highlight .ge { color: #93A1A1; font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #DC322F } /* Generic.Error */
|
||||
.highlight .gh { color: #CB4B16 } /* Generic.Heading */
|
||||
.highlight .gi { color: #859900 } /* Generic.Inserted */
|
||||
.highlight .go { color: #93A1A1 } /* Generic.Output */
|
||||
.highlight .gp { color: #93A1A1 } /* Generic.Prompt */
|
||||
.highlight .gs { color: #93A1A1; font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #CB4B16 } /* Generic.Subheading */
|
||||
.highlight .gt { color: #93A1A1 } /* Generic.Traceback */
|
||||
.highlight .kc { color: #CB4B16 } /* Keyword.Constant */
|
||||
.highlight .kd { color: #268BD2 } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #859900 } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #859900 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #268BD2 } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #DC322F } /* Keyword.Type */
|
||||
.highlight .ld { color: #93A1A1 } /* Literal.Date */
|
||||
.highlight .m { color: #2AA198 } /* Literal.Number */
|
||||
.highlight .s { color: #2AA198 } /* Literal.String */
|
||||
.highlight .na { color: #93A1A1 } /* Name.Attribute */
|
||||
.highlight .nb { color: #B58900 } /* Name.Builtin */
|
||||
.highlight .nc { color: #268BD2 } /* Name.Class */
|
||||
.highlight .no { color: #CB4B16 } /* Name.Constant */
|
||||
.highlight .nd { color: #268BD2 } /* Name.Decorator */
|
||||
.highlight .ni { color: #CB4B16 } /* Name.Entity */
|
||||
.highlight .ne { color: #CB4B16 } /* Name.Exception */
|
||||
.highlight .nf { color: #268BD2 } /* Name.Function */
|
||||
.highlight .nl { color: #93A1A1 } /* Name.Label */
|
||||
.highlight .nn { color: #93A1A1 } /* Name.Namespace */
|
||||
.highlight .nx { color: #555 } /* Name.Other */
|
||||
.highlight .py { color: #93A1A1 } /* Name.Property */
|
||||
.highlight .nt { color: #268BD2 } /* Name.Tag */
|
||||
.highlight .nv { color: #268BD2 } /* Name.Variable */
|
||||
.highlight .ow { color: #859900 } /* Operator.Word */
|
||||
.highlight .w { color: #93A1A1 } /* Text.Whitespace */
|
||||
.highlight .mf { color: #2AA198 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #2AA198 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #2AA198 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #2AA198 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #586E75 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #2AA198 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #93A1A1 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #2AA198 } /* Literal.String.Double */
|
||||
.highlight .se { color: #CB4B16 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #93A1A1 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #2AA198 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #2AA198 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #DC322F } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #2AA198 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #2AA198 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #268BD2 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #268BD2 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #268BD2 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #268BD2 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #2AA198 } /* Literal.Number.Integer.Long */
|
|
@ -0,0 +1,53 @@
|
|||
|
||||
/***************/
|
||||
/* MEYER RESET */
|
||||
/***************/
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
// HTML5 display-role reset for older browsers
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
// Apply a natural box layout model to all elements
|
||||
// from: http://www.paulirish.com/2012/box-sizing-border-box-ftw/
|
||||
*, *:before, *:after {
|
||||
-moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box;
|
||||
}
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -0,0 +1,27 @@
|
|||
|
||||
//
|
||||
// VARIABLES
|
||||
//
|
||||
|
||||
// Colors
|
||||
$blue: #4183C4;
|
||||
|
||||
// Grays
|
||||
$black: #000;
|
||||
$darkerGray: #222;
|
||||
$darkGray: #333;
|
||||
$gray: #666;
|
||||
$lightGray: #eee;
|
||||
$white: #fff;
|
||||
|
||||
// Font stacks
|
||||
$helvetica: Helvetica, Arial, sans-serif;
|
||||
$helveticaNeue: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
$georgia: Georgia, serif;
|
||||
|
||||
// Mobile breakpoints
|
||||
@mixin mobile {
|
||||
@media screen and (max-width: 640px) {
|
||||
@content;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,53 @@
|
|||
---
|
||||
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 <project>` does a clean build of just your upstream dependencies. After you make changes, `rush rebuild --from <project>` 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
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 54 KiB |
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<div class="posts">
|
||||
{% for post in site.posts %}
|
||||
<article class="post">
|
||||
|
||||
<h1><a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a></h1>
|
||||
|
||||
<div class="entry">
|
||||
{{ post.excerpt }}
|
||||
</div>
|
||||
|
||||
<a href="{{ site.baseurl }}{{ post.url }}" class="read-more">Read More</a>
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
|
@ -0,0 +1,289 @@
|
|||
---
|
||||
---
|
||||
|
||||
//
|
||||
// IMPORTS
|
||||
//
|
||||
|
||||
@import "reset";
|
||||
@import "variables";
|
||||
// Syntax highlighting @import is at the bottom of this file
|
||||
|
||||
/**************/
|
||||
/* BASE RULES */
|
||||
/**************/
|
||||
|
||||
html {
|
||||
font-size: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
background: $white;
|
||||
font: 18px/1.4 $helvetica;
|
||||
color: $darkGray;
|
||||
}
|
||||
|
||||
.container {
|
||||
margin: 0 auto;
|
||||
max-width: 740px;
|
||||
padding: 0 10px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: $helveticaNeue;
|
||||
color: $darkerGray;
|
||||
font-weight: bold;
|
||||
|
||||
line-height: 1.7;
|
||||
margin: 1em 0 15px;
|
||||
padding: 0;
|
||||
|
||||
@include mobile {
|
||||
line-height: 1.4;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 30px;
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 18px;
|
||||
color: $gray;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 15px 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $blue;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
&:hover, &:active {
|
||||
color: $blue;
|
||||
}
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
margin: 15px 0;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
ol {
|
||||
list-style-type: decimal;
|
||||
}
|
||||
|
||||
ol ul, ul ol, ul ul, ol ol {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
ul ul, ol ul {
|
||||
list-style-type: circle;
|
||||
}
|
||||
|
||||
em, i {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
strong, b {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
// Fixes images in popup boxes from Google Translate
|
||||
.gmnoprint img {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.date {
|
||||
font-style: italic;
|
||||
color: $gray;
|
||||
}
|
||||
|
||||
// Specify the color of the selection
|
||||
::-moz-selection {
|
||||
color: $black;
|
||||
background: $lightGray;
|
||||
}
|
||||
::selection {
|
||||
color: $black;
|
||||
background: $lightGray;
|
||||
}
|
||||
|
||||
// Nicolas Gallagher's micro clearfix hack
|
||||
// http://nicolasgallagher.com/micro-clearfix-hack/
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
content: " ";
|
||||
display: table;
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
/*********************/
|
||||
/* LAYOUT / SECTIONS */
|
||||
/*********************/
|
||||
|
||||
//
|
||||
// .masthead
|
||||
//
|
||||
|
||||
.wrapper-masthead {
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.masthead {
|
||||
padding: 20px 0;
|
||||
border-bottom: 1px solid $lightGray;
|
||||
|
||||
@include mobile {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.site-avatar {
|
||||
float: left;
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
margin-right: 15px;
|
||||
|
||||
@include mobile {
|
||||
float: none;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
img {
|
||||
border-radius: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.site-info {
|
||||
float: left;
|
||||
|
||||
@include mobile {
|
||||
float: none;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
.site-name {
|
||||
margin: 0;
|
||||
color: $darkGray;
|
||||
cursor: pointer;
|
||||
font-family: $helveticaNeue;
|
||||
font-weight: 300;
|
||||
font-size: 28px;
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
.site-description {
|
||||
margin: -5px 0 0 0;
|
||||
color: $gray;
|
||||
font-size: 16px;
|
||||
|
||||
@include mobile {
|
||||
margin: 3px 0;
|
||||
}
|
||||
}
|
||||
|
||||
nav {
|
||||
float: right;
|
||||
margin-top: 23px; // @TODO: Vertically middle align
|
||||
font-family: $helveticaNeue;
|
||||
font-size: 18px;
|
||||
|
||||
@include mobile {
|
||||
float: none;
|
||||
margin-top: 9px;
|
||||
display: block;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
a {
|
||||
margin-left: 20px;
|
||||
color: $darkGray;
|
||||
text-align: right;
|
||||
font-weight: 300;
|
||||
letter-spacing: 1px;
|
||||
|
||||
@include mobile {
|
||||
margin: 0 10px;
|
||||
color: $blue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// .main
|
||||
//
|
||||
|
||||
.posts > .post {
|
||||
padding-bottom: 2em;
|
||||
border-bottom: 1px solid $lightGray;
|
||||
}
|
||||
|
||||
.posts > .post:last-child {
|
||||
padding-bottom: 1em;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.post {
|
||||
blockquote {
|
||||
margin: 1.8em .8em;
|
||||
border-left: 2px solid $gray;
|
||||
padding: 0.1em 1em;
|
||||
color: $gray;
|
||||
font-size: 22px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.comments {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.read-more {
|
||||
text-transform: uppercase;
|
||||
font-size: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
.wrapper-footer {
|
||||
margin-top: 50px;
|
||||
border-top: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: $lightGray;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 20px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
// Settled on moving the import of syntax highlighting to the bottom of the CSS
|
||||
// ... Otherwise it really bloats up the top of the CSS file and makes it difficult to find the start
|
||||
@import "highlights";
|
||||
@import "svg-icons";
|
Загрузка…
Ссылка в новой задаче