| Index: node_modules/vulcanize/README.md
|
| diff --git a/node_modules/vulcanize/README.md b/node_modules/vulcanize/README.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3b42d23e00bba5a849337c60df918de363f368f0
|
| --- /dev/null
|
| +++ b/node_modules/vulcanize/README.md
|
| @@ -0,0 +1,234 @@
|
| +[](https://npmjs.org/package/vulcanize)
|
| +[](https://travis-ci.org/Polymer/vulcanize)
|
| +
|
| +# Vulcanize
|
| +
|
| +### Concatenate a set of Web Components into one file
|
| +
|
| +>Named for the [Vulcanization](http://en.wikipedia.org/wiki/Vulcanization) process that turns polymers into more durable
|
| +materials.
|
| +
|
| +## Installation
|
| +
|
| +`vulcanize` is available on npm. For maximium utility, `vulcanize` should be installed globally.
|
| +
|
| + sudo npm install -g vulcanize
|
| +
|
| +This will install `vulcanize` to `/usr/local/bin/vulcanize`.
|
| +
|
| +## Usage
|
| +
|
| + vulcanize index.html
|
| +
|
| +At the simplest, `vulcanize` only requires an html file as an argument. The optimized output file will be named
|
| +`vulcanized.html`.
|
| +
|
| +If you want to control the output name, use the `-o` flag
|
| +
|
| + vulcanize -o build.html index.html
|
| +
|
| +Most URLs will be automatically adjusted by the vulcanizer.
|
| +
|
| +
|
| +## Options
|
| +
|
| +- `--output`, `-o`
|
| + - Output file name (defaults to vulcanized.html)
|
| +- `--verbose`, `-v`
|
| + - More verbose logging
|
| +- `--help`, `-v`, `-?`
|
| + - Print this message
|
| +- `--config`
|
| + - Read a given config file
|
| +- `--strip`, `-s`
|
| + - Remove comments and empty text nodes
|
| +- `--csp`
|
| + - Extract inline scripts to a separate file (uses `<output file name>`.js)
|
| +- `--inline`
|
| + - The opposite of CSP mode, inline all assets (script and css) into the document
|
| +- `--inline --csp`
|
| + - Bundle all javascript (inline and external) into `<output file name>`.js
|
| +- `--abspath`, `-p`
|
| + - Specify site root. Resolve paths to absolute paths based on site root
|
| +- `--no-strip-excludes`
|
| + - Keep imports excluded from inlining
|
| +- `--version`, ` -V`
|
| + - print version information
|
| +
|
| +## Additional options when used as Node module
|
| +
|
| +In addition to the above options, `vulcan` when used as Node module has additional options for string-based rather than file-based document processing. These are:
|
| +
|
| +- `inputSrc`
|
| + - The document to process, represented as String, String Buffer, or any Object with a `toString` function that yields valid HTML souce. Imports are resolved relative to the directory in which the node process was started.
|
| +- `outputHandler`
|
| + - An output handler function to call rather than writing the processing result to file. The handler must be of the form `function(filename, data)`, which is called with the following arguments:
|
| + - `filename`
|
| + - The file that vulcanize would create if it were running in file I/O mode.
|
| + - `data`
|
| + - The HTML source that vulcanize writes to file if no outputhandler is used.
|
| +
|
| +An example of using these options is shown below:
|
| +
|
| +```
|
| +var vulcan = require("./lib/vulcan");
|
| +
|
| +var head = "<head><link rel='import' href='test/html/imports/simple-import.html'></head>";
|
| +var body = "<body><my-element>test</my-element></body>";
|
| +var input = "<!doctype><html>" + head + body + "</html>";
|
| +
|
| +var outputHandler = function(filename, data) {
|
| + console.log(data);
|
| +};
|
| +
|
| +vulcan.setOptions({inputSrc: input, outputHandler: outputHandler}, function(err) {
|
| + if(err) {
|
| + console.error(err);
|
| + process.exit(1);
|
| + }
|
| + vulcan.processDocument();
|
| +});
|
| +
|
| +```
|
| +
|
| +## Config
|
| +> JSON file for additional options
|
| +
|
| +- Excludes: Remove the selected urls from the vulcanized bundle:
|
| +
|
| +### Example Config
|
| +```json
|
| +{
|
| + "excludes": {
|
| + "imports": [
|
| + "regex-to-exclude"
|
| + ]
|
| + }
|
| +}
|
| +```
|
| +
|
| +## Example Usage
|
| +
|
| +Say we have three html files: `index.html`, `x-app.html`, and `x-dep.html`.
|
| +
|
| +index.html:
|
| +
|
| +```html
|
| +<!DOCTYPE html>
|
| +<link rel="import" href="x-app.html">
|
| +<x-app></x-app>
|
| +```
|
| +
|
| +x-app.html:
|
| +
|
| +```html
|
| +<link rel="import" href="path/to/x-dep.html">
|
| +<polymer-element name="x-app">
|
| + <template>
|
| + <x-dep></x-dep>
|
| + </template>
|
| + <script>Polymer('x-app')</script>
|
| +</polymer-element>
|
| +```
|
| +
|
| +x-dep.html:
|
| +
|
| +```html
|
| +<polymer-element name="x-dep">
|
| + <template>
|
| + <img src="x-dep-icon.jpg">
|
| + </template>
|
| + <script>
|
| + Polymer('x-dep');
|
| + </script>
|
| +</polymer-element>
|
| +```
|
| +
|
| +Running vulcan on `index.html`, and specifying `build.html` as the output:
|
| +
|
| + vulcanize -o build.html index.html
|
| +
|
| +Will result in `build.html` that appears as so:
|
| +
|
| +```html
|
| +<!DOCTYPE html>
|
| +<div hidden><polymer-element name="x-dep" assetpath="path/to/">
|
| + <template>
|
| + <img src="http://www.polymer-project.org/images/logos/p-logo.svg">
|
| + </template>
|
| + <script>
|
| + Polymer('x-dep');
|
| + </script>
|
| +</polymer-element>
|
| +
|
| +<polymer-element name="x-app" assetpath="">
|
| + <template>
|
| + <x-dep></x-dep>
|
| + </template>
|
| + <script>Polymer('x-app')</script>
|
| +</polymer-element>
|
| +</div>
|
| +<x-app></x-app>
|
| +```
|
| +
|
| +## Content Security Policy
|
| +[Content Security Policy](http://en.wikipedia.org/wiki/Content_Security_Policy), or CSP, is a Javascript security model
|
| +that aims to prevent XSS and other attacks. In so doing, it prohibits the use of inline scripts.
|
| +
|
| +To help automate the use of Polymer element registration with CSP, the `--csp` flag to vulcan will remove all scripts
|
| +from the HTML Imports and place their contents into an output javascript file.
|
| +
|
| +Using the previous example, the output from `vulcanize --csp -o build.html index.html` will be
|
| +
|
| +build.html:
|
| +```html
|
| +<!DOCTYPE html>
|
| +<div hidden><polymer-element name="x-dep" assetpath="path/to/">
|
| + <template>
|
| + <img src="http://www.polymer-project.org/images/logos/p-logo.svg">
|
| + </template>
|
| +
|
| +</polymer-element>
|
| +
|
| +<polymer-element name="x-app" assetpath="">
|
| + <template>
|
| + <x-dep></x-dep>
|
| + </template>
|
| +
|
| +</polymer-element>
|
| +</div>
|
| +<x-app></x-app>
|
| +<script src="build.js"></script>
|
| +```
|
| +
|
| +build.js:
|
| +```js
|
| +
|
| + Polymer('x-dep');
|
| + ;
|
| +Polymer('x-app')
|
| +```
|
| +
|
| +The JS files can become a bit messy without reformatting, and semi-colons are inserted between script contents as a
|
| +precaution.
|
| +
|
| +## Stripping whitespace
|
| +
|
| +Vulcanize includes a set of size reducing heuristics to remove unnecessary whitespace and comments in HTML, JS, and CSS.
|
| +This can be activated by using the `--strip` option.
|
| +
|
| +Using the previous example, the output from `vulcanize --csp -o build.html --strip index.html` will be
|
| +
|
| +build.html:
|
| +```html
|
| +<!DOCTYPE html>
|
| +<div hidden><polymer-element name="x-dep" assetpath="path/to/"><template><img src="http://www.polymer-project.org/images/logos/p-logo.svg"></template></polymer-element><polymer-element name="x-app" assetpath=""><template><x-dep></x-dep></template></polymer-element></div>
|
| +<x-app></x-app>
|
| +<script src="build.js"></script>
|
| +```
|
| +
|
| +```js
|
| +Polymer("x-dep");Polymer("x-app");
|
| +```
|
| +
|
| +[](https://github.com/igrigorik/ga-beacon)
|
|
|