From 2d8827057b25045968bc543b0d8e9bded5d61eb2 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Thu, 29 Oct 2020 12:33:15 -0500 Subject: [PATCH 01/33] React + Snowpack Guide (#1309) * adding react guide * fixing page title * fixing a sentence * copy edits * copy edits * Refactoring CSS/Diffing copy paste solution Spinning the CSS into seperate files to make them easier to refactor, testing a solution for diffing copy/paste * copy edits * copy edits, restructuring * adding some images * image optmization, frame * adding more images * Update repository URL * Incorporate guides.css * Add more guides styling * Update www/guides/react.md Co-authored-by: Drew Powers <1369770+drwpow@users.noreply.github.com> * Update www/guides/react.md Co-authored-by: Drew Powers <1369770+drwpow@users.noreply.github.com> * Update www/guides/react.md Co-authored-by: Drew Powers <1369770+drwpow@users.noreply.github.com> * Update www/guides/react.md Co-authored-by: Drew Powers <1369770+drwpow@users.noreply.github.com> * Update www/guides/react.md Co-authored-by: Drew Powers <1369770+drwpow@users.noreply.github.com> * Update www/guides/react.md Co-authored-by: Drew Powers <1369770+drwpow@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Drew Powers <1369770+drwpow@users.noreply.github.com> * Update www/guides/react.md Co-authored-by: Drew Powers <1369770+drwpow@users.noreply.github.com> * Fix indentation * changing header image * type in bash command * fixing typo * fixing typo * fixing typo * revising folder structure section * adding video * updating video * adding back gif * initial migration of docs to Snowpack * removing boilerplate ref to canvas confetti * changing output directory * adding cssnano * ugh accidental commit of output dir * removing old original file * removing includes files in guides since those will be added later, fixing Snowpack config * fixing start command to process sass * removing generated file, readding test * edits * re-adding cat behavior until we have seperate pages * error in package.json * fixing output directory * changing order of build commands * changing order of build commands * copy edits * twitter share Co-authored-by: Drew Powers Co-authored-by: Drew Powers <1369770+drwpow@users.noreply.github.com> --- .gitignore | 3 +- docs/08-guides.md | 4 +- www/.eleventy.js | 146 +- www/.gitignore | 6 + www/.prettierrc | 4 + www/LICENSE | 21 + www/README.md | 24 + www/__test__/anchors.test.js | 6 +- www/{_eleventy => _includes}/layouts/base.njk | 0 .../layouts/guide.njk | 12 +- www/{_eleventy => _includes}/layouts/main.njk | 0 www/_includes/layouts/original-base.njk | 26 + www/{_eleventy => _includes}/layouts/post.njk | 0 www/_template/assets/favicon.png | Bin 0 -> 555 bytes www/_template/assets/index.css | 26 + www/_template/assets/logo.svg | 1 + www/_template/assets/robots.txt | 3 + .../assets/snowpack-logo-black.png | Bin .../assets/snowpack-logo-dark.png | Bin .../assets/snowpack-logo-white.png | Bin .../assets/snowpack-wordmark-black.png | Bin .../assets/snowpack-wordmark-white.png | Bin .../favicon/android-chrome-192x192.png | Bin .../favicon/android-chrome-512x512.png | Bin .../favicon/apple-touch-icon.png | Bin www/{ => _template}/favicon/favicon-16x16.png | Bin www/{ => _template}/favicon/favicon-32x32.png | Bin www/{ => _template}/favicon/favicon.ico | Bin www/{ => _template}/favicon/site.webmanifest | 0 www/{ => _template}/guides/plugins.md | 15 +- www/_template/guides/react.md | 343 ++++ www/{ => _template}/img/JSAwardWinner.jpg | Bin www/{ => _template}/img/JSAwardWinner.png | Bin www/{ => _template}/img/banner-2.jpg | Bin www/{ => _template}/img/browser-logos-all.png | Bin www/{ => _template}/img/extra-space-3.jpg | Bin www/{ => _template}/img/extra-space-4.jpg | Bin www/{ => _template}/img/extra-space-4.mp4 | Bin www/{ => _template}/img/how-does-it-work.jpg | Bin www/{ => _template}/img/logo.png | Bin www/{ => _template}/img/nomodule.png | Bin .../img/react-snarky-tweet-2.png | Bin .../img/react-snarky-tweet.png | Bin .../img/snowpack-27-screenshot-1.png | Bin .../img/snowpack-27-screenshot-2.png | Bin .../img/snowpack-27-screenshot-3.png | Bin .../img/snowpack-build-example.png | Bin .../img/snowpack-build-mov.mov | Bin .../img/snowpack-dev-example.png | Bin .../img/snowpack-dev-startup-2.png | Bin .../img/snowpack-dev-startup.png | Bin .../img/snowpack-unbundled-example-2.png | Bin .../img/snowpack-unbundled-example-3.png | Bin .../img/snowpack-unbundled-example.png | Bin www/{ => _template}/img/social-2.jpg | Bin www/{ => _template}/img/social-2.png | Bin www/{ => _template}/img/social-3.jpg | Bin www/{ => _template}/img/social-4.jpg | Bin www/{ => _template}/img/social-4.png | Bin www/{ => _template}/img/social.jpg | Bin www/{ => _template}/img/stat.jpg | Bin www/{ => _template}/img/svelte-ts.png | Bin www/{ => _template}/img/treeshaking.jpg | Bin www/_template/index.md | 1408 +++++++++++++++++ .../posts/2020-05-26-snowpack-2-0-release.md | 0 .../posts/2020-07-30-snowpack-2-7-release.md | 0 www/{assets => _template/static}/app.min.css | 104 ++ www/css/_guides.scss | 121 ++ www/css/app.scss | 3 + www/img/ReactGuide.jpg | Bin 0 -> 1337854 bytes www/img/guides/react/buttons.svg | 13 + www/img/guides/react/folderstructure.png | Bin 0 -> 146762 bytes www/img/guides/react/hmr.gif | Bin 0 -> 468362 bytes .../minimalist-hello-world-react-logo.png | Bin 0 -> 80217 bytes .../minimalist-hello-world-react-timer.png | Bin 0 -> 25032 bytes .../react/minimalist-hello-world-react.png | Bin 0 -> 22235 bytes .../guides/react/minimalist-hello-world.png | Bin 0 -> 30927 bytes www/img/guides/react/react-fast-refresh.gif | Bin 0 -> 329983 bytes www/img/guides/react/react.gif | Bin 0 -> 141964 bytes www/img/guides/react/snowpack-logo-tiny.svg | 11 + www/img/react-guide.png | Bin 0 -> 4200557 bytes www/package.json | 30 +- www/plugins.html | 22 - www/snowpack.config.js | 28 + www/src/index.js | 4 + www/yarn.lock | 1148 ++++++++++++-- 86 files changed, 3202 insertions(+), 330 deletions(-) create mode 100644 www/.gitignore create mode 100644 www/.prettierrc create mode 100644 www/LICENSE create mode 100644 www/README.md rename www/{_eleventy => _includes}/layouts/base.njk (100%) rename www/{_eleventy => _includes}/layouts/guide.njk (78%) rename www/{_eleventy => _includes}/layouts/main.njk (100%) create mode 100644 www/_includes/layouts/original-base.njk rename www/{_eleventy => _includes}/layouts/post.njk (100%) create mode 100644 www/_template/assets/favicon.png create mode 100644 www/_template/assets/index.css create mode 100644 www/_template/assets/logo.svg create mode 100644 www/_template/assets/robots.txt rename www/{ => _template}/assets/snowpack-logo-black.png (100%) rename www/{ => _template}/assets/snowpack-logo-dark.png (100%) rename www/{ => _template}/assets/snowpack-logo-white.png (100%) rename www/{ => _template}/assets/snowpack-wordmark-black.png (100%) rename www/{ => _template}/assets/snowpack-wordmark-white.png (100%) rename www/{ => _template}/favicon/android-chrome-192x192.png (100%) rename www/{ => _template}/favicon/android-chrome-512x512.png (100%) rename www/{ => _template}/favicon/apple-touch-icon.png (100%) rename www/{ => _template}/favicon/favicon-16x16.png (100%) rename www/{ => _template}/favicon/favicon-32x32.png (100%) rename www/{ => _template}/favicon/favicon.ico (100%) rename www/{ => _template}/favicon/site.webmanifest (100%) rename www/{ => _template}/guides/plugins.md (98%) create mode 100644 www/_template/guides/react.md rename www/{ => _template}/img/JSAwardWinner.jpg (100%) rename www/{ => _template}/img/JSAwardWinner.png (100%) rename www/{ => _template}/img/banner-2.jpg (100%) rename www/{ => _template}/img/browser-logos-all.png (100%) rename www/{ => _template}/img/extra-space-3.jpg (100%) rename www/{ => _template}/img/extra-space-4.jpg (100%) rename www/{ => _template}/img/extra-space-4.mp4 (100%) rename www/{ => _template}/img/how-does-it-work.jpg (100%) rename www/{ => _template}/img/logo.png (100%) rename www/{ => _template}/img/nomodule.png (100%) rename www/{ => _template}/img/react-snarky-tweet-2.png (100%) rename www/{ => _template}/img/react-snarky-tweet.png (100%) rename www/{ => _template}/img/snowpack-27-screenshot-1.png (100%) rename www/{ => _template}/img/snowpack-27-screenshot-2.png (100%) rename www/{ => _template}/img/snowpack-27-screenshot-3.png (100%) rename www/{ => _template}/img/snowpack-build-example.png (100%) rename www/{ => _template}/img/snowpack-build-mov.mov (100%) rename www/{ => _template}/img/snowpack-dev-example.png (100%) rename www/{ => _template}/img/snowpack-dev-startup-2.png (100%) rename www/{ => _template}/img/snowpack-dev-startup.png (100%) rename www/{ => _template}/img/snowpack-unbundled-example-2.png (100%) rename www/{ => _template}/img/snowpack-unbundled-example-3.png (100%) rename www/{ => _template}/img/snowpack-unbundled-example.png (100%) rename www/{ => _template}/img/social-2.jpg (100%) rename www/{ => _template}/img/social-2.png (100%) rename www/{ => _template}/img/social-3.jpg (100%) rename www/{ => _template}/img/social-4.jpg (100%) rename www/{ => _template}/img/social-4.png (100%) rename www/{ => _template}/img/social.jpg (100%) rename www/{ => _template}/img/stat.jpg (100%) rename www/{ => _template}/img/svelte-ts.png (100%) rename www/{ => _template}/img/treeshaking.jpg (100%) create mode 100644 www/_template/index.md rename www/{ => _template}/posts/2020-05-26-snowpack-2-0-release.md (100%) rename www/{ => _template}/posts/2020-07-30-snowpack-2-7-release.md (100%) rename www/{assets => _template/static}/app.min.css (92%) create mode 100644 www/css/_guides.scss create mode 100644 www/img/ReactGuide.jpg create mode 100644 www/img/guides/react/buttons.svg create mode 100644 www/img/guides/react/folderstructure.png create mode 100644 www/img/guides/react/hmr.gif create mode 100644 www/img/guides/react/minimalist-hello-world-react-logo.png create mode 100644 www/img/guides/react/minimalist-hello-world-react-timer.png create mode 100644 www/img/guides/react/minimalist-hello-world-react.png create mode 100644 www/img/guides/react/minimalist-hello-world.png create mode 100644 www/img/guides/react/react-fast-refresh.gif create mode 100644 www/img/guides/react/react.gif create mode 100644 www/img/guides/react/snowpack-logo-tiny.svg create mode 100644 www/img/react-guide.png delete mode 100644 www/plugins.html create mode 100644 www/snowpack.config.js create mode 100644 www/src/index.js diff --git a/.gitignore b/.gitignore index f2a6515c29..16f579b732 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,8 @@ .idea .vercel www/_site -www/index.md +www/_template/index.md +www/eleventy lerna-debug.log node_modules package-lock.json diff --git a/docs/08-guides.md b/docs/08-guides.md index a815650237..7f2a86d2ae 100644 --- a/docs/08-guides.md +++ b/docs/08-guides.md @@ -178,11 +178,11 @@ Remember that Workbox expects to be run every time you deploy, as a part of a pr ### @web/test-runner -[@web/test-runner](https://www.npmjs.com/package/@snowpack/app-scripts-react) is our recommended test runner for Snowpack projects. [See our section on testing](/#testing) for detailed instructions on how to get started with @web/test-runner. +[@web/test-runner](https://www.npmjs.com/package/@web/test-runner) is our recommended test runner for Snowpack projects. [See our section on testing](/#testing) for detailed instructions on how to get started with @web/test-runner. ### Jest -> Update (October 11, 2020): **We now recommend [@web/test-runner](https://www.npmjs.com/package/@snowpack/app-scripts-react) as our test runner of choice for Snowpack projects.** [See our section on testing](/#testing) for more background behind the change. +> Update (October 11, 2020): **We now recommend [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) as our test runner of choice for Snowpack projects.** [See our section on testing](/#testing) for more background behind the change. [Jest](https://jestjs.io/) is a popular Node.js test runner for Node.js & web projects. Jest can be used with any frontend project as long as you configure how Jest should build your frontend files to run on Node.js. Many projects will try to manage this configuration for you, since it can get complicated. diff --git a/www/.eleventy.js b/www/.eleventy.js index f892899b31..a8d289f463 100644 --- a/www/.eleventy.js +++ b/www/.eleventy.js @@ -1,80 +1,28 @@ -const path = require('path'); const pluginTOC = require('eleventy-plugin-nesting-toc'); const syntaxHighlight = require('@11ty/eleventy-plugin-syntaxhighlight'); -const child_process = require('child_process'); - -const {DateTime} = require('luxon'); -// const pluginRss = require("@11ty/eleventy-plugin-rss"); -// const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight"); +const markdownIt = require('markdown-it'); +const markdownItAnchor = require('markdown-it-anchor'); +const { DateTime } = require('luxon'); module.exports = function (eleventyConfig) { - eleventyConfig.addPassthroughCopy(path.join(__dirname, 'img')); - eleventyConfig.addPassthroughCopy(path.join(__dirname, 'assets')); - eleventyConfig.addPassthroughCopy(path.join(__dirname, 'favicon')); - // eleventyConfig.addPlugin(pluginRss); - // eleventyConfig.addPlugin(pluginSyntaxHighlight); - // eleventyConfig.setDataDeepMerge(true); - - // eleventyConfig.addLayoutAlias("post", "layouts/post.njk"); - - // eleventyConfig.addFilter("absUrl", url => { - // return 'https://www.pika.dev' + url; - // }); - - eleventyConfig.addFilter('readableDate', (dateObj) => { - return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat('LLLL dd, yyyy'); - }); - - // // https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string - // eleventyConfig.addFilter('htmlDateString', (dateObj) => { - // return DateTime.fromJSDate(dateObj, {zone: 'utc'}).toFormat('yyyy-LL-dd'); - // }); - - // // Get the first `n` elements of a collection. - // eleventyConfig.addFilter("head", (array, n) => { - // if( n < 0 ) { - // return array.slice(n); - // } - - // return array.slice(0, n); - // }); - - // // eleventyConfig.addCollection("tagList", require("./_11ty/getTagList")); - - // // eleventyConfig.addPassthroughCopy("img"); - // // eleventyConfig.addPassthroughCopy("css"); - - // /* Markdown Plugins */ - // let markdownIt = require("markdown-it"); - // let markdownItAnchor = require("markdown-it-anchor"); - // let options = { - // html: true, - // breaks: true, - // linkify: true - // }; - // let opts = { - // permalink: true, - // permalinkClass: "direct-link", - // permalinkSymbol: "#" - // }; - - // eleventyConfig.setLibrary("md", markdownIt(options) - // .use(markdownItAnchor, opts) - // ); - - // eleventyConfig.setBrowserSyncConfig({ - // callbacks: { - // ready: function(err, browserSync) { - // const content_404 = fs.readFileSync('_site/404.html'); - - // browserSync.addMiddleware("*", (req, res) => { - // // Provides the 404 content without redirect. - // res.write(content_404); - // res.end(); - // }); - // } - // } - // }); + eleventyConfig.setTemplateFormats([ + // Templates: + 'html', + 'njk', + 'md', + // Static Assets: + 'css', + 'jpeg', + 'jpg', + 'png', + 'svg', + 'woff', + 'woff2', + 'mp4', + ]); + eleventyConfig.addPassthroughCopy('static'); + eleventyConfig.addPassthroughCopy('favicon'); + eleventyConfig.addPassthroughCopy('img'); eleventyConfig.addPlugin(syntaxHighlight); eleventyConfig.addPlugin(pluginTOC, { @@ -82,9 +30,12 @@ module.exports = function (eleventyConfig) { // wrapperClass: 'grid-toc', }); - // Example Markdown configuration (to add IDs to the headers) - const markdownIt = require('markdown-it'); - const markdownItAnchor = require('markdown-it-anchor'); + eleventyConfig.addFilter('readableDate', (dateObj) => { + return DateTime.fromJSDate(dateObj, { zone: 'utc' }).toFormat( + 'LLLL dd, yyyy', + ); + }); + eleventyConfig.setLibrary( 'md', markdownIt({ @@ -94,48 +45,11 @@ module.exports = function (eleventyConfig) { }).use(markdownItAnchor, {}), ); - // Only run in --serve mode. - if (process.argv.includes('--serve')) { - function onWatchEvent() { - child_process.execSync('cat ../docs/* > index.md', { - cwd: __dirname, - encoding: 'utf8', - }); - } - const chokidar = require('chokidar'); - const watcher = chokidar.watch(path.join(__dirname, '../docs/*.md'), { - persistent: true, - ignoreInitial: true, - disableGlobbing: false, - }); - watcher.on('add', (fileLoc) => onWatchEvent(fileLoc)); - watcher.on('change', (fileLoc) => onWatchEvent(fileLoc)); - watcher.on('unlink', (fileLoc) => onWatchEvent(fileLoc)); - } - return { - // templateFormats: [ - // "md", - // "njk", - // "html", - // "liquid" - // ], - - // // If your site lives in a different subdirectory, change this. - // // Leading or trailing slashes are all normalized away, so don’t worry about it. - // // If you don’t have a subdirectory, use "" or "/" (they do the same thing) - // // This is only used for URLs (it does not affect your file structure) - // pathPrefix: "/", - - // markdownTemplateEngine: "liquid", - // htmlTemplateEngine: "njk", - // dataTemplateEngine: "njk", - // passthroughFileCopy: true, dir: { - input: path.join(__dirname, '.'), - includes: '_eleventy', - // data: path.join(__dirname, 'data'), - output: path.join(__dirname, '_site'), + input: '_template', + includes: '../_includes', + output: 'eleventy', }, }; }; diff --git a/www/.gitignore b/www/.gitignore new file mode 100644 index 0000000000..46f528fd89 --- /dev/null +++ b/www/.gitignore @@ -0,0 +1,6 @@ +.build +build +web_modules +node_modules +_site +_eleventy \ No newline at end of file diff --git a/www/.prettierrc b/www/.prettierrc new file mode 100644 index 0000000000..a20502b7f0 --- /dev/null +++ b/www/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "trailingComma": "all" +} diff --git a/www/LICENSE b/www/LICENSE new file mode 100644 index 0000000000..4fa554b1c2 --- /dev/null +++ b/www/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Fred K. Schott + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/www/README.md b/www/README.md new file mode 100644 index 0000000000..975b5389d1 --- /dev/null +++ b/www/README.md @@ -0,0 +1,24 @@ +# New Project + +> ✨ Bootstrapped with Create Snowpack App (CSA). + +## Available Scripts + +### npm start + +Runs the app in the development mode. +Open http://localhost:8080 to view it in the browser. + +The page will reload if you make edits. +You will also see any lint errors in the console. + +### npm run build + +Builds a static copy of your site to the `build/` folder. +Your app is ready to be deployed! + +**For the best production performance:** Add a build bundler plugin like [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-webpack) or [snowpack-plugin-rollup-bundle](https://github.com/ParamagicDev/snowpack-plugin-rollup-bundle) to your `snowpack.config.json` config file. + +### Q: What about Eject? + +No eject needed! Snowpack guarantees zero lock-in, and CSA strives for the same. diff --git a/www/__test__/anchors.test.js b/www/__test__/anchors.test.js index 28b56c431d..e6b9714dde 100644 --- a/www/__test__/anchors.test.js +++ b/www/__test__/anchors.test.js @@ -13,7 +13,11 @@ describe('each anchor link should have a corresponding anchor', () => { $('a').each(function (i, link) { const href = $(link).attr('href'); // link must include # and must not be an external link - if (href.includes('#') && !href.includes('https://') && !href.includes('http://')) { + if ( + href.includes('#') && + !href.includes('https://') && + !href.includes('http://') + ) { // let's try to only get the #ID selector by removing anything else let anchor = escapeRegExp(href.slice(href.indexOf('#'))); diff --git a/www/_eleventy/layouts/base.njk b/www/_includes/layouts/base.njk similarity index 100% rename from www/_eleventy/layouts/base.njk rename to www/_includes/layouts/base.njk diff --git a/www/_eleventy/layouts/guide.njk b/www/_includes/layouts/guide.njk similarity index 78% rename from www/_eleventy/layouts/guide.njk rename to www/_includes/layouts/guide.njk index 31faf97904..2e0d6f3b46 100644 --- a/www/_eleventy/layouts/guide.njk +++ b/www/_includes/layouts/guide.njk @@ -1,12 +1,11 @@ --- layout: layouts/base.njk --- - -
+
@@ -17,14 +16,11 @@ layout: layouts/base.njk

Snowpack

- THE - PLUGIN GUIDE + {{ title }}

- +
{{ content | safe }}
-
\ No newline at end of file +
diff --git a/www/_eleventy/layouts/main.njk b/www/_includes/layouts/main.njk similarity index 100% rename from www/_eleventy/layouts/main.njk rename to www/_includes/layouts/main.njk diff --git a/www/_includes/layouts/original-base.njk b/www/_includes/layouts/original-base.njk new file mode 100644 index 0000000000..79abc6c089 --- /dev/null +++ b/www/_includes/layouts/original-base.njk @@ -0,0 +1,26 @@ + + + + + + + + + Snowpack App + + + + + {{ content | safe }} + + diff --git a/www/_eleventy/layouts/post.njk b/www/_includes/layouts/post.njk similarity index 100% rename from www/_eleventy/layouts/post.njk rename to www/_includes/layouts/post.njk diff --git a/www/_template/assets/favicon.png b/www/_template/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5789e0725e4cc4663bddaac47f1330dd9fa18c GIT binary patch literal 555 zcmV+`0@VG9P)Qr9zCnSUIc@JVQ0MmHuBnR?Av6KK9 z|G*)D9TBk|AYOpWbTHYnS^{@O#MSW14-lDK06WGEGRS1@4zSNxGCjjAnHB(v$Tg^) z25=sz)6r(50k{&{HHiQs4Zr|g76as>0SG`YX$|LffXe`}>!_U$;A&{?KIp6tV1UZq z2VxyS0L}x2C;@kYm%wE$V66k7UDE<=3*^+P=Q??M!4Z%HiASJYc;t5hK>Pt|#rzeo zwE)*V0x>`XY>&JSV9g^S&tTchSAPU}^%=k}08#*$9|4XtE9PIotVB+Widp8p1t32H z#I7H9G@lISlgXAS9W0Ko`aW=1t(R${7+_5cNa1}4t+Apostg002ovPDHLkV1lBv;B5c^ literal 0 HcmV?d00001 diff --git a/www/_template/assets/index.css b/www/_template/assets/index.css new file mode 100644 index 0000000000..49cf0821b9 --- /dev/null +++ b/www/_template/assets/index.css @@ -0,0 +1,26 @@ +body { + background: #222; + color: #eee; + font-family: Arial, Helvetica, sans-serif; + text-align: center; +} +a { + color: #aaa; +} +.banner { + display: flex; + justify-content: center; + align-items: center; +} +.banner img, +.banner svg { + display: block; + padding: 1.5rem; +} + +#canvas { + display: block; + margin: 0rem auto; + width: 720px; + height: 420px; +} diff --git a/www/_template/assets/logo.svg b/www/_template/assets/logo.svg new file mode 100644 index 0000000000..493a6d28e7 --- /dev/null +++ b/www/_template/assets/logo.svg @@ -0,0 +1 @@ + diff --git a/www/_template/assets/robots.txt b/www/_template/assets/robots.txt new file mode 100644 index 0000000000..e9e57dc4d4 --- /dev/null +++ b/www/_template/assets/robots.txt @@ -0,0 +1,3 @@ +# https://www.robotstxt.org/robotstxt.html +User-agent: * +Disallow: diff --git a/www/assets/snowpack-logo-black.png b/www/_template/assets/snowpack-logo-black.png similarity index 100% rename from www/assets/snowpack-logo-black.png rename to www/_template/assets/snowpack-logo-black.png diff --git a/www/assets/snowpack-logo-dark.png b/www/_template/assets/snowpack-logo-dark.png similarity index 100% rename from www/assets/snowpack-logo-dark.png rename to www/_template/assets/snowpack-logo-dark.png diff --git a/www/assets/snowpack-logo-white.png b/www/_template/assets/snowpack-logo-white.png similarity index 100% rename from www/assets/snowpack-logo-white.png rename to www/_template/assets/snowpack-logo-white.png diff --git a/www/assets/snowpack-wordmark-black.png b/www/_template/assets/snowpack-wordmark-black.png similarity index 100% rename from www/assets/snowpack-wordmark-black.png rename to www/_template/assets/snowpack-wordmark-black.png diff --git a/www/assets/snowpack-wordmark-white.png b/www/_template/assets/snowpack-wordmark-white.png similarity index 100% rename from www/assets/snowpack-wordmark-white.png rename to www/_template/assets/snowpack-wordmark-white.png diff --git a/www/favicon/android-chrome-192x192.png b/www/_template/favicon/android-chrome-192x192.png similarity index 100% rename from www/favicon/android-chrome-192x192.png rename to www/_template/favicon/android-chrome-192x192.png diff --git a/www/favicon/android-chrome-512x512.png b/www/_template/favicon/android-chrome-512x512.png similarity index 100% rename from www/favicon/android-chrome-512x512.png rename to www/_template/favicon/android-chrome-512x512.png diff --git a/www/favicon/apple-touch-icon.png b/www/_template/favicon/apple-touch-icon.png similarity index 100% rename from www/favicon/apple-touch-icon.png rename to www/_template/favicon/apple-touch-icon.png diff --git a/www/favicon/favicon-16x16.png b/www/_template/favicon/favicon-16x16.png similarity index 100% rename from www/favicon/favicon-16x16.png rename to www/_template/favicon/favicon-16x16.png diff --git a/www/favicon/favicon-32x32.png b/www/_template/favicon/favicon-32x32.png similarity index 100% rename from www/favicon/favicon-32x32.png rename to www/_template/favicon/favicon-32x32.png diff --git a/www/favicon/favicon.ico b/www/_template/favicon/favicon.ico similarity index 100% rename from www/favicon/favicon.ico rename to www/_template/favicon/favicon.ico diff --git a/www/favicon/site.webmanifest b/www/_template/favicon/site.webmanifest similarity index 100% rename from www/favicon/site.webmanifest rename to www/_template/favicon/site.webmanifest diff --git a/www/guides/plugins.md b/www/_template/guides/plugins.md similarity index 98% rename from www/guides/plugins.md rename to www/_template/guides/plugins.md index 35298279b8..6885e25e9e 100644 --- a/www/guides/plugins.md +++ b/www/_template/guides/plugins.md @@ -60,7 +60,9 @@ module.exports = function (snowpackConfig, pluginOptions) { ```json // snowpack.config.json { - "plugins": [["./my-snowpack-plugin.js", {"optionA": "foo", "optionB": "bar"}]] + "plugins": [ + ["./my-snowpack-plugin.js", { "optionA": "foo", "optionB": "bar" }] + ] } ``` @@ -106,7 +108,7 @@ For our first example, we’ll look at transforming a file. module.exports = function (snowpackConfig, pluginOptions) { return { name: 'my-commenter-plugin', - async transform({id, contents, isDev, fileExt}) { + async transform({ id, contents, isDev, fileExt }) { if (fileExt === '.js') { return `/* I’m a comment! */ ${contents}`; } @@ -136,7 +138,7 @@ module.exports = function (snowpackConfig, pluginOptions) { input: ['.js', '.jsx', '.ts', '.tsx', '.mjs'], output: ['.js'], }, - async load({filePath}) { + async load({ filePath }) { const result = await babel.transformFileAsync(filePath); return result.code; }, @@ -202,12 +204,15 @@ module.exports = function (snowpackConfig, pluginOptions) { input: ['.svelte'], output: ['.js', '.css'], }, - async load({filePath, isSSR}) { + async load({ filePath, isSSR }) { const svelteOptions = { /* ... */ }; const codeToCompile = fs.readFileSync(filePath, 'utf-8'); - const result = svelte.compile(codeToCompile, {...svelteOptions, ssr: isSSR}); + const result = svelte.compile(codeToCompile, { + ...svelteOptions, + ssr: isSSR, + }); // ... }, }; diff --git a/www/_template/guides/react.md b/www/_template/guides/react.md new file mode 100644 index 0000000000..4c4e5255ce --- /dev/null +++ b/www/_template/guides/react.md @@ -0,0 +1,343 @@ +--- +layout: layouts/guide.njk +permalink: '/guides/react/' +title: The Snowpack Guide to Getting Started with React +description: 'Get started with this in-depth tutorial on how to build React applications and websites with Snowpack and developer tools like React Fast Refresh' +date: 2020-10-01 +--- + +header image, showing the React and Snowpack logo against a background of blue mountains + +Snowpack is a great fit for [React](https://reactjs.org/) projects of any size. It's easy to get started and can scale to projects containing thousands of components and pages without any impact on development speed. Unlike traditional React application tooling, Snowpack saves you from getting bogged down with complex bundler setups and configuration files. + +In this guide, you'll go from an empty directory to a fully configured Snowpack project with support for React and several other useful developer tools. In the process, you'll learn: + +- How to set up your Snowpack development environment +- Adding your first React component +- Working with CSS, images and other web assets +- Enabling [Fast Refresh](https://reactnative.dev/docs/fast-refresh) mode for React +- Connecting your favorite tools + +Prerequisites: Snowpack is a command line tool installed from npm. This guide assumes a basic understanding of Node.js, npm, and how to run commands in the terminal. Knowledge of React is not required, Snowpack is a great way to learn React! + +> 💡 Tip: if you want to jump to the end to see a full featured React setup, the [Create Snowpack App React template](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react) comes with everything you'll learn in this guide plus other useful tools. + +## Getting started + +The easiest way to start a new Snowpack project is with [Create Snowpack App](), a tool to set up Snowpack in a new directory `@snowpack/project-template-minimal` is a Create Snowpack App template for a simple, bare-bones Snowpack project setup that the rest of this guide builds on. + +To get started, open your terminal and head to a directory where you want to put your new project. Now run the following command in your terminal to create a new directory called `react-snowpack` with the minimal template automatically installed. + +```bash +npx create-snowpack-app react-snowpack --template @snowpack/app-template-minimal +``` + +You can now head to the new directory and start Snowpack with the following two commands: + +```bash +cd react-snowpack +npm run start +``` + +You should see your new website up and running! + +> 💡 Tip: the `README.md` in your new project contains useful information about what each file does. + +
screenshot of project-template-minimal, which shows 'Hello world' in text on a white background.
+ +Now that you have a basic project up and running, to install React, run the following command in your project directory: + +```bash +npm install react react-dom --save +``` + +> 💡 Tip: add the "--use-yarn" or "--use-pnpm" flag to use something other than npm + +## Create your first React component + +React relies on a special templating language called JSX. If you're familiar with React then you already know JSX: it's React's templating language that allows you to write something like `` or `
` directly in your JavaScript code. + +Snowpack has built in support for JSX in files using the `.jsx` extension. That means that there's no plugins or configuration needed to write your first React component. Rename `index.js` file to `index.jsx` so that Snowpack knows to handle JSX in the file: + +```bash +mv index.js index.jsx +``` + +> 💡 Tip: you do not need to update your `index.html` script tag reference to point to `index.jsx`. Browsers don't speak JSX (or TypeScript, for that matter), so any compile-to-JS file formats compile to `.js` in the final browser build. This is good to keep in mind when you're referencing built files in HTML ` + +``` + +
screenshot of the project, which shows 'HELLO REACT' on a white background
+ +You've just created your first React component in Snowpack! + +## Customize your project layout + +Since you'll be adding a bunch of new files, you probably don't want them crowding up your top-level root directly. Snowpack is flexible enough to support whatever project layout that you prefer. In this guide, you'll learn how to use a popular project pattern from the React community. + +``` +📁 src : your React components and their assets (CSS, images) + ↳ index.jsx +📁 public : global assets like images, fonts, icons, and global CSS + ↳ index.css + ↳ index.html +``` + +Use your favorite visual editor to rearrange and rename, or run these commands in the terminal: + +```bash +mkdir src +mkdir public +mv index.jsx src/index.jsx +mv index.html public/index.html +mv index.css public/index.css +``` + +This means if you are running Snowpack right now, the site is now broken as the files are all in different places. Lets add a "mount" configuration to update your site to your new project layout. + +The `mount` configuration changes where Snowpack looks for and builds files. Every Snowpack project comes with a `snowpack.config.js` file for any configuration that you might need. Right now, you should see a configuration file with empty options. Add this to the empty `mount` object: + +```diff + mount: { +- /* ... */ ++ // directory name: 'build directory' ++ public: '/', ++ src: '/_dist_', + }, +``` + +The original file configuration had Snowpack building the directory structure the same as the directories in the project, including root. Now the config builds only src and public. Src to the dist folder and public to root. + +`mount` is part of the [Snowpack Configuration API](https://www.snowpack.dev/#configuration). It allows you to customize the file structure of your project. The key is the name of the directory and the value is where you'd like them in the final build. With this new configuration, Snowpack builds files in `public` like `public/index.css` directory into `index.css`. It builds files in `src` like `src/index.js` into `/_dist_/index.js`, so you'll need to change that path in your `index.html`: + +```diff + +

Welcome to Snowpack!

+
+- ++ + +``` + +You'll need to restart Snowpack for configuration file changes. When you start up again, if it worked, it should look the same. + +Create a new file at `src/App.jsx` and paste the following code into this new file to create an `App` component: + +```jsx +import React, { useState, useEffect } from 'react'; + +function App() { + // Create the count state. + const [count, setCount] = useState(0); + // Create the counter (+1 every second). + useEffect(() => { + const timer = setTimeout(() => setCount(count + 1), 1000); + return () => clearTimeout(timer); + }, [count, setCount]); + // Return the App component. + return ( +
+
+

+ Page has been open for {count} seconds. +

+
+
+ ); +} + +export default App; +``` + +Now include it in `index.jsx` + +```diff + import React from 'react'; + import ReactDOM from 'react-dom'; +- ReactDOM.render(
"HELLO WORLD"
, document.getElementById('root')); ++ import App from './App.jsx'; ++ ReactDOM.render( ++ ++ ++ , ++ document.getElementById('root'), ++ ); +``` + +> 💡 Tip: [Strict Mode](https://reactjs.org/docs/strict-mode.html) is a tool for highlighting potential problems in React code. + +You shouldn't need to restart Snowpack to see this, it should look like this: + +
screenshot of the project with text that says 'Page has been open for' and the number of seconds then 'seconds'
+ +## Styling your project + +When you add assets like images or CSS, Snowpack includes them in your final build. If you already know React, this process should look pretty familiar. + +> 💡 Tip: as you're doing this, you should not need to reload the page or restart Snowpack. Snowpack automatically updates the project in the browser as you edit code. + +Add this file [`logo.svg`](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-react/src/logo.svg) to your `src` directory. Now you can import it into your `App.jsx` and use it in an `img` tag to display it. + +```diff + import React, { useState, useEffect } from 'react'; ++ import logo from './logo.svg'; + + function App() { + // Create the count state. + const [count, setCount] = useState(0); + // Create the counter (+1 every second). + useEffect(() => { + const timer = setTimeout(() => setCount(count + 1), 1000); + return () => clearTimeout(timer); + }, [count, setCount]); + // Return the App component. + return ( +
+
++ logo +

+``` + +

the React logo (a blue atom) is now at the top of the page
+ +The project already has index.css for global styles. For CSS that's only for a specific component, a common design pattern is to add it in a CSS file with the same base name as the component. The style file for `App.jsx` would be `App.css` with this pattern. + +> 💡 Tip: Snowpack has built-in support for [CSS Modules](https://www.snowpack.dev/#import-css-modules) and if you'd like to use Sass there is an official [Sass Plugin](https://www.snowpack.dev/#sass). + +Create `src/App.css` and add this CSS: + +```css +.App { + text-align: center; +} + +.App p { + margin: 0.4rem; +} + +.App-logo { + height: 40vmin; +} + +@media (prefers-reduced-motion: no-preference) { + .App-logo { + animation: App-logo-spin infinite 20s linear; + } +} + +.App-header { + background-color: #282c34; + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + font-size: calc(10px + 2vmin); + color: white; +} + +@keyframes App-logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} +``` + +To use this CSS, head to `App.jsx` and import it + +```diff + import logo from './logo.svg'; ++ import './App.css'; +``` + +
The page now has centered items, a grey background, styled fonts, and the React logo has an animation that rotates it.
+ +## Making Snowpack Even Faster with Fast Refresh + +[React Fast Refresh](https://reactnative.dev/docs/fast-refresh)? What's that? It's a Snowpack enhancement that lets you push individual file changes to update the browser without refreshing the page or clearing component state. + +React projects are often interactive and include state. For example, this project you're building has a state that is the amount of time on the page. When developing with state it's useful not to lose it while you edit code. React Fast Refresh shows you updates without refreshing the entire page. Showing you how to add this is also a good intro to Snowpack plugins. Snowpack starts with a minimal setup with the perspective that you can add what you need through the plugin system. + +Start by enabling [Hot Module Replacement](https://www.snowpack.dev/#hot-module-replacement) in your project. HMR is the system that lets Snowpack push updates to the browser without a full page refresh, a requirement for Fast Refresh. You can enable HMR for React by adding a small snippet of code to your `src/index.jsx` file. + +```diff + ReactDOM.render( + + + , + document.getElementById('root'), + ); ++ // Hot Module Replacement (HMR) - Remove this snippet to remove HMR. ++ // Learn more: https://www.snowpack.dev/#hot-module-replacement ++ if (import.meta.hot) { ++ import.meta.hot.accept(); ++ } +``` + +Now when you change `App.jsx` the page updates to show your changes without a full refresh. + +
GIF showing code side by side with the app. A change in made to App.jsx and it shows immediately when the file is changed. The counter keeps counting uninterrupted.
+ +HMR can save you time on its own, but you may notice in the example above that the counter on the page still resets to 0. This can slow down your development, especially when you're trying to debug a specific component state problem. Lets enable Fast Refresh to preserve component state across updates. + +To enable Fast Refresh, you'll need to install the `@snowpack/plugin-react-refresh` package. This package is a Snowpack plugin, which you can use to enhance or customize Snowpack with all sorts of new behaviors. To start, install the package in your project: + +```bash +npm install @snowpack/plugin-react-refresh --save-dev +``` + +Once installed, you'll need to add the plugin to your Snowpack configuration file so that Snowpack knows to use it: + +```diff + module.exports = { + mount: { + public: '/', + src: '/_dist_', + }, +- plugins: [] ++ plugins: ['@snowpack/plugin-react-refresh'], + }; +``` + +Restart Snowpack to apply the new plugin, and then try changing the `App.jsx` component again. If Fast Refresh is working properly, the counter keep its value across changes, without resetting to zero. + +
GIF showing code side by side with the app. A change in made to App.jsx and it shows immediately when the file is changed. The counter keeps counting uninterrupted.
+ +## Going further + +Great job! You're now ready to build the React project of your dreams with Snowpack. Want to tweet your accomplishment to the world? Click the button below: + + + +At this point you have the basics and have a great starter for any React project. But if you compare with the official [Snowpack React template](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react) you'll notice it has some other developer tools you might find useful: + +- [Prettier](https://prettier.io/)—a popular code formatter + +- [Tests](https://www.snowpack.dev/#testing)—Snowpack supports any popular JavaScript testing framework + +- [`@snowpack/plugin-dotenv`](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv)—Use `dotenv` in your Snowpack. This is useful for environment specific variables + +If you'd like to use Typescript with Snowpack and React, check out the [Snowpack React Typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react-typescript) starter. + +If you have any questions, comments, or corrections, we'd love to hear from you in the Snowpack [discussion](https://github.com/snowpackjs/snowpack/discussions) forum or our [Snowpack Discord community](https://discord.gg/rS8SnRk). diff --git a/www/img/JSAwardWinner.jpg b/www/_template/img/JSAwardWinner.jpg similarity index 100% rename from www/img/JSAwardWinner.jpg rename to www/_template/img/JSAwardWinner.jpg diff --git a/www/img/JSAwardWinner.png b/www/_template/img/JSAwardWinner.png similarity index 100% rename from www/img/JSAwardWinner.png rename to www/_template/img/JSAwardWinner.png diff --git a/www/img/banner-2.jpg b/www/_template/img/banner-2.jpg similarity index 100% rename from www/img/banner-2.jpg rename to www/_template/img/banner-2.jpg diff --git a/www/img/browser-logos-all.png b/www/_template/img/browser-logos-all.png similarity index 100% rename from www/img/browser-logos-all.png rename to www/_template/img/browser-logos-all.png diff --git a/www/img/extra-space-3.jpg b/www/_template/img/extra-space-3.jpg similarity index 100% rename from www/img/extra-space-3.jpg rename to www/_template/img/extra-space-3.jpg diff --git a/www/img/extra-space-4.jpg b/www/_template/img/extra-space-4.jpg similarity index 100% rename from www/img/extra-space-4.jpg rename to www/_template/img/extra-space-4.jpg diff --git a/www/img/extra-space-4.mp4 b/www/_template/img/extra-space-4.mp4 similarity index 100% rename from www/img/extra-space-4.mp4 rename to www/_template/img/extra-space-4.mp4 diff --git a/www/img/how-does-it-work.jpg b/www/_template/img/how-does-it-work.jpg similarity index 100% rename from www/img/how-does-it-work.jpg rename to www/_template/img/how-does-it-work.jpg diff --git a/www/img/logo.png b/www/_template/img/logo.png similarity index 100% rename from www/img/logo.png rename to www/_template/img/logo.png diff --git a/www/img/nomodule.png b/www/_template/img/nomodule.png similarity index 100% rename from www/img/nomodule.png rename to www/_template/img/nomodule.png diff --git a/www/img/react-snarky-tweet-2.png b/www/_template/img/react-snarky-tweet-2.png similarity index 100% rename from www/img/react-snarky-tweet-2.png rename to www/_template/img/react-snarky-tweet-2.png diff --git a/www/img/react-snarky-tweet.png b/www/_template/img/react-snarky-tweet.png similarity index 100% rename from www/img/react-snarky-tweet.png rename to www/_template/img/react-snarky-tweet.png diff --git a/www/img/snowpack-27-screenshot-1.png b/www/_template/img/snowpack-27-screenshot-1.png similarity index 100% rename from www/img/snowpack-27-screenshot-1.png rename to www/_template/img/snowpack-27-screenshot-1.png diff --git a/www/img/snowpack-27-screenshot-2.png b/www/_template/img/snowpack-27-screenshot-2.png similarity index 100% rename from www/img/snowpack-27-screenshot-2.png rename to www/_template/img/snowpack-27-screenshot-2.png diff --git a/www/img/snowpack-27-screenshot-3.png b/www/_template/img/snowpack-27-screenshot-3.png similarity index 100% rename from www/img/snowpack-27-screenshot-3.png rename to www/_template/img/snowpack-27-screenshot-3.png diff --git a/www/img/snowpack-build-example.png b/www/_template/img/snowpack-build-example.png similarity index 100% rename from www/img/snowpack-build-example.png rename to www/_template/img/snowpack-build-example.png diff --git a/www/img/snowpack-build-mov.mov b/www/_template/img/snowpack-build-mov.mov similarity index 100% rename from www/img/snowpack-build-mov.mov rename to www/_template/img/snowpack-build-mov.mov diff --git a/www/img/snowpack-dev-example.png b/www/_template/img/snowpack-dev-example.png similarity index 100% rename from www/img/snowpack-dev-example.png rename to www/_template/img/snowpack-dev-example.png diff --git a/www/img/snowpack-dev-startup-2.png b/www/_template/img/snowpack-dev-startup-2.png similarity index 100% rename from www/img/snowpack-dev-startup-2.png rename to www/_template/img/snowpack-dev-startup-2.png diff --git a/www/img/snowpack-dev-startup.png b/www/_template/img/snowpack-dev-startup.png similarity index 100% rename from www/img/snowpack-dev-startup.png rename to www/_template/img/snowpack-dev-startup.png diff --git a/www/img/snowpack-unbundled-example-2.png b/www/_template/img/snowpack-unbundled-example-2.png similarity index 100% rename from www/img/snowpack-unbundled-example-2.png rename to www/_template/img/snowpack-unbundled-example-2.png diff --git a/www/img/snowpack-unbundled-example-3.png b/www/_template/img/snowpack-unbundled-example-3.png similarity index 100% rename from www/img/snowpack-unbundled-example-3.png rename to www/_template/img/snowpack-unbundled-example-3.png diff --git a/www/img/snowpack-unbundled-example.png b/www/_template/img/snowpack-unbundled-example.png similarity index 100% rename from www/img/snowpack-unbundled-example.png rename to www/_template/img/snowpack-unbundled-example.png diff --git a/www/img/social-2.jpg b/www/_template/img/social-2.jpg similarity index 100% rename from www/img/social-2.jpg rename to www/_template/img/social-2.jpg diff --git a/www/img/social-2.png b/www/_template/img/social-2.png similarity index 100% rename from www/img/social-2.png rename to www/_template/img/social-2.png diff --git a/www/img/social-3.jpg b/www/_template/img/social-3.jpg similarity index 100% rename from www/img/social-3.jpg rename to www/_template/img/social-3.jpg diff --git a/www/img/social-4.jpg b/www/_template/img/social-4.jpg similarity index 100% rename from www/img/social-4.jpg rename to www/_template/img/social-4.jpg diff --git a/www/img/social-4.png b/www/_template/img/social-4.png similarity index 100% rename from www/img/social-4.png rename to www/_template/img/social-4.png diff --git a/www/img/social.jpg b/www/_template/img/social.jpg similarity index 100% rename from www/img/social.jpg rename to www/_template/img/social.jpg diff --git a/www/img/stat.jpg b/www/_template/img/stat.jpg similarity index 100% rename from www/img/stat.jpg rename to www/_template/img/stat.jpg diff --git a/www/img/svelte-ts.png b/www/_template/img/svelte-ts.png similarity index 100% rename from www/img/svelte-ts.png rename to www/_template/img/svelte-ts.png diff --git a/www/img/treeshaking.jpg b/www/_template/img/treeshaking.jpg similarity index 100% rename from www/img/treeshaking.jpg rename to www/_template/img/treeshaking.jpg diff --git a/www/_template/index.md b/www/_template/index.md new file mode 100644 index 0000000000..d90f98611d --- /dev/null +++ b/www/_template/index.md @@ -0,0 +1,1408 @@ +--- +layout: layouts/main.njk + +# Using Snowpack? Want to be featured on snowpack.dev? +# Add your project, organization, or company to the end of this list! +usersList: + - ia: + name: The Internet Archive + img: https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Internet_Archive_logo_and_wordmark.svg/1200px-Internet_Archive_logo_and_wordmark.svg.png + url: https://github.com/internetarchive/dweb-archive + - 1688: + name: Alibaba 1688 + img: https://s.cafebazaar.ir/1/icons/com.alibaba.intl.android.apps.poseidon_512x512.png + url: https://www.1688.com + - intel: + name: Intel + img: https://upload.wikimedia.org/wikipedia/commons/4/4e/Intel_logo_%282006%29.svg + url: https://twitter.com/kennethrohde/status/1227273971831332865 + - circlehd.com: + name: CircleHD + img: https://www.circlehd.com/img/logo-sm.svg + url: https://www.circlehd.com/ + - Svelvet: + name: Svelvet + img: https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/240/apple/237/spool-of-thread_1f9f5.png + url: https://github.com/jakedeichert/svelvet + - pika: + name: Pika.dev + img: https://www.pika.dev/static/img/logo5.svg + url: https://www.pika.dev + - Toast: + name: Toast + img: https://www.toast.dev/toast-icon-300.png + url: https://www.toast.dev + - maskable: + name: Maskable.app + img: https://maskable.app/favicon/favicon_196.png + url: https://maskable.app/ + - web-skills: + name: Web Skills + img: https://andreasbm.github.io/web-skills/www/icon.svg + url: https://andreasbm.github.io/web-skills + - swissdev-javascript: + name: SwissDev JavaScript Jobs + img: https://static.swissdevjobs.ch/pictures/swissdev-javascript-jobs.svg + url: https://swissdevjobs.ch/jobs/JavaScript/All + - tradie-training: + name: Tradie Training + img: https://tt.edu.au/images/logo.png + url: https://tt.edu.au + - wemake-services: + name: wemake.services + img: https://avatars0.githubusercontent.com/u/19639014?s=200&v=4 + url: https://github.com/wemake-services + - airhacks.com: + name: airhacks.com + img: https://airhacks.com/logo.svg + url: https://airhacks.com + - tongdun: + name: tongdun + img: https://www.tongdun.cn/static/favicon.ico + url: https://www.tongdun.cn/ + - blessing-skin: + name: Blessing Skin + img: https://blessing.netlify.app/logo.png + url: https://github.com/bs-community +--- +## Overview + +### What is Snowpack? + +Snowpack is a modern frontend build tool for faster web development. It replaces heavier, more complex bundlers like webpack or Parcel in your development workflow. + +Snowpack leverages JavaScript's native module system (known as ESM) to create a first-of-its-kind build system that never builds the same file twice. Snowpack pushes changes instantly to the browser, saving you hours of development time traditionally spent waiting around for your bundler. + +### Key Features + +- Develop faster, with a dev server that starts up in **50ms or less.** +- See changes reflected [instantly in the browser.](/#hot-module-replacement) +- Integrate your favorite bundler for a [production-optimized build.](/#bundle-for-production) +- Enjoy out-of-the-box support for [TypeScript, JSX, CSS Modules and more.](/#features) +- Connect your favorite tools with [third-party plugins.](/#plugins) + +### Who's Using Snowpack? + + + +### How Snowpack Works + +**Snowpack is a modern, lightweight build tool for faster web development.** Traditional JavaScript build tools like webpack and Parcel need to rebuild & rebundle entire chunks of your application every time you save a single file. This rebundling step introduces lag between hitting save on your changes and seeing them reflected in the browser. + +Snowpack serves your application **unbundled during development.** Every file only needs to be built once and then is cached forever. When a file changes, Snowpack rebuilds that single file. There's no time wasted re-bundling every change, just instant updates in the browser (made even faster via [Hot-Module Replacement (HMR)](#hot-module-replacement)). You can read more about this approach in our [Snowpack 2.0 Release Post.](/posts/2020-05-26-snowpack-2-0-release/) + +Snowpack's **unbundled development** still supports the same **bundled builds** that you're used to for production. When you go to build your application for production, you can plug in your favorite bundler via an official Snowpack plugin for Webpack or Rollup (coming soon). With Snowpack already handling your build, there's no complex bundler config required. + +**Snowpack gets you the best of both worlds:** fast, unbundled development with optimized performance in your bundled production builds. + +### Library Support + +
+ +- React +- Preact +- Svelte +- Vue +- lit-html +- lit-element +- Styled Components +- Tailwind CSS +- [and more!](/#recipes) + + +
+ +### Tooling Support + +
+ +- Babel +- TypeScript +- PostCSS +- Sass +- esbuild +- 11ty +- [and more!](/#recipes) + + +
+ +### Browser Support + +**Snowpack builds your site for both modern and legacy browsers. Even IE11 is supported.** You can control and customize this behavior with the ["browserlist" package.json property](https://css-tricks.com/browserlist-good-idea/). + +The only requirement is that _during development_ you use a [modern browser](http://caniuse.com/#feat=es6-module). Any recent release of Firefox, Chrome, or Edge will do. This is required to support the modern, bundle-free ESM imports that load your application in the browser. + +### Community + +Join us on Discord! + +[Join the Pika Discord](https://discord.gg/rS8SnRk) for discussion, questions about Snowpack or related Pika projects, or to show off what you’re working on! +## Get Started + +### Install Snowpack + +```bash +# using npm +npm install --save-dev snowpack + +# using yarn +yarn add --dev snowpack +``` + +Snowpack can also be installed globally via `npm install -g snowpack`. But, we recommend installing locally in every project via `--save-dev`/`--dev`. You can run the Snowpack CLI locally via package.json "scripts", npm's `npx snowpack`, or via `yarn snowpack`. + +### Quick Start + +Here's a short list of what you can do with Snowpack: + +```bash +# Start your dev server, load your site locally +snowpack dev + +# Build your site for production +snowpack build + +# Build your site, but watch the file system and rebuild when files change. +# Great for local development with your own dev server (ex: Rails) +snowpack build --watch + +# See more helpful info +snowpack --help +``` + +### Create Snowpack App (CSA) + +The easiest way to get started with Snowpack is via [Create Snowpack App (CSA)](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app). CSA automatically initializes a starter application for you with a pre-configured, Snowpack-powered dev environment. + +If you've ever used Create React App, this is a lot like that! + +```bash +npx create-snowpack-app new-dir --template [SELECT FROM BELOW] [--use-yarn] +``` + +### Official App Templates + +- [@snowpack/app-template-blank](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank) +- [@snowpack/app-template-blank-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank-typescript) +- [@snowpack/app-template-minimal](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-minimal) +- [@snowpack/app-template-react](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react) +- [@snowpack/app-template-react-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react-typescript) +- [@snowpack/app-template-preact](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-preact) +- [@snowpack/app-template-svelte](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-svelte) +- [@snowpack/app-template-vue](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-vue) +- [@snowpack/app-template-lit-element](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element) +- [@snowpack/app-template-lit-element-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element-typescript) +- [@snowpack/app-template-11ty](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-11ty) + +- **[See all community templates](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli#featured-community-templates)** + + + +### Migrating an Existing App + +Migrating an existing app to Snowpack is meant to be painless, since Snowpack supports most features and build tools that you're already using today (Babel, PostCSS, etc). If this is your first time using Snowpack you should start with a Create Snowpack App (CSA) template, copy over your "src" & "public" files from your old app, and then run `snowpack dev`, troubleshooting any remaining issues. + +CSA is a good starting point for an existing application because it has a few common tools (like Babel) built in by default to replicate the full feature set of a traditional bundled app. CSA is also meant to be a drop-in replacement for Create React App, so any existing Create React App project should run via CSA with zero changes needed. + +If you run into issues, search the rest of our docs site for information about importing CSS [from JS](#javascript) and [from CSS](#import-css), [asset references](#import-images-%26-other-assets), and more. +## Main Concepts + +### Unbundled Development + +![webpack vs. snowpack diagram](/img/snowpack-unbundled-example-3.png) + +**Unbundled development** is the idea of shipping individual files to the browser during development. Files can still be built with your favorite tools (like Babel, TypeScript, Sass) and then loaded individually in the browser with dependencies thanks to ESM `import` and `export` syntax. Any time you change a file, Snowpack only ever needs to rebuild that single file. + +The alternative is **bundled development.** Almost every popular JavaScript build tool today focuses on bundled development. Running your entire application through a bundler introduces additional work and complexity to your dev workflow that is unnecessary now that ESM is widely supported. Every change -- on every save -- must be rebundled with the rest of your application before your changes can be reflected in your browser. + +Unbundled development has several advantages over the traditional bundled development approach: + +- Single-file builds are fast. +- Single-file builds are deterministic. +- Single-file builds are easier to debug. +- Project size doesn’t affect dev speed. +- Individual files cache better. + +That last point is key: **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. + +### Using NPM Dependencies + +NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. + +**Snowpack takes a different approach:** Instead of bundling your entire application for this one requirement, Snowpack processes your dependencies separately. Here's how it works: + +``` +node_modules/react/**/* -> http://localhost:3000/web_modules/react.js +node_modules/react-dom/**/* -> http://localhost:3000/web_modules/react-dom.js +``` + +1. Snowpack scans your website/application for all used npm packages. +2. Snowpack reads these installed dependencies from your `node_modules` directory. +3. Snowpack bundles all of your dependencies separately into single JavaScript files. For example: `react` and `react-dom` are converted to `react.js` and `react-dom.js`, respectively. +4. Each resulting file can be run directly in the browser, and imported via ESM `import` statements. +5. Because your dependencies rarely change, Snowpack rarely needs to rebuild them. + +After Snowpack builds your dependencies, any package can be imported and run directly in the browser with zero additional bundling or tooling required. This ability to import npm packages natively in the browser (without a bundler) is the foundation that all unbundled development and the rest of Snowpack is built on top of. + +```html + + + + +``` + +### Snowpack's Dev Server + +![dev command output example](/img/snowpack-dev-startup-2.png) + +`snowpack dev` - Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. + +Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](#plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! + +### Snowpack's Build Pipeline + +![build output example](/img/snowpack-build-example.png) + +`snowpack build` - When you're ready to deploy your application, run the build command to generate a static production build of your site. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. + +### Bundle for Production + +**You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. + +By default, `snowpack build` will build your site using the same unbundled approach as the `dev` command. This is fine for most projects, but you also may still want to bundle for production. Legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations can all be handled in Snowpack via bundling. + +Bundlers normally require dozens or even hundreds of lines of configuration, but with Snowpack it's just a one-line plugin with no config required. This is possible because Snowpack builds your application _before_ sending it to the bundler, so the bundler never sees your custom source code (JSX, TS, Svelte, Vue, etc.) and instead only needs to worry about building common HTML, CSS, and JS. + +```js +// Bundlers plugins are pre-configured to work with Snowpack apps. +// No config required! +{ + "plugins": [["@snowpack/plugin-webpack"]] +} +``` + +See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. +## JavaScript + +### ES Modules (ESM) + +Snowpack was designed to support JavaScript's native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! + +```js +// ESM Example - src/user.js +export function getUser() { + /* ... */ +} + +// src/index.js +import {getUser} from './user.js'; +``` + +All modern browsers support ESM, so Snowpack is able to ship this code directly to the browser during development. This is what makes Snowpack's **unbundled development** workflow possible. + +Snowpack also lets you import non-JavaScript files directly in your application. Snowpack handles all this for you automatically so there's nothing to configure, using the following logic: + +### Import NPM Packages + +```js +// Returns the React & React-DOM npm packages +import React from 'react'; +import ReactDOM from 'react-dom'; +``` + +Snowpack lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. + +When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. + +### Import JSON + +```js +// Returns the JSON object via the default import +import json from './data.json'; +``` + +Snowpack supports importing JSON files, which return the full JSON object in the default import. + +### Import CSS + +```js +// Loads './style.css' onto the page +import './style.css'; +``` + +Snowpack supports basic CSS imports inside of your JavaScript files. When you import a CSS file via the `import` keyword, Snowpack will automatically apply those styles to the page. This works for CSS and compile-to-CSS languages like Sass & Less. + +If you prefer, Snowpack also supports any popular CSS-in-JS library for styling. + +### Import CSS Modules + +```css +/* src/style.module.css */ +.error { + background-color: red; +} +``` + +```js +// 1. Converts './style.module.css' classnames to unique, scoped values. +// 2. Returns an object mapping the original classnames to their final, scoped value. +import styles from './style.module.css'; + +// This example uses JSX, but you can use CSS Modules with any framework. +return
Your Error Message
; +``` + +Snowpack supports CSS Modules using the `[name].module.css` naming convention. CSS Modules work just like normal CSS imports, but with a special default `styles` export that maps your original classnames to unique identifiers. + +### Import Images & Other Assets + +```jsx +import img from './image.png'; // img === '/src/image.png' +import svg from './image.svg'; // svg === '/src/image.svg' + +// This example uses JSX, but you can use these references with any framework. +; +``` + +All other assets not explicitly mentioned above can be imported via ESM `import` and will return a URL reference to the final built asset. This can be useful for referencing non-JS assets by URL, like creating an image element with a `src` attribute pointing to that image. + +#### Coming Soon: Native Reference URLs + +Webpack 5.0 released support for native reference URLs to replace the original, fake ESM file import. If you are using a bundler that supports this (or, not using a bundler at all) we recommend updating your non-JS URL reference imports to use this more standard pattern. Once Rollup adds support as well, we will move to promote this to our recommended style. + +```jsx +const img = new URL('./image.png', import.meta.url); // img === '/src/image.png' +const svg = new URL('./image.svg', import.meta.url); // svg === '/src/image.svg' + +// This example uses JSX, but you can use these references with any framework. +; +``` + +## Features + +Snowpack ships with built-in support for the following file types, no configuration required: + +- JavaScript (`.js`, `.mjs`) +- TypeScript (`.ts`, `.tsx`) +- JSX (`.jsx`, `.tsx`) +- CSS (`.css`) +- CSS Modules (`.module.css`) +- Images (`.svg`, `.jpg`, `.png`, etc.) + +To customize build behavior and support new languages (`.scss`, `.svelte`, `.vue`), keep reading. + +### Import Aliases + +```js +// Instead of this: +import Button from `../../../../components/Button`; + +// You can do this: +import Button from `@app/components/Button`; +``` + +Snowpack supports setting custom import aliases for your project via the top-level `alias` property. This can be used to define an alias for either a local source directory (like aliasing `@app` to `./src`) or a package (like aliasing `react` to `preact/compat`). See the full documentation for `alias` below. + +**TypeScript Users:** You'll need to configure your `tsconfig.json` `paths` to get proper types from top-level imports. Learn more about ["path mappings"](https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping). + +```js +// tsconfig.json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + // Define either ONE of these... + // 1. General support: matches everything relative to the project directory + "*": ["*"], + // 2. Explicit support: match only your mounted directories (Recommended!) + "src/*": ["src/*"], + "public/*": ["public/*"], + } + } +} +``` + +### Environment Variables + +```js +// `import.meta.env` - Read process.env variables in your web app +fetch(`${import.meta.env.SNOWPACK_PUBLIC_API_URL}/users`).then(...) + +// Supports destructuring as well: +const {SNOWPACK_PUBLIC_API_URL} = import.meta.env; +fetch(`${SNOWPACK_PUBLIC_API_URL}/users`).then(...) + +// Instead of `import.meta.env.NODE_ENV` use `import.meta.env.MODE` +if (import.meta.env.MODE === 'development') { + // ... +``` + +You can read environment variables directly in your web application via `import.meta.env`. If you've ever used `process.env` in Create React App or any Webpack application, this behaves exactly the same. + +For your safety, Snowpack only supports environment variables that begin with `SNOWPACK_PUBLIC_*`. We do this because everything in your web application is sent to the browser, and we don't want you to accidentally share sensitive keys/env variables with your public web application. Prefixing your frontend web env variables with `SNOWPACK_PUBLIC_` is a good reminder that they will be shared with the world. + +`import.meta.env.MODE` and `import.meta.env.NODE_ENV` are also both set to the current `process.env.NODE_ENV` value, so that you can change app behavior based on dev vs. build. The env value is set to `development` during `snowpack dev` and `production` during `snowpack build`. Use this in your application instead of `process.env.NODE_ENV`. + +You can use environment variables in HTML files. All occurrences of `%SNOWPACK_PUBLIC_*%`, `%PUBLIC_URL%`, and `%MODE%` will be replaced at build time. + +**Remember:** that these env variables are statically injected into your application for everyone at **build time**, and not runtime. + +#### `.env` File Support + +```js +// snowpack.config.json +{ + "plugins": ["@snowpack/plugin-dotenv"] +} +``` + +Add the `@snowpack/plugin-dotenv` plugin to your dev environment to automatically load environment variables from your project `.env` files. Visit the [plugin README](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) to learn more. + +### Hot Module Replacement + +Hot Module Replacement (HMR) is the ability to update your web app during development without refreshing the page. Imagine changing some CSS, hitting save, and then instantly seeing your change reflected on the page without a refresh. That's HMR. + +Snowpack supports full HMR out-of-the-box for the following served files: + +- CSS +- CSS Modules +- JSON + +Popular frameworks can also be set up for HMR. **[Create Snowpack App (CSA)](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app) ships with HMR enabled by default for all of the following frameworks.** If you're not using CSA, you can setup HMR in your application with a simple plugin or a few lines of code: + +- Preact: [@prefresh/snowpack](https://www.npmjs.com/package/@prefresh/snowpack) +- React: [@snowpack/plugin-react-refresh](https://www.npmjs.com/package/@snowpack/plugin-react-refresh) +- Svelte: [A few lines of code](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-svelte/src/index.js#L9-L16) +- Vue: [A few lines of code](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-vue/src/index.js#L7-L14) + +For more advanced, bare-metal HMR integrations, Snowpack created [ESM-HMR](https://github.com/snowpackjs/esm-hot-module-replacement-spec), a standard HMR API for any ESM-based dev environment. Any HMR integration built for ESM-HMR will run on Snowpack and any other ESM-HMR-enabled dev server. To use the HMR API directly (via `import.meta.hot`) check out [the ESM-HMR spec](https://github.com/snowpackjs/esm-hot-module-replacement-spec) to learn more. + +```js +if (import.meta.hot) { + import.meta.hot.accept(({module}) => { + // Accept the module, apply it to your application. + }); + import.meta.hot.dispose(() => { + // Cleanup any side-effects. Optional. + }); +} +``` + +- 👉 **[Check out the full ESM-HMR spec.](https://github.com/snowpackjs/esm-hot-module-replacement-spec)** + +### Dev Request Proxy + +```js +// snowpack.config.json +// Example: Proxy "/api/pokemon/ditto" -> "https://pokeapi.co/api/v2/pokemon/ditto" +{ + "proxy": { + "/api": "https://pokeapi.co/api/v2", + } +} +``` + +Snowpack can proxy requests from the dev server to external URLs and APIs. Making API requests directly the dev server can help you mimic your production environment during development. + +See the [config.proxy API](#config.proxy) section for more information and full set of configuration options. + +### HTTPS/HTTP2 + +``` +npm start -- --secure +``` + +Snowpack provides an easy way to use a local HTTPS server during development through the use of the `--secure` flag. When enabled, Snowpack will look for a `snowpack.key` and `snowpack.crt` file in the root directory and use that to create an HTTPS server with HTTP2 support enabled. + +#### Generating SSL Certificates + +You can automatically generate credentials for your project via either: + +- [devcert (no install required)](https://github.com/davewasmer/devcert-cli): `npx devcert-cli generate localhost` +- [mkcert (install required)](https://github.com/FiloSottile/mkcert): `mkcert -install && mkcert -key-file snowpack.key -cert-file snowpack.crt localhost` + +In most situations you should add personally generated certificate files (`snowpack.key` and `snowpack.crt`) to your `.gitignore` file. + +### Legacy Browser Support + +You can customize the set of browsers you'd like to support via the `package.json` "browserslist" property, going all the way back to IE11. This will be picked up when you run `snowpack build` to build for production. + +```js +/* package.json */ +"browserslist": ">0.75%, not ie 11, not UCAndroid >0, not OperaMini all", +``` + +If you're worried about legacy browsers, you should also add a bundler to your production build. Check out our [section on bundling for production](#bundle-for-production) for more info. + +Note: During development (`snowpack dev`) we perform no transpilation for older browsers. Make sure that you're using a modern browser during development. + +### Node.js Polyfills + +If you depend on packages that depend on Node.js built-in modules (`"fs"`, `"path"`, `"url"`, etc.) you can run Snowpack with `--polyfill-node` (or `installOptions.polyfillNode: true` in your config file). This will automatically polyfill any Node.js dependencies as much as possible for the browser. You can see the full list of supported polyfills here: https://github.com/ionic-team/rollup-plugin-node-polyfills + +If you'd like to customize this polyfill behavior, skip the `--polyfill-node` flag and instead provide your own Rollup plugin for the installer: + +```js +// Example: If `--polyfill-node` doesn't support your use-case, you can provide your own custom Node.js polyfill behavior +module.exports = { + installOptions: { + polyfillNode: false, + rollup: { + plugins: [require('rollup-plugin-node-polyfills')({crypto: true, ...})], + }, + }, +}; +``` + +### CSS Imports (@import) + +```css +/* Import a local CSS file */ +@import './style1.css'; +/* Import a local Sass file (Sass build plugin still needed to compile file contents) */ +@import './style2.scss'; +/* Import a package CSS file */ +@import 'bootstrap/dist/css/bootstrap.css'; +``` + +Snowpack supports [native CSS "@import" behavior](https://developer.mozilla.org/en-US/docs/Web/CSS/@import) with additional support for importing CSS from within packages. + +**Note:** The actual CSS spec dictates that a "bare" import specifier like `@import "package/style.css"` should be treated as a relative path, equivalent to `@import "./package/style.css"`. We intentionally break from the spec to match the same package import behavior as JavaScript imports. If you prefer the strictly native behavior with no package resolution support, use the form `@import url("package/style.css")` instead. Snowpack will not resolve `url()` imports and will leave them as-is in the final build. + +**Note for webpack users:** If you're migrating an existing app to snowpack, note that `@import '~package/...'` (URL starting with a tilde) is a syntax specific to webpack. With Snowpack you remove the `~` from your `@import`s. + +### Server Side Rendering (SSR) + +SSR for Snowpack is supported but fairly new and experimental. This documentation will be updated as we finalize support over the next few minor versions. + +```js +// New in Snowpack v2.15.0 - JS API Example +import {startDevServer} from 'snowpack'; +const server = await startDevServer({ ... }); +``` + +These frameworks have known experiments / examples of using SSR + Snowpack: + +- React (Example): https://github.com/matthoffner/snowpack-react-ssr +- Svelte/Sapper (Experiment): https://github.com/Rich-Harris/snowpack-svelte-ssr +- [Join our Discord](https://discord.gg/rS8SnRk) if you're interested in getting involved! + +### Optimized Builds + +By default, Snowpack doesn't optimize your code for production. But, there are several plugins available to optimize your final build, including minification (reducing file sizes) and even bundling (combining files together to reduce the number of requests needed). + +**Connect the `@snowpack/plugin-optimize` plugin to optimize your build.** By default this will minify your built files for faster loading. It can also be configured to add `` elements that will improve the loading speed of unbundled sites. _Note: this plugin replaces `buildOptions.minify`._ + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-optimize] +{ + "plugins": [ + ["@snowpack/plugin-optimize", {/* ... */}] + ] +} +``` + +Note that `@snowpack/plugin-optimize` will optimize your build, but won't bundle files together. + +**If you'd like a bundled build, use `@snowpack/plugin-webpack` instead.** Connect the `"@snowpack/plugin-webpack"` plugin in your Snowpack configuration file and then run `snowpack build` to see your optimized, _bundled_ build. + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-webpack] +{ + "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] +} +``` + +### Testing + +Snowpack supports any popular JavaScript testing framework that you're already familiar with. Mocha, Jest, Jasmine, AVA and Cypress are all supported in Snowpack applications. + +We currently recommend [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) (WTR) for testing in Snowpack projects. When benchmarked it performed faster than Jest (our previous recommendation) while also providing an environment for testing that more closely matches the actual browser that your project runs in. Most importantly, WTR runs the same Snowpack build pipeline that you've already configured for your project, so there's no extra build configuration needed to run your tests. Jest (and many others) ask you to configure a totally secondary build pipeline for your tests, which reduces test confidence while adding 100s of extra dependencies to your project. + +To use [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) in your project, [follow the instructions here](https://modern-web.dev/docs/test-runner/overview/) and make sure that you add the Snowpack plugin to your config file: + +```js +// web-test-runner.config.js +module.exports = { + plugins: [require('@snowpack/web-test-runner-plugin')()], +}; +``` + +[See an example setup](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-react) in on of our Create Snowpack App starter templates. +## Plugins + +Snowpack isn't just a build tool for JavaScript, it is a build tool for your entire website. Babel, TypeScript, PostCSS, SVGR and any favorite build tool can be connected directly into Snowpack via 1-line plugins. + +Snowpack plugins can be added to: + +- Customize your build with new language/framework support (Svelte, Vue) +- Customize your build with new build tools (Babel, PostCSS) +- Run CLI commands during build and development (TypeScript, ESLint) +- Create custom transformations, specific to your exact application. + +👉 **[Check out our advanced guide](/plugins) and learn how to create your own plugin.** + +### Connect a Plugin + +To make a plugin available, you have to put it in your project `devDependencies` list (`package.json`) which will install it locally (in your project) and make it available to snowpack. + +For the official snowpack plugins, command would look like: + +```bash +# for npm +npm install --save-dev @snowpack/[plugin-name] +# for yarn +yarn add --dev @snowpack/[plugin-name] +``` + +After that, you can connect the plugin to Snowpack via the `"plugins"` array in your Snowpack config. For example, + +```js +// snowpack.config.json +{ + "plugins": ["@snowpack/plugin-babel"] +} +``` + +This is all you need to add Babel to your application build pipeline. If the plugin supports it, you can also pass **options** to the plugin to configure its behavior: + +```js +// snowpack.config.json +{ + "plugins": [ + ["@snowpack/plugin-babel", { /* ... */}] + ], +} +``` + +NOTE: The **order** of plugins is important, for example, if there are multiple plugins that load/build particular type of file, the first matching will take precedence. If it succeeds in the build task for the file, others will not be called for that particular build task. + +### Connect any Script/CLI + +If you can't find a plugin that fits your needs and don't want to write your own, you can also run CLI commands directly as a part of your build using one of our two utility plugins: `@snowpack/plugin-build-script` & `@snowpack/plugin-run-script`. + +#### @snowpack/plugin-build-script + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-build-script] +{ + "plugins": [ + ["@snowpack/plugin-build-script", { "cmd": "postcss", "input": [".css"], "output": [".css"]}] + ], +} +``` + +This plugin allows you to connect any CLI into your build process. Just give it a `cmd` CLI command that can take input from `stdin` and emit the build result via `stdout`. Check out the README for more information. + +#### @snowpack/plugin-run-script + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-run-script] +{ + "plugins": [ + ["@snowpack/plugin-run-script", { "cmd": "eleventy", "watch": "$1 --watch" }] + ], +} +``` + +This plugin allows you to run any CLI command as a part of your dev and build workflow. This plugin doesn't affect your build output, but it is useful for connecting developer tooling directly into Snowpack. Use this to add meaningful feedback to your dev console as you type, like TypeScript type-checking and ESLint lint errors. + +### Official Plugins + +- [@snowpack/plugin-babel](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-babel) +- [@snowpack/plugin-dotenv](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) +- [@snowpack/plugin-postcss](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-postcss) +- [@snowpack/plugin-react-refresh](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-react-refresh) +- [@snowpack/plugin-svelte](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-svelte) +- [@snowpack/plugin-vue](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-vue) +- [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-webpack) + +👉 **[Check out our full list](/plugins) of official plugins.** + +### Community Plugins + +- [snowpack-plugin-mdx](https://www.npmjs.com/package/snowpack-plugin-mdx) +- [snowpack-plugin-stylus](https://www.npmjs.com/package/snowpack-plugin-stylus) +- [snowpack-plugin-import-map](https://github.com/zhoukekestar/snowpack-plugin-import-map) + +👉 **[Find your community plugin on npm.](https://www.npmjs.com/search?q=keywords:snowpack%20plugin)** +## Recipes + +Below are a collection of guides for using different web frameworks and build tools with Snowpack. If you'd like to contribute a new recipe, feel free to edit the docs to add your own. + +### Supported Libraries + +All of the following frameworks have been tested and guaranteed to work in Snowpack without issues. If you encounter an issue using any of the following, please file an issue. + +- React +- Preact +- JSX +- HTM +- lit-html +- Vue (see below) +- Svelte (see below) +- Tailwind CSS (see below) +- Sass (see below) +- and many more! +- Literally... every library should work with Snowpack! + +Some libraries use compile-to-JS file formats and do require a special build script or plugin. See the guide below for examples. + +### JSX + +Snowpack has built-in support to handle `.jsx` & `.tsx` source files in your application. + +**Note: Snowpack's default build does not support JSX in `.js`/`.ts` files.** If you can't use the `.jsx`/`.tsx` file extension, you can use [Babel](#babel) to build your application instead. + +### TypeScript + +Snowpack includes built-in support to build all TypeScript source files (`.ts` & `.tsx`) in your application. + +For automatic TypeScript type checking during development, add the official [@snowpack/plugin-typescript](https://www.npmjs.com/package/@snowpack/plugin-typescript) plugin to your Snowpack config file. This plugin adds automatic `tsc` type checking results right in the Snowpack dev console. + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-typescript"] +``` + +### Babel + +Snowpack already comes with built-in support for building JavaScript, TypeScript, and JSX. However, If you would like to run your build through Babel instead, you can replace our default file builder with the official Snowpack Babel plugin. + +The plugin will automatically read plugins & presets from your local project `babel.config.*` config file, if one exists. + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-babel"], +``` + +### Preact + +You can import and use Preact without any custom configuration needed. + +**To use `preact/compat`:** (the Preact+React compatability layer) alias the "compat" package to React in your install options: + +```js +// Example: Lets you import "react" in your application, but uses preact internally +// snowpack.config.json +"installOptions": { + "alias": { + "react": "preact/compat", + "react-dom": "preact/compat" + } +} +``` + +### Vue + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-vue"] +``` + +### Svelte + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-svelte"] +``` + +### PostCSS + +```js +// snowpack.config.json +"plugins": [ + ["@snowpack/plugin-build-script", {"cmd": "postcss", "input": [".css"], "output": [".css"]}] +] +``` + +The [`postcss-cli`](https://github.com/postcss/postcss-cli) package must be installed manually. You can configure PostCSS with a `postcss.config.js` file in your current working directory. + +### Tailwind CSS + +You can add [Tailwind](https://tailwindcss.com) to any project via native CSS `@import`: + +```css +/* index.css */ +@import 'tailwindcss/dist/base.css'; +@import 'tailwindcss/dist/components.css'; +@import 'tailwindcss/dist/utilities.css'; +``` + +#### Using Tailwind with PostCSS + +If you are using PostCSS in your project ([see above](#postcss)) then you can just add Tailwind as a plugin to your `postcss.config.js`: + +```js +// postcss.config.js +// Taken from: https://tailwindcss.com/docs/installation#using-tailwind-with-postcss +module.exports = { + plugins: [ + // ... + require('tailwindcss'), + require('autoprefixer'), + // ... + ], +}; +``` + +Once you have added the Tailwind PostCSS plugin, you can replace your native CSS `dist` imports with Tailwind's more powerful `base`, `components`, and `utilities` imports: + +```diff +/* index.css */ +- @import 'tailwindcss/dist/base.css'; +- @import 'tailwindcss/dist/components.css'; +- @import 'tailwindcss/dist/utilities.css'; ++ @import 'tailwindcss/base'; ++ @import 'tailwindcss/components'; ++ @import 'tailwindcss/utilities'; +``` + +Follow the official [Tailwind CSS Docs](https://tailwindcss.com/docs/installation/#using-tailwind-with-postcss) for more information. + +### Sass + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-sass"] +``` + +[Sass](https://www.sass-lang.com/) is a stylesheet language that’s compiled to CSS. It allows you to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects. + +To use Sass + PostCSS, check out [this guide](https://zellwk.com/blog/eleventy-snowpack-sass-postcss/). + +### ESLint + +```js +// snowpack.config.json +"plugins": [ + ["@snowpack/plugin-run-script", { + "cmd": "eslint 'src/**/*.{js,jsx,ts,tsx}'", + // Optional: Use npm package "watch" to run on every file change + "watch": "watch \"$1\" src" + }] +] +``` + +### Webpack + +```js +// snowpack.config.json +{ + // Optimize your production builds with Webpack + "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] +} +``` + +Snowpack ships an official [webpack plugin](https://www.npmjs.com/package/@snowpack/plugin-webpack) for optimizing your build. Connect the `"@snowpack/plugin-webpack"` plugin into your Snowpack configuration file and then run `snowpack build` to see your optimized, bundled build. + +See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. + +### Workbox + +The [Workbox CLI](https://developers.google.com/web/tools/workbox/modules/workbox-cli) integrates well with Snowpack. Run the wizard to bootstrap your first configuration file, and then run `workbox generateSW` to generate your service worker. + +Remember that Workbox expects to be run every time you deploy, as a part of a production build process. If you don't have one yet, create package.json [`"deploy"` and/or `"build"` scripts](https://michael-kuehnel.de/tooling/2018/03/22/helpers-and-tips-for-npm-run-scripts.html) to automate your production build process. + +### @web/test-runner + +[@web/test-runner](https://www.npmjs.com/package/@web/test-runner) is our recommended test runner for Snowpack projects. [See our section on testing](/#testing) for detailed instructions on how to get started with @web/test-runner. + +### Jest + +> Update (October 11, 2020): **We now recommend [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) as our test runner of choice for Snowpack projects.** [See our section on testing](/#testing) for more background behind the change. + +[Jest](https://jestjs.io/) is a popular Node.js test runner for Node.js & web projects. Jest can be used with any frontend project as long as you configure how Jest should build your frontend files to run on Node.js. Many projects will try to manage this configuration for you, since it can get complicated. + +Snowpack ships pre-built Jest configuration files for several popular frameworks. If you need to use Jest for any reason,consider extending one of these packages: + +- React: [@snowpack/app-scripts-react](https://www.npmjs.com/package/@snowpack/app-scripts-react) +- Preact: [@snowpack/app-scripts-preact](https://www.npmjs.com/package/@snowpack/app-scripts-preact) +- Svelte: [@snowpack/app-scripts-svelte](https://www.npmjs.com/package/@snowpack/app-scripts-svelte) + +You can use these packages in your project like so: + +```js +// jest.config.js +// Example: extending a pre-built Jest configuration file +module.exports = { + ...require('@snowpack/app-scripts-preact/jest.config.js')(), +}; +``` + +### Server Side Rendering (SSR) + +To connect your own server to `snowpack dev` for SSR, there are a few things that you'll need to set up. Make sure that you include any Snowpack-built resources via script tags in your server's HTML response: + +```html + + +``` + +And make sure that your HTML response also includes code to configure HMR to talk to Snowpack's dev server: + +```html + + +``` + +### Leaving Snowpack + +Snowpack is designed for zero lock-in. If you ever feel the need to add a traditional application bundler to your stack (for whatever reason!) you can do so in seconds. + +Any application built with Snowpack should Just Work™️ when passed through Webpack/Rollup/Parcel. If you are already importing packages by name in your source code (ex: `import React from 'react'`) then you should be able to migrate to any popular bundler without issue. + +If you are importing packages by full URL (ex: `import React from '/web_modules/react.js'`), then a simple Find & Replace should help you re-write them to the plain package name imports that most bundlers expect. +## Troubleshooting + +### No such file or directory + +``` +ENOENT: no such file or directory, open …/node_modules/csstype/index.js +``` + +This error message would sometimes occur in older versions of Snowpack. + +**To solve this issue:** Upgrade to Snowpack `v2.6.0` or higher. If you continue to see this unexpected error in newer versions of Snowpack, please file an issue. + +### Package exists but package.json "exports" does not include entry + +Node.js recently added support for a package.json "exports" entry that defines which files you can and cannot import from within a package. Preact, for example, defines an "exports" map that allows you to to import "preact/hooks" but not "preact/some/custom/file-path.js". This allows packages to control their "public" interface. + +If you see this error message, that means that you've imported a file path not allowed in the export map. If you believe this to be an error, reach out to the package author to request the file be added to their export map. + +### Uncaught SyntaxError: The requested module '/web_modules/XXXXXX.js' does not provide an export named 'YYYYYY' + +This is usually seen when importing a named export from a package written in the older Common.js format. Snowpack will automatically scan legacy Common.js packages to detect its named exports, but sometimes these exports can't be detected statically. + +**To solve this issue:** Add a ["namedExports"](#config.installoptions) entry in your Snowpack config file. This tells Snowpack to use a more-powerful runtime scanner on this legacy Common.js package to detect it's exports at runtime. + +```json +// snowpack.config.json +// Example: add support for `import { Terminal } from 'xterm';` +"installOptions": { + "namedExports": ["xterm"] +} +``` + +### Installing Non-JS Packages + +When installing packages from npm, you may encounter some file formats that can only run with additional parsing/processing. First check to see if there is a [Snowpack plugin for the type of file](#plugins). + +Because our internal installer is powered by Rollup, you can also add Rollup plugins to your [Snowpack config](#configuration) to handle these special, rare files: + +```js +/* snowpack.config.js */ +module.exports = { + rollup: { + plugins: [require('rollup-plugin-sass')()], + }, +}; +``` + +Refer to [Rollup’s documentation on plugins](https://rollupjs.org/guide/en/#using-plugins) for more information. +## API Reference + +### Config Files + +Snowpack's behavior can be configured by CLI flags, a custom Snowpack config file, or both. [See the api reference below for the full list of supported options](#api-reference). + +Snowpack supports configuration files in multiple formats, sorted by priority order: + +1. `--config [path]`: If provided. +1. `package.json`: A namespaced config object (`"snowpack": {...}`). +1. `snowpack.config.cjs`: (`module.exports = {...}`) for projects using `"type": "module"`. +1. `snowpack.config.js`: (`module.exports = {...}`). +1. `snowpack.config.ts`\*: (`export default {...}`). +1. `snowpack.config.json`: (`{...}`). + +_(\* Note: `snowpack.config.ts` support is still experimental! It currently involves bundling your config file and all imported files into a temporary JS config file that can be loaded by Node.js. Your mileage may vary.)_ + +### CLI Flags + +```bash +# Show helpful info +$ snowpack --help + +# Show additional debugging logs +$ snowpack --verbose + +# {installOptions: {dest: 'CUSTOM_DIR/'}} +$ snowpack install --dest CUSTOM_DIR/ + +# {devOptions: {bundle: true}} +$ snowpack dev --bundle + +# {devOptions: {bundle: false}} +$ snowpack dev --no-bundle + +# {buildOptions: {clean: true}} +$ snowpack build --clean +``` + +**CLI flags will be merged with (and take priority over) your config file values.** Every config value outlined below can also be passed as a CLI flag. Additionally, Snowpack also supports the following flags: + +- **`--config [path]`** Set the path to your project config file. +- **`--help`** Show this help. +- **`--version`** Show the current version. +- **`--reload`** Clear the local cache. Useful for troubleshooting installer issues. + +### Configuration + +Example: + +```js +{ + "install": [ + "htm", + "preact", + "preact/hooks", // A package within a package + "unistore/full/preact.es.js", // An ESM file within a package (supports globs) + "bulma/css/bulma.css" // A non-JS static asset (supports globs) + ], + "plugins": [ /* ... */ ], + "installOptions": { /* ... */ }, + "devOptions": { /* ... */ }, + "buildOptions": { /* ... */ }, + "proxy": { /* ... */ }, + "mount": { /* ... */ }, + "alias": { /* ... */ } +} +``` + +#### `config` + +`object` (options) + +See the configuration section for information on file formats and command line usage. + +Example: + +```js +{ + mount: { + public: '/', + src: '/_dist_', + }, + plugins: ['@snowpack/plugin-babel', '@snowpack/plugin-dotenv'], + devOptions: {}, + installOptions: { + installTypes: isTS, + }, +} +``` + +Options: + +- **`extends`** | `string` + - Inherit from a separate "base" config. Can be a relative file path, an npm package, or a file within an npm package. Your configuration will be merged on top of the extended base config. +- **`exclude`** | `string[]` + - Exclude any files from scanning, building, etc. Defaults to exclude common test file locations: `['**/node_modules/**/*', '**/__tests__/*', '**/*.@(spec|test).@(js|mjs)']` + - Useful for excluding tests and other unnecessary files from the final build. Supports glob pattern matching. +- **`install`** | `string[]` + - Known dependencies to install with Snowpack. Useful for installing packages manually and any dependencies that couldn't be detected by our automatic import scanner (ex: package CSS files). +- **`mount.*`** + - Mount local directories to custom URLs in your built application. +- **`alias.*`** + - Configure import aliases for directories and packages. See the section below for all options. +- **`proxy.*`** + - Configure the dev server to proxy requests. See the section below for all options. +- **`plugins`** + - Extend Snowpack with third-party tools and plugins. See the section below for more info. +- **`installOptions.*`** + - Configure how npm packages are installed. See the section below for all options. +- **`devOptions.*`** + - Configure your dev server. See the section below for all options. +- **`buildOptions.*`** + - Configure your build. See the section below for all options. +- **`testOptions.*`** + - Configure your tests. See the section below for all options. + +#### `config.installOptions` + +`object` (options) + +Settings that determine how Snowpack handles installing modules. + +Example: + +```js +installOptions: { + installTypes: isTS, +} +``` + +Options: + +- **`installOptions.dest`** | `string` + - _Default:`"web_modules"`_ + - Configure the install directory. +- **`installOptions.sourceMap`** | `boolean` + - Emit source maps for installed packages. +- **`installOptions.env`** | `{[ENV_NAME: string]: (string | true)}` + - Sets a `process.env.` environment variable inside the installed dependencies. If set to true (ex: `{NODE_ENV: true}` or `--env NODE_ENV`) this will inherit from your current shell environment variable. Otherwise, set to a string (ex: `{NODE_ENV: 'production'}` or `--env NODE_ENV=production`) to set the exact value manually. +- **`installOptions.treeshake`** | `boolean` + - _Default:`false`, or `true` when run with `snowpack build`_ + - Treeshake your dependencies to optimize your installed files. Snowpack will scan your application to detect which exact imports are used from each package, and then will remove any unused imports from the final install via dead-code elimination (aka tree shaking). +- **`installOptions.installTypes`** | `boolean` + - Install TypeScript type declarations with your packages. Requires changes to your [tsconfig.json](#typescript) to pick up these types. +- **`installOptions.alias`** | `{[mapFromPackageName: string]: string}` + - Alias an installed package name. This applies to imports within your application and within your installed dependency graph. + - Example: `"alias": {"react": "preact/compat", "react-dom": "preact/compat"}` +- **`installOptions.namedExports`** | `string[]` + - _NOTE(v2.13.0): Snowpack now automatically supports named exports for most Common.js packages. This configuration remains for any package that Snowpack can't handle automatically. In most cases, this should no longer be needed._ + - Import CJS packages using named exports (Example: `import {useTable} from 'react-table'`). + - Example: `"namedExports": ["react-table"]` +- **`installOptions.externalPackage`** | `string[]` + - _NOTE: This is an advanced feature, and may not do what you want! Bare imports are not supported in any major browser, so an ignored import will usually fail when sent directly to the browser._ + - Mark some imports as external. Snowpack won't install them and will ignore them when resolving imports. + - Example: `"externalPackage": ["fs"]` +- **`installOptions.rollup`** | `Object` + - Snowpack uses Rollup internally to install your packages. This `rollup` config option gives you deeper control over the internal rollup configuration that we use. + - **`installOptions.rollup.plugins`** - Specify [Custom Rollup plugins](#installing-non-js-packages) if you are dealing with non-standard files. + - **`installOptions.rollup.dedupe`** - If needed, deduplicate multiple versions/copies of a packages to a single one. This helps prevent issues with some packages when multiple versions are installed from your node_modules tree. See [rollup-plugin-node-resolve](https://github.com/rollup/plugins/tree/master/packages/node-resolve#usage) for more documentation. + - **`installOptions.rollup.context`** - Specify top-level `this` value. Useful to silence install errors caused by legacy common.js packages that reference a top-level this variable, which does not exist in a pure ESM environment. Note that the `'THIS_IS_UNDEFINED'` warning (`The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten`) is silenced by default, unless `--verbose` is used. + +#### `config.devOptions` + +`object` (options) + +Settings that determine how the Snowpack dev environment behaves. + +Example: + +```js +devOptions: { + port: 4000, + open: "none", +} +``` + +Options: + +- **`devOptions.port`** | `number` | Default: `8080` + - The port number to run the dev server on. +- **`devOptions.bundle`** | `boolean` + - Create an optimized, bundled build for production. + - You must have [Parcel](https://parceljs.org/) as a dev dependency in your project. + - If undefined, this option will be enabled if the `parcel` package is found. +- **`devOptions.fallback`** | `string` | Default: `"index.html"` + - When using the Single-Page Application (SPA) pattern, this is the HTML "shell" file that gets served for every (non-resource) user route. Make sure that you configure your production servers to serve this as well. +- **`devOptions.open`** | `string` | Default: `"default"` + - Opens the dev server in a new browser tab. If Chrome is available on macOS, an attempt will be made to reuse an existing browser tab. Any installed browser may also be specified. E.g., "chrome", "firefox", "brave". Set "none" to disable. +- **`devOptions.output`** | `"stream" | "dashboard"` | Default: `"dashboard"` + - Set the output mode of the `dev` console. + - `"dashboard"` delivers an organized layout of console output and the logs of any connected tools. This is recommended for most users and results in the best logging experience. + - `"stream"` is useful when Snowpack is run in parallel with other commands, where clearing the shell would clear important output of other commands running in the same shell. +- **`devOptions.hostname`** | `string` | Default: `localhost` + - The hostname where the browser tab will be open. +- **`devOptions.hmr`** | `boolean` | Default: `true` + - Toggles whether or not Snowpack dev server should have HMR enabled. +- **`devOptions.hmrErrorOverlay`** | `boolean` | Default: `true` + - When HMR is enabled, toggles whether or not a browser overlay should display javascript errors. +- **`devOptions.secure`** | `boolean` + - Toggles whether or not Snowpack dev server should use HTTPS with HTTP2 enabled. +- **`devOptions.out`** | `string` | Default: `"build"` + - _NOTE:_ Deprecated, see `buildOptions.out`. + - The local directory that we output your final build to. + +#### `config.buildOptions` + +`object` (options) + +Determines how Snowpack processes the final build. + +Example: + +```js +buildOptions: { + sourceMaps: true, + baseUrl: '/home', + metaDir: 'static/snowpack', + webModulesUrl: 'web' +} +``` + +Options: + +- **`buildOptions.out`** | `string` | Default: `"build"` + - The local directory that we output your final build to. +- **`buildOptions.baseUrl`** | `string` | Default: `/` + - In your HTML, replace all instances of `%PUBLIC_URL%` with this (inspired by the same [Create React App](https://create-react-app.dev/docs/using-the-public-folder/) concept). This is useful if your app will be deployed to a subdirectory. _Note: if you have `homepage` in your `package.json`, Snowpack will actually pick up on that, too._ +- **`buildOptions.clean`** | `boolean` | Default: `false` + - Set to `true` if Snowpack should erase the build folder before each build. +- **`buildOptions.metaDir`** | `string` | Default: `__snowpack__` + - By default, Snowpack outputs Snowpack-related metadata such as [HMR](#hot-module-replacement) and [ENV](#environment-variables) info to a folder called `__snowpack__`. You can rename that folder with this option (e.g.: `metaDir: 'static/snowpack'`). +- **`buildOptions.sourceMaps`** | `boolean` | Default: `false` + - **_Experimental:_** Set to `true` to enable source maps +- **`buildOptions.webModulesUrl`** | `string` | Default: `web_modules` + - Rename your web modules directory. + +#### `config.testOptions` + +`object` (options) + +Settings that determine how the Snowpack test environment behaves. + +Example: + +```js +testOptions: { + files: ['my-test-dir/*.test.js']; +} +``` + +Options: + +- **`testOptions.files`** | `string[]` | Default: `["__tests__/**/*", "**/*.@(spec|test).*"]` + - The location of all test files. + - All matching test files are scanned for installable dependencies during development, but excluded from both scanning and building in your final build. + +#### `config.proxy` + +`object` (path: options) + +If desired, `"proxy"` is where you configure the proxy behavior of your dev server. Define different paths that should be proxied, and where they should be proxied to. + +The short form of a full URL string is enough for general use. For advanced configuration, you can use the object format to set all options supported by [http-proxy](https://github.com/http-party/node-http-proxy). + +This configuration has no effect on the final build. + +Example: + +```js +// snowpack.config.json +{ + "proxy": { + // Short form: + "/api/01": "https://pokeapi.co/api/v2/", + // Long form: + "/api/02": { + on: { proxyReq: (p, req, res) => /* Custom event handlers (JS only) */ }, + /* Custom http-proxy options */ + } + } +} +``` + +Options: + +- **`"path".on`** | `object` (string: function) + - `on` is a special Snowpack property for setting event handler functions on proxy server events. See the section on ["Listening for Proxy Events"](https://github.com/http-party/node-http-proxy#listening-for-proxy-events) for a list of all supported events. You must be using a `snowpack.config.js` JavaScript configuration file to set this. +- All options supported by [http-proxy](https://github.com/http-party/node-http-proxy). + +#### `config.mount` + +``` +mount: { + [path: string]: string | {url: string, static: boolean, resolve: boolean} +} +``` + +The `mount` configuration lets you customize which directories should be included in your Snowpack build, and what URL they are mounted to. Given the following example configuration, you could expect the following results: + +```js +// Example: Basic "mount" usage +// snowpack.config.json +{ + "mount": { + "src": "/_dist_", + "public": "/" + } +} +``` + +``` +GET /src/a.js -> 404 NOT FOUND ("./src" is mounted to "/_dist_/*", not "/src/*") +GET /_dist_/a.js -> ./src/a.js +GET /_dist_/b/b.js -> ./src/b/b.js +GET /public/robots.txt -> 404 NOT FOUND ("./public" dir is mounted to "/*", not "/public/*") +GET /robots.txt -> ./public/robots.txt +``` + +By default, Snowpack builds every mounted file by passing it through Snowpack's build pipeline. + +**\*New in Snowpack `v2.15.0`:** You can customize the build behavior for a mounted directory using the expanded object notation: + +- `url` _required_: The URL to mount to, matching the simple form above. +- `static` _optional, default: false_: If true, don't build files in this directory and serve them directly to the browser. +- `resolve` _optional, default: true_: If false, don't resolve JS & CSS imports in your JS, CSS, and HTML files and send every import to the browser, as written. We recommend that you don't disable this unless absolutely necessary, since it prevents Snowpack from handling your imports to things like packages, JSON files, CSS modules, and more. + +```js +// Example: Advanced "mount" usage +// snowpack.config.json +{ + "mount": { + // Same behavior as the "src" example above: + "src": {url: "/_dist_"}, + // Mount "public" to the root URL path ("/*") and serve files with zero transformations: + "public": {url: "/", static: true, resolve: false} + } +} +``` + +#### `config.alias` + +`object` (package: package or path) + +> Note: In an older version of Snowpack, all mounted directories were also available as aliases by default. As of Snowpack 2.7, this is no longer the case and no aliases are defined by default. + +The `alias` config option lets you define an import alias in your application. When aliasing a package, this allows you to import that package by another name in your application. This applies to imports inside of your dependencies as well, essentially replacing all references to the aliased package. + +Aliasing a local directory (any path that starts with "./") creates a shortcut to import that file or directory. While we don't necessarily recommend this pattern, some projects do enjoy using these instead of relative paths: + +```diff +-import '../../../../../Button.js'; ++import '@app/Button.js'; +``` + +Example: + +```js +// snowpack.config.json +{ + alias: { + // Type 1: Package Import Alias + "lodash": "lodash-es", + "react": "preact/compat", + // Type 2: Local Directory Import Alias (relative to cwd) + "components": "./src/components" + "@app": "./src" + } +} +``` +## Assets + +- [Snowpack Logo (PNG, White)](/assets/snowpack-logo-white.png) +- [Snowpack Logo (PNG, Dark)](/assets/snowpack-logo-dark.png) +- [Snowpack Logo (PNG, Black)](/assets/snowpack-logo-black.png) +- [Snowpack Wordmark (PNG, White)](/assets/snowpack-wordmark-white.png) +- [Snowpack Wordmark (PNG, Black)](/assets/snowpack-wordmark-black.png) diff --git a/www/posts/2020-05-26-snowpack-2-0-release.md b/www/_template/posts/2020-05-26-snowpack-2-0-release.md similarity index 100% rename from www/posts/2020-05-26-snowpack-2-0-release.md rename to www/_template/posts/2020-05-26-snowpack-2-0-release.md diff --git a/www/posts/2020-07-30-snowpack-2-7-release.md b/www/_template/posts/2020-07-30-snowpack-2-7-release.md similarity index 100% rename from www/posts/2020-07-30-snowpack-2-7-release.md rename to www/_template/posts/2020-07-30-snowpack-2-7-release.md diff --git a/www/assets/app.min.css b/www/_template/static/app.min.css similarity index 92% rename from www/assets/app.min.css rename to www/_template/static/app.min.css index 96662c9378..cbe2ffe096 100644 --- a/www/assets/app.min.css +++ b/www/_template/static/app.min.css @@ -1525,3 +1525,107 @@ img.company-logo { display: none; } } +.language-diff .deleted-sign, +.language-diff .inserted-sign .inserted { + user-select: none; +} + +.token.inserted { + color: #b5cea8; +} + +.token.deleted { + color: #ce9178; +} + +.markdown-body img.screenshot { + box-shadow: none; + border: none; + border-radius: 0; +} + +.markdown-body embed { + background-color: #fff; + box-sizing: content-box; + max-width: 100%; + width: 100%; +} + +.frame { + background-color: #0a5e9d; + padding: 34px 17px 10px 17px; + border-radius: 10px; + position: relative; + margin: 1rem 0; +} +.frame::before { + content: url(/img/guides/react/buttons.svg); + display: block; + position: absolute; + top: 5px; +} +.frame::after { + content: url(/img/guides/react/snowpack-logo-tiny.svg); + display: block; + position: absolute; + top: 5px; + right: 17px; +} + +.guide .grid-body-header { + margin-bottom: 4rem; +} +@media (min-width: 600px) { + .guide .markdown-body { + font-size: 1.1em; + } +} +.guide .markdown-body blockquote, +.guide .markdown-body p, +.guide .markdown-body ul, +.guide .markdown-body ol, +.guide .markdown-body pre { + margin-top: 2em; + margin-bottom: 2em; +} +.guide .markdown-body p { + line-height: 1.6; +} +.guide .markdown-body ul { + margin-top: 2em; + margin-bottom: 2em; +} +.guide .markdown-body li { + margin-top: 0.5em; + margin-bottom: 0.5em; + line-height: 1.6; +} +.guide .markdown-body h2 { + font-size: 2.5em; + line-height: 1.2; +} +.guide .markdown-body blockquote { + margin-left: -1rem; + margin-right: -1rem; + padding: 1.5rem 1rem; + color: #2e5e82; + font-size: 1.1em; + font-weight: 300; + background: linear-gradient(-30deg, #c9efd8, #f9ddff); + border-left: none; +} +@media (min-width: 860px) { + .guide .markdown-body blockquote { + margin-left: -2rem; + margin-right: -2rem; + padding: 2rem; + border-radius: 0.5rem; + box-shadow: 0 1px 2px rgba(50, 127, 177, 0.1), 0 1.5rem 3rem rgba(50, 125, 177, 0.1); + } +} +.guide .markdown-body blockquote *:first-child { + margin-top: 0; +} +.guide .markdown-body blockquote *:last-child { + margin-bottom: 0; +} diff --git a/www/css/_guides.scss b/www/css/_guides.scss new file mode 100644 index 0000000000..7c9c91a256 --- /dev/null +++ b/www/css/_guides.scss @@ -0,0 +1,121 @@ +.language-diff .deleted-sign, +.language-diff .inserted-sign .inserted { + user-select: none; +} + +.token.inserted { + color: #b5cea8; +} + +.token.deleted { + color: #ce9178; +} + +.markdown-body img.screenshot { + box-shadow: none; + border: none; + border-radius: 0; +} + +.markdown-body embed { + background-color: #fff; + box-sizing: content-box; + max-width: 100%; + width: 100%; +} + +.frame { + background-color: #0a5e9d; + padding: 34px 17px 10px 17px; + border-radius: 10px; + position: relative; + margin: 1rem 0; + + &::before { + content: url(/img/guides/react/buttons.svg); + display: block; + position: absolute; + top: 5px; + } + + &::after { + content: url(/img/guides/react/snowpack-logo-tiny.svg); + display: block; + position: absolute; + top: 5px; + right: 17px; + } +} + +.guide { + .grid-body-header { + margin-bottom: 4rem; + } + + .markdown-body { + @media (min-width: 600px) { + font-size: 1.1em; + } + + blockquote, + p, + ul, + ol, + pre { + margin-top: 2em; + margin-bottom: 2em; + } + + p { + line-height: 1.6; + } + + ul { + margin-top: 2em; + margin-bottom: 2em; + } + + li { + margin-top: 0.5em; + margin-bottom: 0.5em; + line-height: 1.6; + } + + h2 { + font-size: 2.5em; + line-height: 1.2; + } + + blockquote { + margin-left: -1rem; + margin-right: -1rem; + padding: 1.5rem 1rem; + color: #2e5e82; + font-size: 1.1em; + font-weight: 300; + background: linear-gradient(-30deg, #c9efd8, #f9ddff); + border-left: none; + + @media (min-width: 860px) { + margin-left: -2rem; + margin-right: -2rem; + padding: 2rem; + border-radius: 0.5rem; + box-shadow: 0 1px 2px rgba(50, 127, 177, 0.1), + 0 1.5rem 3rem rgba(50, 125, 177, 0.1); + } + + & *:first-child { + margin-top: 0; + } + & *:last-child { + margin-bottom: 0; + } + } + } +} + +.markdown-body iframe.twitter-share-button { + box-shadow: none; + border: 0; +} diff --git a/www/css/app.scss b/www/css/app.scss index d3d9febb0f..11a3ba7e73 100644 --- a/www/css/app.scss +++ b/www/css/app.scss @@ -9,3 +9,6 @@ // Base styles @import '_base'; + +// Guides styles +@import '_guides'; diff --git a/www/img/ReactGuide.jpg b/www/img/ReactGuide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c03335756e94da31cbd1912e301cf5332e156b5a GIT binary patch literal 1337854 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 xnvKnF16* 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

3+zOvuU3T16Ir?eh8Zx~t=k0ZVl{{ebh&e+~T- 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�pRELa|6fX1o7T6Kv14YV;- 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�b9E8% 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 z

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�cth^h--cm<0OLmNV&07+aN|uo%9=v+;|aG z*J@Is&+#_=>U)}DD8ztY|Hs{qnSC5Uh_-hZcSaN^=hT49GX^)Hyo^3@FZvKa%bZ_fzL#|;#FKi-g zW6Ss-M(o3b$Bo;+9A(TM(#}c24n};dD9YlrMmqb-HCZO$#`88i8L!w*cG8coqkL@- zMlu`whdVJ0N_4A*0h~IaKNmEA9wyE`=}Uc*;+}zE%f{tCL|NAX+?0GGM+3t&c2jdDHdh}ZPP1jW*qrIC^QL)<|HtU=u~z?0GdyJu>JvZ!g|LxiE~gQ+%TiNO(Bi^yEk!{tSSOKcE`7uYY# zssuAle-&aUqd~)#$Ld6oGV^gaO9uPb zaxU8?DN1KO|2Tx4a@As;8)@c*8a}ksphMo&2)c~Z4a|0{l1@Mg-7w>qQHu=}RxK7n zaABSuPBt-GiAIXqY;1vJA1FnW(m$gE49{GAgvVPD%DPw7aI(#6hwTKb8pC#%SET9 zcnj5iYH`coWI9P{C)y)7RuX_C8kkEQjFLIy#t7dqe$(Y6AJ5R+~SJx zE53A1ewL@N<1$wS_kCn6SdtD_eh?K)#4k+Qk_&Wn)Ig7QaYVCYBsmdR_gu|6Q+3p3 z`1;E{QYsiuc%S*0RSss*R6Su9X>w*Hkm+gGD>Pmx^vYR+$LoeXv;jPh3EvMa`F!`9 zVsSx`lsP~ozRW*GUQmxB&cdQ?woy5>|0Oe;fFb7kM$cP_a|lpg?Rq*|kv0YJocZR# zDf2k3i1M!O4{%>I<~KW#kaVWe8ZFF=GpczH3&5q;&`&Gp(ym0$?R&}446_wcGfK|&Si z9ij@0D?n=wd92TsLK8~fR&tJ&_nuofo8WX??9Khy5d6WzUiP3;;KyoQb+o3poxvf7 zK9?DC9#YrO*oejgQjdd-S}58Ytv$$m^Au*)U%aLKSo&A|9e=#xoc0jFD1;W0bIPfS zI5a6!%2vs*!BweZBkdP^|I&QEh*yp0S$Tb2Tv;jSFy#9CVD!qk`|`By`OK9bR{u+ViB0 zFbBIDtO;wGLUmV_{n@oUC-m*U>7>z?LIsci01K7k6&&&FIL@*(g1b6d)Ux`c-Mfj2 zFH#3t0PX`;^)t1aoenA7Gt3V87O@NsoxRa-y$s&JG+=W?iJtjxMtqQEIQrxSDe*;; z>iF0h1nzfu?w`wGC-@Ak7jRv3$(Vz-=B|;=M26+yJPLms^Z-Y5ZEffffk&VUvdPAT z4qGWj-dMv9)^s{)2Mrx|bUb^?li-SU3-@GZE8||Q$!)O6O1^npl7C9QIWAA-Mny`? z*PtAGYO7IeXa~*r`Rz(bq?~VS(K@91+sbElkadF?BF6u2=x+EKC5#cB+FYTc60QSP<`iH!dVQ@;kkdT9j zXw3Aw_!E4~2_a5bK>9`1WEz)^T~n)**AW7A?4%@uR&FVSmTv`%_ih9UJaE{>7#xJo zq2dXQr%J6b;PzM9^bI!8WsHI$41v;12H~pD6&kdX7^O}}W7+7^2VOw&EKG^Vw071s znx$Go;IT!L_FlK`<+jJ@@aHZAY>j)g`gT^{n<#^#64g`gU0#T%q#hy2a2%U7 zh0M**-pwMY(91*eCq0-2)N@|ugj#oO50SJo=5cqQ%c?pHAvP){RGM!*djkgJGNwJte}UapfD^+LvceKq2Wr1wHklSdvmButyj3 zf~+N_9go+AF@I7Bu<36Rcn7Fb_>*hA|ACH>Pp?_0KgNRC9WTPGSEMjss;wSlRp@uq zhPjt*)%=4?Lgq{MCN?S$rKiu*hOb9^J5gwUE={MO-FOMX*T_U%waUNN zF{YYa0wDLYQ*xwRpKv=DL?3)L3D8503GE4Z;AQaW5;H z(*3Sa_p>p8zSc`#g~wn}A-+fm(Eo=)0HB)Q=3b%eze*lu>sa9JEoM5!Sanv5T;F$h zsQM{yD|a~Hp@VpYK;h&EP8%M$K%Z6$gwPo;qbFE7@pVfLL+co5($LRos=9@viWWeE z>bbZaqQPb-0@xtj1%v>0qiWo@ZS`*n&VP&FO`*fQNGXnmF$HS8?DCue>dtf4VPwup+axhAf}N}BBLtzY9#q8}Se&$Vtbme&^IqVBq# z^PSjfOZspxUlT`$QAKH;uKCn*Zoc&D^*AV%(YupdqP@Cl+hxF?Pmu4Z4TplJt1tc+S#{HF<23A3sOdcaP#jJFse3%WC z&w69T6s6o&50bmfLqMx;$XzEjr)wMMQclmZ6_PK+e`l6KxYR7c)x0ihj@jhxoONx# z#KVR79lu6t>O4;X)?37aUGnHG<^5mcV+XM1jIrI>P1fkisZ=@Nxk*o(XpkyT)^~P; z*<#Wf8*LQ5)#_%L0-<}`ZsS4{H>@?ft^zCi+*cT zkqOV_-2q0Y8vWQ~EOIeoV0t-BRchhl;1b%7gCU5-Tg<=RGxla=U{{D{ZYNhFGM)Q$K2dbJkN^w0$GG3 zG(AYM5Uz&^ULbwr6;OIQCc~MO^B%CP;aXr-u%Kc70E{G?vAlQGtDyV`Fy|< z$y$M`lm^-+VlMHzt>UN^j^U&|ZRRX8dWAAi3=7T5+p=2ZfC_%aU>6EjrzVy!x)vf; zzVaanq#b3&2)+;(^EzVc7;=#hg<^HWf?T0WLoSx8?rj9B74ppiHC*GU$P{!+0E+8V z@umpU43!8;Wid#0Fsig&N_dr2;{X(2;bpft@j?7y4N4#@ISmkKA55Oh;?Vr9B1!>8 ze#yBrTdFS?i$RsjT6%=+rBq2NVVf+XUd4 z)L?lMiJvPqp~@-hyZ2cpQ;W+S1#ei)zAV_e6B8cpL^x7$ELgEJ8J$XW$LeB z+pR)y*34IO?2_Xdm4@KIM&DP+xSYOjDe|~QqaM{7-gk!-2+o8YPyYF|xJy7QLpHaP ziyiP>4sTt>CU&_vfF@vz%Mx@>@Dx;1@?uC=ju7%+3EPm+ul&iqN;uWAiitiTz4Ve; z{MT+4GX4(YG3~?7R&CZ#%a#(=np({m&qOKF%bnbjp^~>Zlz$g)a=S6{Ry-=Ei9xX^ ze(^S>DD?e{REgjgpl%3sKW7-iZ|-UaxAM>?t}5{m6hZ|uQY$H;G8_Ze0I(67#cKId zA&`yHaf=*2JK1!63#e&m30hE6b2Om|K_y=<}-?3d{(&PjF(cjWIi6f*pxoIIyMY zyd;0*GtYi)`BLKG&NP(+SyfXq1~pcHM;UNtmK8r&kb1&vEU2iVqKP%39M@V~73$lp zws=JZsL|2!5YrGYOs8l_Y@7Q@H{KbWBr2M5X+MEp5cQz2g_M~Hodx->$? zY23`(Y>lt?ddIcAe))IBX?+iz6P(2^lalvA7tm_73)i;)*v#89}9cO@qTu zU{)oO_yH=BUcJnT@hTFn+VwlLb=Q{HG?Ym^PoT1eXhkcT{FfB-4*Pg zrX8uMbs|dg{8h6%{P?S0@mpU51EZWl(928!AJD3w*Dl-83Dd(y+U$X=_^TZ442u}G zrIX1y@{1dIK;hanubt% zf-*PG1$YVSEkfg@kq{_R?C*~e%kluj`9Xa_cJ@_3(`OfY9ubjENZk|GM&HKIY<*wb zeDs@97lhuaBDU&rJv(7;TU~D{Qn0Inp&3|Z!w{=$a+2huyc<_G{WenbqjCce-;q5F zfyEnSLqa|Ha80X^vZ{Gw`K>_tg0-@R1PG@ZmxVGZ`dU9h4Wqo8+AxGVz$u6_djk2{ zub^Rl(zx1&v|SRPny6QNew$8QWpO_A9l5V+0>B>E}`iBb!Z`jSOX zPcPcdFF4$sAf{3*iQCqpZ|7sM_ctikhc`#${C8Yp}<>B{EyS1EIU0C{)PsPG;I95N5?BezbZh08H2$f0ti}}|(Cy-O-o=In$ z=Xf^Y>}KJ!s4%|O*}JeGWj;@&)GX349&9TqKj1lrt1e}_Q z@S?Dz&YEt7wE-+;U8MTRk)`D@Gbyc~Y?B7Oz8KpR-ZO3SjO(|H%pP}YEP|F6K88AM zDbu=>zEPuYZSj`pgtKWOEFsgz*9l{}af`)c=`y6Y&ZMtBPTebZmC`a};nq2IT4Dp4 z7YNso*;PK3L?DsWg6?%+j4}OwAWSCqe2he>X_U=9PAsk&8HCf+*3ZL)+>XD3r~s;( zG<8V#I2=SF9D&GC6*qB0 zLPQ4t52Zj_zZ0ctxk(^gSm~>2DzvAmf?TXrgpo-Mrp&guHn)Y1w9{NyYUt|eN}7s! z;mnH4UN!)$dZZg={?NFw+-xzq29l5mhQ!|GC*pM6bn)$toNHyvZJXjP`Qu-E>))@x z4K1tQ#C6kd{ududd?Q>PG{1L0tKmT-Y(i5Cz0^Rt_xG^;zosKlNjE#24=eb7eb|&W z#mBo})8sIPINB@-Bo5>Gx^J-XKK}qcu%}Pj{{YVl1@3k20qpYk`|zMa=y0HcxWCuC z3xnq=zhop4eMH{GeC#`PKYkQ7g{^V*;jS1{F}?TjzvqmMc^t)PP$N*dH|!I?f5&V} zjdNjfq1V}cZQ?fP%MeJGxg5#UbG?VZmwqSVaSjv(!SMuJ;%)W*c*wzk0Vdnp{X9DO z{d{m>!4cogk1pN+0L$ap!G!O(zkhX)=WJu(z#tut3>YGSMXWwo!^kX20^sfP=Y<4~ zjj@fA(`j9l2@3|s_U*Xw+TRU`#4ey6bkmo9p8ftC;$&h+k@)GZ8A|zS2`6EGoj!YB z!(n^dd*QbrFD`pq^RfP1@aq;Q+Izj&n9x$dxb{zPk6Rv_`@CF2(mrV(Ugp+6n}08@NOX_2H^1IM+; zPTOB$?(o{@4-45Q$4!8+A75MHtj96eZ=-(wd+{YHvAMDEw@-gT@WaB`lgpRa^TROU z7x(t_@!zJ{ehskj0CX66TL4Dm*7^N=F&=E)n_B$$+g}dsDI;(VE1e0#!{{Yvgme^)ZZ?5;tr|WBe zSS~=lweBBZt|cKMAOI|pVZDz2{{Y6vao?sNhBI>3{K&fe@AdF?AP;K)03L(u--n>R z@7?qLu);|so$$Ni;{yn|l^sj4l`QjaS*M0na z`|w=a+^>Ib2}5fGW7^j3;q~`mw)fK9zah`(`QZ5BlqFq0em#4h{r)&iN?0z#UkyF@ zP-rW4@8y5Qc0CW}z7zs>!%LI4pRehM!T{;E!>>Y3>;b=F^Eg!i=x=^sr`PjgB=3m` z0Xy6ehw1s7`|&M@aQ6%~xq9E`{&-q8CgA&sw^R3Y`nDGhZ^D1;dv`xO{#bn}N{z=& zz5PEv{_VTq1nJ^FyT!e{x#B!L06k5xpj_L(zX8+6-Q50IJ-lsxyLY(1-@X$D4J$hi zqo&<<@cy`RwU2(5_~65xZQJX;xBU(!msoUjC3biaSsruaQySo~OzjrGGygT5GXz(~0#;kWd+yT88- zW(L;r`Tp0!fB>+A&yvF^a27^>~iCsR2nFYPE>D zxB}q$Uj2R-$DPWfHi49DeL>f_`%j3(&?b2lYi%|<4Xkf#_~S>aW~P@Ow$`Mj4VD;+ zKvI^c*5L~UXh{ecHwMW_N(dy9F|L}l6{uXm01;C6Ets1fN0z5R02=bf&I%?HQnsX= z&gAF<0okxS+WqHJJF#qi2s2YI`e}L^MQsl)Px?{%JI7LsiO>|jEM(@^vtUW~l%kzh zD(_>k(e$>p4@G)HfD@mi{8=w?Yn~la3Gul%9v#CQzKT$==~qXbvVfd_guSe9VZ>k{ z4Mw{HMe^_CkJ1YsCdaj~Fkr<`^z?I;=rie_?wwq(ME?Ltr!@Zndq)T}inRP~Y;QU+ z*?LLQ=HD+I;Vo|aSJRwnI!d{^Ino8&Hw5CM{&W+Iz*=hV5-NB zHl*A0o^hD2z3TB?QWWTE7cDZ%6qJ>$B&8uK)T`J6Yz{n?bD~QyX&9ojWQ^N3QR=Gg zbI7izmGL}ua5KjVjwKB0xtsz3Bnz`|VdJNDwI|O{NF4iHt5fJjRaDk;&0e80uKZRf zJ0eXAd+_0*d3LEJxb!r?2o=kU*Ca@ew&f_YG^D4FbjOR-R7FY*;-ZeGX(x0^S>Bpg zjxcE_a#}p`i^z*?(XeBbSYxboM}^ZtEl@P(p0=JS>DAgLM5>8okc!Aq1(PI<1a8+V zz@Q9CAn18EvlfY&vQ26v`h2>YD2kUHOj;RjnXo6zVl6J9^*JuR&XZ4s%SFdnM1{2_ zl%;4%X=&1M+L1|J!)K0Yv9OHylEl>S(x? zG?7e@nx3utu*}UAu}1GaODRRllgLViVxf_V1l(f&aKkXwb2MqyO2ml&0KH_TGFL~Z zq`ea_MK8FPX^+lGDpgReD|%ZGl)8{X&@`wcuy6{wt5R9#W$WYty&fT+Iz-Gu!qVz` z;zKirvkUs7#@wTg(m_J;!A!5zM#Tk0t!XOXAT2sVbP!mDjgsnh)aXr$r#Y%R6i>80 zmFzA&6WaH+uj7lHCg=(0ss3l{%M}TLS0L@W_mDOt^!@QI)GVE0!V*#ev9M6{1w#FW zhTZ#N&6{v^18=P`#bJ9DwYhkB5pS=49gG4%NV%~+ZMF6`w%xDwd_8Zb%zc*n7)RLO zd;ET{z9g)G3EOSYi2MHIw@(XT#6T0a2rpRJowl{Ebe@+Tt@YGlb6i^beRJoo6s}!O z_Rx>w{XB5XvH60)bvqr;wfw$U?s^XnxInqI15a?nmO?kZ`C8bHB1j4eNV&PT#DUxb zZQHlVlYlD?*2lmdz1Vqm-u`~wd%u=4kfTUx3onuF9e^a1+iQ4ldz)LP{Z1y07z3HS zfv~rj{W+bxppnp!6nUNQPNaDEdvA)t=`F*2!<%W*DwGB&S+&Y*D<>jmc(Kt6Mz)@5 zb7<9=iG^CH)WX!-ml#yNT4`;xdlu1(A5C~2R}qD3DHfW!;ZlF1>k$NUXu!!$P@P>& zQ<6a_ChFv{2HRrk(7rKA!|El1sp_Z}Vgm6>CvzfMmBe)v@^zHb)7UT)bvfhAePgaX z&4t7a=|ZAr{uyxv{OV0gpE{EB9<4G$+^L}~!=|PaY`Y=WnP4Pd z+@d%*;(SVyn}~33Fq1(=B#P#qL}ro+qMDtTER0%U1W<^=vlUe~)L7%S$-;PTRZkD& zd>!GQwls8Fh}{-B;*vUrY|*G#Nis}iET{`M$9!o~_=A{fxlTSvr&MVwi0)*8o1oPx z&Ps_^rc_yuxNb*kT3UwkWQ9J57Nsfs7D^aU4!Lbwaca0ISBAqh1|wM)5RQ0R(s*V> zF_c!aFmhNiB)J(5Pgsm>UxiW6#2bmt6yijqmV#I%>ZF2bUO^ysjF(cDQlKbX=DYg1 z*j2@jGvzm?K&oea*Aelr4zofBcALHeAGI7QL^1 z&22i>Q_sWM+A4Ra$ZBJ{)C|eh+(-fY^KeUL2KP3-fVMSnN^UMx6x}jZjIWax>^ej6 zoS{>bnIy?>N||4*DnpM;ivPW>nK7O=1mJqR@7rD8Qh|ck}kV4sET4b-yDkQ=+0fekv>WW$IjF$$ux0W;IKC73gX13i!F;}>OReDoV z)g8(NdGcL)6O-Q$f2!0Rk0FJ{3>OG_vZW{`Age2*eITRakk3g;=^|>nzAHOAu2V{q zyR>a1<~>~58A=5$+84O6Cm*DI0=tFHPgzsw#yUDq69UG}8EVW(7FCII{p11BgXXo> ztOlnWtr?jdT;Y>YC1zTc2RYH4mqVyk=+mS}pG~jQU3wB3l)%M6vXQt=vglA3CWBxI5rx^`%T&m3|B;zdy-B!ej|O6jgOl|?uQ z8fl}VhO38EtaUL{PZGRSQq%>JmKh|BtY$W6MR@E~Duz2^jPchm@e_h{Dhx>!ZXZgI zCa+GY{{U)otf_RI!Bvw=bE&Q+ASybbPs7lU{y9jzoFNgn6{eI82XJZJMPx z(;IS0j~!}xQ+;KnII_aqWdJB*p-&GFdUF!eRJ~KXG)!elBB!&6!p|2_8OkBe)^&@R zlp#RAEY%NOwFYOcrb<;nvM*C4bJSfkmV$1)gwEhESCOnUg2%FPXzL!2xt@apg~m*g zTF6mj<&3EkthjF`WK&Y8!4AxvYmuaioias2VOzBK<1;cFTGGlJZIulwy-U#=%1EgC zMZ+q1S|t?(bC{S&opjLx@*0$JG%YlMv`m6TTjc>%i(-*a(z+_iYWh3GsramqU0)?Q zkxXyY#VwZDPl_tW#)WC<7H2X4dsefX`p5(d7_Oe`ic-?#-gIiZT10rf11!6h=DLei{ixW7o|;-Zck>RPm|rgoGrMW2bvjYj2C}>!y13C2+ zf)9M)ucMp!zAj#@*JRgW}kyXz1reTD>W1Dqf~47)+7@GPHBdWz4M%U9t==gEaD#0JD`s`Ev@lNcv|V4r;n; zWTuk7VH9LU%Oo&}vXq){y97*)q!9-vDrR9AIZvdti14XU<5H=Rqrj&_X$-}K5u`A~ zEw+TVkc2i83W`vjZYxuctJ+$LQ75!gM+{J;5XO+kiULN86%+wr02U3lq!%{#R0BkLMY%Hh?5v1xn1cT#mcYm(=$i!@I`|085 z?DNJ9mp0SeiS4X`?2)Uu9f05Z5PD*DVoKcKT|K_R-|X8F;nb-0-^Rd>gW2hOkE?aD zn%&xM_3qOK9Sb9_{{UV#!F&1pe{1;Rxfi?Qe_SrxE%KBSLiM zE&7}MM~1j=97^qAMgIWWC-VJI%L-Il>+1ZzzO=!K3BPOGz5I24I(pmj!*F5bCd0`? zso#Cgk56jeeZ~BwLC?ESuYMtB&224gK7gwLMf=$8w?KXV@5FB=8;8=8NZ9mGkn!9O zpBs-0;y{C#Vg7J9E(Ye_|CO9}Q2&-bW6$(MoQwvIk!s zg}Pq%@%Z+`hjH56hvnVv!V)j1t$)ha{JyV;TZSwYO~LkoJCW2{-M=h3WAV`I-@m&7 zkn9H9Ywz&y@x-9m1Xx&h^A_8;Z$EJH!>w*yk3XMg-|1Vn_iXb-5Nd-CY11d@$i+ zH{@;Jbknun;m-`hlkm4r-TwfW;C=VK@D5+uZ~E9Uq1T|k{e7W+)*X$#-9_)dCc%O` zk#7(>Zg00jH$6J+d*0ZNPF~;31}ldHdS5>jkn& z0EH`ZZcZsZ7?6%F(zvt*c$9Jl7TB7F&E#$_d-)M#i+@Ry{41g}0!VHbBxR1Br4;R# zzfRVjz+%S_vVGsJ`>W5e@VAA`Z?*g}P$v5Cd>BrXrB*lI-z)F(!__&FCGm?*7gEyngI1B*W)x`E~NajC?e=l7ubAs3Eq}rMTjV z2}5WFOL0Y30VqOBlt}<26Sx>he5%aE1wh8;z$gOblc2B~lctz*s3Zjhl5K5nN$$19 z*|brvryg!*-194mS*JAdLQY<8UQNgua7W1u*BV;sX0K7ML8sDcQ)$X@GdfiF-IG*y z1F9^DRM<#;DlH*v;XF@@%f`5sZyS11Cl29MnK)`xDKL6O)iJ{a(?fi+yv)x#Ld1@) z7=r>pC$@0z83zR6^c)c@417zA)@I^uO2KCo@Y6{&@WnNYMI1_r0?MN|Sv-YExdL@# zkJRWH1*%A?8F$auAkMD$TyjaG04I6AFtF3^z@A#3i0c z&wiFboFqX|u~ycZ@5EM?qBw+-GcQ*o0KeY>lthxOYEnFl3z3wl!>8z!@5P>IWR{YI zKt~RGx_6Yt8Y$}|Qp`*RSjh3oBXyD&Gbkam6iwrA4|2sJDQ;TxMrNxe*^{aC;MtQF zN|u6%l3#7Lz=9#QrI%b=&OXu^(A0MnwPEt~vxD&HEG6{n%7D^K3;O=#UhKdPAZ5Qw2$HB$ z;WtOB&54v7H31bou&mRXXFV=r*;!~4PoPreC8RdD7X0@kwA-(tQXJ)CDnGOco{`j3 z%_>kJmm=i`y1G`9QVvmQsbOHC5?WG$S;1qM6V`MZNa~V9Q3OxK4^^DpiW(S|A`CNs zg{q!1ZWJs^`@h8bg^j>wXTRF-K}-PxNiWm^J*H3uLqnVIsH-O+Rp zfzhn;$sCpK+h~mJfGk8DiUw@5FuKTOVl$ATRZ}oL613~pHM?JzCS2(gCdpH>opr}e zq)Lc^RX|$>POO8Lz_18|F}d4ZWcYtoqSB{7D>5?dnqvZ}!*Qd<^_Qil zpu!>ml_}OxhMP~UEWCv!Xj^DXP1H&84Pw8Vzfs%>jSPCX%z;ZtiX?muUo8DgiZ;>4FV8L47Yi~__Z zSsa$k!P?QFBoY*}t<8x%W9cS%BUA0HrjbxUn83w)H4z-ak)M=-(Rl$Lr`0Usb%VRG-wbvNr0HvExAOeC zVd|xr4R!pqzWd)_KRjTB$#WDNLNv0XQu38>bN~jFe~5Jk=cu*1V;`)NLuD2O>U=G( zQ@#0k-_IExRB5|ig@^;ceS9r#d3$h6ipyv%B`G`KblfXW#2)7M*paoi+XhuYKmx~G z+n@SAJo)m&gA#6U*}p%Z_I&<$LothKJ0yZh(x3=BwgTi^-R1!6fk7i(u1&s<-WKJB zXIuE#T=$>L%e%ze4+651-jINxLW(Y(loALQum?@X*CO^dwiIn^TKXG)*ZAl#-7Xt7 z?ccAeKP~z9+Sq`&EHZ?08wt`#DNf`I_E84j*7n-h)!Yn5V^jkw+QVA{d$0MQW+m%c z$;@+J!tJ)dzdnA;l(d96u38onq0|yZ!2_pD*lcak-s5eMYHSUxcKz*Rw|LZYz|6p0 zi;p47{{X+9w!~#FCWpgiWTNAlVaibk_ez57Q-AJ@cpdBzG(@-rk~F=BUogOn_!05f z4kAF&lVN>r&)O}eyZgQ|QhB91A8jO^v{`B?PQ+=w!QRKiW8_l7fV(KZx^|7fA%1<` z`(aJNH&!;br?N9_4%&~dSp6D32nL@*-$W$ux1#p|M&ieA6lF2E?0iRTcxR=;-7D!h z?&%L29_}SlG44Kze~P^s{{Wl(8~xo)i$jX`EEpItWAl{s+>W;WH2pB7NRac4A4)Di z>2AnE8`Z^(-CzO|g=q=W3e=^kb_%%M2qJDJtR~`4gUZLIL*$apZp_Ht&R1)^Z)_#stT63Bp*|Vw~9)Tkb)4}Q~@^& zUA3$L4fKGe8z-^G^QK4#pFyY2`Z3>|bznIcf< zzb=EoT!sYeur~9=Vgm5I_L$redSI{I~GNH`d)kO5A!hU}`n5hnpgD({bzf3|Ov`RZMUPuWx8;!1fy!){^goL}Q07k@t-OJiF*M9+w%uN#(UzZil zNdSW+3y@Ms(%O%*J*#^{+_X#LXljGR^uaAZM;~scbnB`GoHa64YaeXxS_hnPg=($;r zo+KY{mpo$Q(BiP7M0N^^)K-)x`vKHgf;(<4*TmZ$DUnI+FD*bGK0lr9iQc8;0B3Ii zNw&M*-^&oBW#y|+Eo+YtSX+_l>0%$PsV3k{b+!zb6Q;>24y86afD7GGwIUc#1CQckzAI@?i=Co^#2d5$cEOByj@HH5Ox;hGqx6X>+Zy zw4vidiO|HQq_NK=q$+x%>bY)I8<1_OJ?9#%e@Fb6C8uN0rd1><)T2|5&TeQHxprAb7mT)G=rbClzbHn-G(Qk5wzt*vDv z+UaeDA4IrS2`(c(s1^=M3N_Ku!>^ixe!Ats`Ckn5NRxc>lD<;po*PJ3;Z^=n^JkTn~XByLXkDzG>A^|icl zIZN&UzcMZKd(XcRUjC^%18(mveziC+S4l}dLF>0}y*iuU-a7Rp;k{Vbdw#w8bHRHX zT$_vXx8!h>5x?a@Be=g$KA!P^yQsmCcb|vphvz@V;mdySKaLnNkZzqmV&?WB9~+BX z`eD6L*5k+cy!m_uzgK5(1NGr-Q%_8Ko>+&Gp=HXcsV=itm}b!!rN-xg{2fSj$;HJb z2#TiMERe#CfVBrXWwa=sSN5k-K^F*yl6RccR7ho}SW`D`F05q+z#$Envzd>g=xrdRA$J!b_p)#2C%Z8gWl}R)uB;qvZLk_x>1%7>j_RRWH7voKLJHd{L(2P| z?m2Dh>x}+cfkLastg)CgRc4yjh6_AH>Po2zMUC2*K>BIV1Q5i<;hMqMeFRJo2gq^bUHq=h!aC`bqk zT9oSb5)ww^5WyKkGrVF##Y_stq$HBr^te>g*DOn4U`8{9t|Sq~9ELoh#O$CZQDwEX zF2_@0WftEMkikMqN=d$wbONAMRbn>;gIT7$&F}H&dlT`*h3>%j zX|0q61G@VW`|L3mY?VWKQM3dox9y?pEV_N5i8H8%s_g z1vo(^I#QFNN)p-np(~rQASz|mfVXP*umMiy!%Jyw*ipZag?3Q76$g@ zKn<<1sVvHm%1pIJZEm#GhMQ8DQ4B9$mr77vNO@LTgG#!A2`WhJN**u-g$89uwbuDa z(AZoC+=2K`<4qDajqYO($c)Iu2G!Qxl1@{U3v0EzH^$JzwJ5<*rALn@8B%p1#0Zge zpazI3P0MO+OS?qqC3=>n8w^D9%n6CYGc5Me>fo-f$XJet{F^X0eJz_hgw$SIg zSe(td^??i8+ySDC;vyPoy5d)Mm#*nTLQ;^luFFCYrQ39aVQ>&d?2*1P)j=oloY%Lj zl;2Trp1Kjs5|%2W-Jk(CH@&jv1d;FMd-J}mB5c^9YfXyo zo7jtll_fx71d=9VjutIJ&>PzMh#H+vns{h+7<)w&fmP6%bZzXQorT4Xz}NnX<&BO+ z>CQJD3zF)hDQzx%6qJT$p%-qJjwnF(TU*5`Ae*BZK+IIE5AmSB@$t6IhgoU*= zDk{cum0%@sqF0cVLKv_Ma2DE(Yv_0d4HK(JPw6u$Yt>adGmOBg>SMoE9C=-aP^?zLTs1?=bn8tIJBO3f0q5ym21#Us%-U`@2ks*96$xoce7`00?c z)k=pA$i|SA)~b|eCeviN#CM9R+SL5Ys^zLugiypt=?xZisU=njFDrfARCCitRKNv9 z^yWxdqPN`=URjK#&OouC%aq&`YwL|Hm5|iPuh)}L1xSum4CC)e2^=CZ80!l=oY{i| zYv`i*%ShrbR?2i%Xq-N$R%+Surt32+Il4=0rn^sNEjpRBiZf|*)>Z2TPPXIa#1|td z6)j5Tr5Qic^i&X~HwlKKekn67l@;y`EfR%pvYwqm&U5NBmIaWDl57St@QV8ChNb6xw`P(&>@V zh0S@&Ot(=xVAW6thH$EGnSL{*NID z^S#TNNeaZ1b_xmcpMvyLgYf$KYw2mEYN+Lr;+csNs?Lg8DbQIupbM>l0ZS01^5d-L zWhX8ix|tGMZBkO>?L|^j#J~y^6EzxjI@@Kj%RpU?!6Q;Z#d&K8r1U_}s?My+nk>5; zN-cH^Z3XnW)0QkxMh$1CG9wU$RKKkrgaa8S%3Akp4J>YT##W;xnzb4oDTa|xG=R6= zT9M6Eg+5tF`n$TylE#!+w(72z9$Juu`xtdZ!dPRcP$BeiS&0h8vt`j*_X+^9RyGBR z02>Tr!5M<4S(%K!k!4UWp#tV7GTOzp?63yvq!a5}7F}{oNn%?IPdTn*DM=@o+mAF* z+l|-@0Fvs^v@EF(B?}{E65$$UGh*I!w2^&Pp6DLO$~t#YE9sHHdTOb;}y&m&0g z?|ZW`C64)tJonU%PWV{q;XsHZMMTSGRU|0XfG@~$7t`N}^!37dMRI|4&uc?R*jZhQ zik*L20rrSeLhh$jNl{LsaFH}@#iZ>uua{y-yIq?7_uls-*4J0eC0hvWiKWiq0&R6$ zX>qw8sMr&U4oY#!E-fK$DJjrPRv}ADOM2I&sUZhRy{>O^1mbpWX* z+YLEtb!+X02*8XE$hp1R`x9~n_dgB1Nb0#_g8J#Jtiy*(ky8>Nvqhg$$x4>U1OPg@na!1V zC55-f)vG89Lj*F$-DF3pj5ucM<3Owi%=SxWZedPsak=HHC2oCLx8czzOPNuY8De^3 zDaf9_Uqhg+N^6wiTZO{&X;Rcw_0*t%LUvSC)iTbl9W=5_Glf|MM90?V4XMkNl5dz@ zjo6#o;~Lu9nrNUYB}{RoG3IECfhSZHu7I#`001cfdb?a(9?|+Za6Qf)Ly?-ZO;O6$ zcCE7PXBLTWy9OOJxWbUq8d_3$>stuAR!SqZ5Zg&gwGrvAg>+%KJWpL+GgNUZkjTVH z%@lCmNB|Np$0!!{P+3$BapxYG^q6sZ5{8Bqr{T249YH{{%Qy@PBoYdY=TWP=n8Z@4MzStclckxd?_RXEO4+p+Sl#3<$uQ#VQ_dbU|_+9m)E8G zd{1C)`fBsTQ`H{dnZgnV_yBBtY(MR7Zw{Z16p%OWC*6g(8=GMyld$bi;#+M_9#epaKE=>aH98(Y!|HgA z3&Tq*!%=I)B24g+Ikw;rK&`dp5#v)kfg!mwyG7BkVy;L z7PpP8XzYF!`b_Zls|z+mn(k+k9+@&E25dJn3)yfYMCdzWL=DbuBcp`$jVCw=0)$*-;Q)Ai@_xW#I#7I86{d+ z;2mO{CPKF@Z9}8>N|SM+IIs1rgHE3!WBHecS>>$7SgN@`O4lw-N)^`OGLZ@XQ`(f{ z#V;+{1Q!(Z%1J;|L{%zyT1fIWZw2COS5Z)Ake6ubZdM=?tn@^n&q#uZ17(bfe~)|sjr zS5k)Q8nPE-7|nH32Ioypr;nx7^onT50j#6#H&h{}5hE)p&m${@K_SXlG0bh3T?QO? zAZEttP0E>A%MLwBn#>Hm#Tuf;E~J>Kl%zW2aFokxkh!Z%PX}j7REF7TsYpteQ-y97 zT(B$2QAAz|7Ai%jnPHe9av7F9ps|pJeA2mKpxgpT!&8e;G|e1z^}%P2rL1a*UU*BC zx~oZ;fsZNGWl~rLg9Wnh%Oqgta4Lrp-EwJ!*$ZlUDrW~peZ=aq%l@hH5Eq=1OS zEr2VRM#i8;El&`5mZyu;DV-x};HMH&LmKFE%1Kz&h08EE?GQs)t~A`Ym^h;bhX$zw zAwU#G3UGxcxj}lO%*O*rW-tqo(jQ!T%TZftjth5iXj)UG3<@fqH4Qvf5b(G~J)#lG zQ%cjTn`KR0W-BQ-837kJ1PfzhSx3O+sg@adw5?P+?y@>+q=lnW#hlq0lt~?cV)i|f ztPZ&ERN8N(27h^)U0!}p$=PBHOo;|XE}082M`WePRVBJ~#+-5Kag?UnQ@qAdhZKz^ zc3Q=vDt?slW>{(@;oLroB~baGhB`%ENp*$8Gdde7Yp4d+xV|ct6LeREhMowxhY_uj z+b&7wlC90cg=wQ@3mfX$O0ggjrNBKShCYoAR4URlC1*U-D$r=N7|`SlyxJnqafKn& zDk+*o84x{Lhmho!(CQNUTTi!QtZuj;Le@%_t*GKqPX#QC+lrFOD@SGqKCqacAd119 z0->yKP4T7Uoi%9b)`FXcPfs;WZE-DGGDNL)D&jxANwd0@Mk;a=NnHW%6ka*ARL#s} zoUKo&=1N>C>0+Z_dABA=oQE15*6FN3jUE&x8j|8#^{LOb9gvczQV>-m7OH-e3G0)F z(8V=mG0YNbwo@ZY2saR6O~6c6FH6{znx#M{4K>I$DibRcA9GVoxlgG?i8dUztfe<0$nq5? zB$AL6hnVGp8%ZnXUutkuRJbw1Vw#N(XKSkUQ^y>U$hIY1qnRUni-uclE^pswa#TT1 zddZe(Dp++&EX=b(B$3G*Ud2NoNmF~P6TR){&02vvB%;Z6Gu>JmQ8AVrSyPE`W(cslI(nlde{b?!)F`JS|UdXT>7aEXB1nhCvqN|D1FjEqO`Z%z# zEp|DH8FV&(#4JD>+f<(s@Zyl*Eh(iZTE5e5tt0HHr29&2=}LjrLWPo}+Xdrn`hvMg z1nv~rj(52hv9`oo+hZy>LM|-9fdFhu-;me>0V9(FG{n{>O=M_lQoUW|5QMp9Bmx48 z(3PiWPLhD3Vi2Y6VoowqZR?1H+TpbqY zHMKXf<%vJMABO2ePapt*;?vC<^@5~r?GSdk({Es0fox1~9$^_Cu3_5N`&bLui*C0z z+-Y%y>QY6!slD=pmrENPYA>fUcQywd7cEoOn4ODFa;XLqrYthd$>jzlXI7-42z6Y> zKue2OkhQoDwFKCaryH&vN@`j-4AG&Hf+Vv40E0qJfMakh%xoB)&AaiZt&~x#&ag=! zj239(zgWrvB!E?kuu-5>peJkNP0dtiXqBpsCZvR+$P(U;rJ=^w9aBqNE~yJ_td^4M z9SB*qz|@qEn1a5Q=;~&toB(2WQ>Zs8#YwooWH4Y2#q2cvSlCe1txYsl5R$@FR{(-C zgW3Rwwb-c{g^s#h;{_4#Rd_szux06G#?+aR+M3aAh>Ul1~OfG#mZht?!keMLla$WZJ7wrwXQA$ zE!2Vu7{j?Ln#$M93rmSv16sn6;8IioN>WmW#ln(6Nx9N@0SOqb)LiI6@iz^c_R0Yk z`E8)lMnFlJEyy5+<+j_Fxjc@h+w&&*YE%#2P^QU?QDIUdvgCzAdD7F*Auh8VA|eP- zdHqr^%hZy#lD9&KD|sNKNn(-KL@tWY)t1V{22@a&zGu9bwudPv@ZuVYj55a?!pg3} zI>k^`O_}c@(<0?fPPSqbo*~1fzi_#1KGF!(Zk3CrV5}`3I)FVDW4OO#8c`tDNZmp6 z8|nxo*z>=h+u}(o1;~xnijp^73h8DR?AuNIwBH$J(qCmduF{ibJE2HfQdzdnEwBaB z3Axgtas|BdeGDiWK((_i^AZ3jQoYB{`W$2WKx^ADwwD?U_X1A-&pi&i)hmZ@Rbxbk z^vN#Eksf6K0NrstUJBtb(@W*5qWr>8R;9KidYB2C>~|ScXeDU^%}2pH*dmRjc9GIa zOevNpi9)rEto@skGj(FqG8JGBWyYGLj0j#?Ry0`A02%L}~y4ld%AT27+ihlH(&OTa2!xFe2I; zfvDy=Hu~Qi_@wJq4rE~4WFV;rY`U9VUsJf(Q-sp90~BctzUxmojceu>32IH&f)-Nv z3RZ#+r8aMSZMg(T6+*=7?2N!)HdB@ROO%kqm5$c(@O?!y)FDvH2(VnkGWHIaT?P39 zd@tRNzN4ApPLt}Xhp8?_NJDE09F#kyn=K8Y8-)n!2vJ_Jl!Y4r22_$Hvjh=b6zqdx zkTrm~P&5ZAv2AV*^cdH{M=WWa%VMqxBK@MbBE+%WX4C;|w=gm9teQ+0m~FSI@q=UT4K28#1+c?TAt-saKqP5tX+T%BJ+Kr#c=4+M9Tb4M6chl2wX&%IFk5m`4eWVi z$`Q{pIc1g0X3WGnU|%)!uq3M+jR^xyFJeY1#~8SAma-mSom9#68bd-uoSKCyw^FLj zr&L^$>vnml5}uP0`HiV4akMQ>B`8YGiAq(DebNpUOT+1!ULQ>ghb3w$>Smrur7p@# z^-j)>B9OKRC;$>c$__d&M|j0&6|0U8BUL+OT+q);1QE>;P}(%8vAUrIs}%&?je$7x zV=(Z~Hqj>{bw?)GV4|xvPeF`|M8;!F4jy)zX=$x4GNfFg5X*`U{hJGna=P9NT}ddC zY6_T^qD#br85JE*Ywk*}tA5cD<{)kOvDs+&-w&yX#Samsm7tE&NYxRu$77f8uGb6+ zu`&e&+u69t%p4@AM`;x-omT$SGU_5dmnJnLg&qP50CrtgTMc^j_Y|Ra*?Cc2T2>oz zC_dIRq^sZ%g;}_K=CxQx)N%t%kpc#1o<&}^Lw{9!3_-E6*BbPtzzXYK_f$#%eliPM~6B}pUTWGJI}jI%MWF$lZ`r+sVWVzRIyN8 zVX2mkhg=F<2r2EkcD|+6p$Jl!6YRB>P=GRnEkA0V3q)$E~2^FC<77 zxx=an>qTTCmcZP+9nYh-Kszi(wl?UsUr7w>>M$~&DuU%9sF2xJN}_5qqcY;14zTc5 zIZ)qI@!CofS~49Ef$a@sgP%7`_?K554q9VR)x-?b8J!T8%&a=1jhrY0D0VD-bjF?z zhw$FETKv^Qp`?+zn0lmk0A+O|VIqWcdp1SLb~*!!k)G&L>2+tML(TM@)~V$)HI~$94fzjo^7(r)v?LyOI$5j+zCP_NG}m5u&9Mc!PAN^aT0)jdKwmU8E)=8! zt^JGKE5hmfLm8<8%c`kRd0zJ0+AME=Rz4WTX-s0w*ERz7%b47N)*5TwsJ^2GCX*qg zt>(%DC><4YqBaL>Slr)xjfYS`!`_+HW){jj?{Yo-`|sy%@a3qCkf!;MF|arJ>HM&$ zP>YN9jhQCy6blsE_auS=)1)K-EL3#rzWB*4lE$)^d`i2A4@{qd7`oI{OSkdG}dZQ42~$aOhG<>8nbVN=O3ZR><)D_B87( zw@l278?zz5Xm&GSQO?AY4YtO=`a>ne?+ie`Rc4h@SX)9%+Q!~s>!&fA%XvmThl`a~ zDk!9(wK(JPps8*o=p_phl@0DoXWCk<(vnZJdy$E$IBL6|y=D~PT$GHK8Vh#%w#YfQ zmeSf|9=5&JZ3Dt*Bmk`_0E>%^fo7}V<&$dFR8b zRYywn)TuQ@ihvrJK`$5pDVm_d;g#8jYqTL;jZMfHzjE^>7c5Al(U!}}T}jrU(;~-h zOCSW3bE$f?G=!41g(!h}kh#VaQ5@e1Ckf~y&sgBXi3RFRN{a5H`@oyUFpoj*soRTNfE zA3|mY9h_6HlBfW@O6p1zZ^LbEY-cjXGP6~Z-8rcfq@m)X^BUCR7Ns}?dQeo`ZaL1< zq%@^}5lIPBf{(SA!{Ml%)+K3NG3~9%1d=l7N{2bM0G`nnI-FzH%}oNCazuq~mFyIY z1ATi%dn#_g8(#W>k3)Dj!Cajt5AQ0HBW4*atvcJ7-Ex;Umn{lG^=TBvOKvLL2bfEr z#Y&t66ohF=>-`_-?+<9Y>4H_dokW7B2_TRVax@JfQZ5f`P)NP3ZH`CMK9TVhm#Kig zBy0_eH8k+0w%OtK6G)6_%nf%x06JrjVA}NF_lDNU{<&600R3B_TwR z00SKcB~(DFEUVd7?f_^7`>&@xHPdJ;vYHe;vdu8sge_-|NrYhnG>dzYI9G3P2Vo!~n0E`tZX}U^l<8 zZHBAd+?(IN_t=dz)AYk@VPeNg2>=U`Z?3-Wu_cMQ?%xj#4wu)$_W5Dfijbs$dTg70 zq2+4>xF3Gqu;jh;8gu&g?TFk0f3!Y&V?5GHY!!p!)Zf6L4gH?JR@<&hs3TF&$Ls6E z7{=E&+m;p*2H$8Kd$zg1y9!sed+%}nsr@jR769LCZcm8ux9RWrCQnySKcDJ7+Tg$d z8{8hs+@0_7z4tfy;!GGun=010>M!2g{7-Mb*f3yeBo6-ocHITO1HXvd1`H4e*B$ow zc>Azm!MM^^n<+OS54zpHR`1&pG6Hqya&ODsy~(h*#|jA>955JcdpxjgPQ+iZHx@pB zak%e<$hOd1`#=HDZ7{jpzu-SiI0XQnKw-bE0JmT;YNyBMKToaj+$|%0!TD|9t?@Pt zI+WYTbMx`jZMORDgaF@iZ}p(t1{H0AH@5d49c}aa>xWv_xaH6Dw!UM0C-GZ<&f0x# z@xsNga1Psa`1}6=J@@N_-=?0f!}ZtS&iGE>^?o>BC&V~f3BQfE-^Zr=clld!hMQcm z<)_2*&4oVS3-@xwgptsW`+Rn{yT4x84uiX2&wtL|I^i)T7qPIo_uJ+7cwyKuU|UhP z=il$}AA$W_lzj#N0NulWec6xK!wLfD$NbN4@c8xI;n-H#`5%@XDJeG>KZwDIFodVW z<8pd->U($mFaSqA^|kIa`nkR&&*97C@7v>t8}IP^@hTB(opsm8zu~_<@g5IQ8=H0P zMeXzaFNc>)X`%Q2ZEubYMO?HYVHP(hP1K>MzTlzukve`z^oY@3r>d*=!hbJDZDb?QPR;!w$n+ zZxg4#=;75ZARYI$?Q!i7E}k7Xzr%A8g>NrCKYTaqL=cdhl0Z%R+u`SbA$%Et<*n^| zo_<7k@7?2vh|c%ef_?u0Uq1{!WF%}z)OrEl$A0$harj{~TYmip_x5~0o*9v^%g*|K zzYIQt7A`w@+TT62&*b}!-;>W|r`)+N9k^$GBK4VL3-|_b8gcjw`yBH~zJ8KO%8zk6o~VGee6QefEOVI+vhvjHYxrw(-|V*dhFX5CUogM2-s_SG=6$1{HWpL1rES08 z;nQxPUuPL=z2ob@xQ`HjA~6ZvpEHSxN=O0<&@%^yi z*xUo-*UHzv6Ak{ZVQcu?f1};wgSp>*?`sj|Z-<44yS5A^kB7W|xQhIQvfA9ZB{$NY zRwY3D2`0wCn}TpRS-!xk#A%Ff`T+*;&ZX{f#IY{J9k%NcS} zva+HO?PHjW*qi9UTT6g6vHt)#>4({?F!BTZ#}JnWq@_e@0@}u(8=nOo$?MQ6)FS}d zoB|7LupF(fqvwcT85NjWPE%q={l@!!ZH-#3Scv?Xi2Go;QXUVu*=6tuYyh8STJOHA z=_1|jj9I6Ro;@$A?Pe-NT-wB2e?EQK*i%!;u}E|WFRPVEWZa(C*6{P^jGZ!cw^$9z zY=>J?z;Lf$F}`Yw6itScprmOxJ8f}^VwOf+u7ofoX1()^k_&0wVtcl|@eI)-u_${a z00CQA+q5ll&i6Mx!x?D^OXzI5Au+&o5UoK3n|mOgt}aD@JDYf+8sA)EhAPYg=g?nE+Wq6T<9#;9o0`{6EG4B$OOK-I3R|iwYgLu4C^pr5UscGq z-)L`vT45>_$P0}wTI{zYQaSIhF8y({pc7`zlFD_mudQy#0l8Y|O9RVna~1;m?kStN zhZd!+P7*@3T$KQJQm^fIH&xE~(=GE7HYAcsz0c?0bKXVHH;rtgHI%3T0l2op+ktD2 z`*OA}FQ8h&{W!f1l2c`;(y!6sN2Rvn?oa95c-!#ptLZTZqdg-8ZNRv{A^!mA6X-`R zE#I~_eHsCJOVQ(f4;|q)*Z%HXe5H^=FBj~nCIm>4i(ruut}`U`q!i(dYTzLA37 zH{kwp7RK+RKjR-q{{ZE_75@OY)8k9hPw{t;{{YCmSN{NEpC6dwm&_yhdMpY+z0Y3{ z4*`30?T=lvW-HmS7vH;|J$K)~e0eEXC?@^Kzx20@cjlsWj=);LBY;W6>W( zY3Tu8ry#bjOT{W}_LY!@FIF+MPRF#Y09;PRFCP<_($YWrVgZ>TdLbD4szhw=MG3=giQBi zR`Sew4JKR|QRA?~kkcv*X)UGYIOCfkr6OqoEWai?N?usGQi&vD^{kaNYT!u}YKpB8 zc#*(jOKcBWpjKoZqp2E;FnH z6McP}V;!MoT=&p=!u_pHy}5aAb{NWn2Y|8uTMu~J+y4MuPp6LiczO5xF$ovi$J!hI zm96aG*@w}gWbO&-MZv$9hf%+X9vk85V|_n|-Z|lf5uwDe%ScVaLQRd$?`zxPq-1{Ov8_h%m&t5#h3@Gz3Awt}Yb79pPRF(y@+?5Kjb+Qv%aAfp$w4hNj z*Be-qia!+Mb=)#ZD&~v&Lxw!doWz+b_;f_(c6EsvDk-8(bC9wr(pDBDL9PEwnRpe)#<8ba7Ike8*dth0WnN{CwRw^bL3Vs#$T;JIjL^O zVsw}?X!CODr^T3=Vry${YN;_vE<6JZ4k-?_wg6Jlq?gAv;DqZZ z9HEe1$}-E?O!h!5=d{*V*n*moY{xTOQb$ul#Zx*oXRKg=$a_obuWVQqA@l`EQNPC;P<6Q3X0uhO(<0^CYS8m^S;6*BZ`e8@9eDURc5 zTenSzg4EF@Jxfx{Hx`waIx30gg(%@*z^mq->P}wEBj$=lIY$!0?1svPfALxh-(GRG~3-^5k;Oz#}j6v|~wn5rp*LaN}eT@ndhM{QiM zS0`2px+<-dH-?qs@JB2>LaCA`v6h~siHoI}Ln|~flVoHK)IQSAlTb zy?q3gRmP?xMKZ^A&IN*Jca8)B*$v+{tQo8T#=E7QFOP8&7KXkmN&!tEu7%#skm^oE zNh%n!D=7$8_bN9xwNyV!+J0o>GV;|vk3Ccvw730b*s$i;E3+$UWtU%OmYPCcjQlEQ znMi(0RP1Td+j3k-LuqU|(5ZTN4R;tcaZ^p`$pdF89Fl5W9NAUtl%9IKd|ys5V3@cNOQ zc+{GVI{gDPW;(?yGh}Ge9HKEjm+B6-%|;WE-)d75;mBN9y+OWwwa0Pr^st2x-jPI{ zA`T(aF)US7wUxCnR&dmIrdd_xA!Ut~gRGIUM(TlSN|wBqI&T@H;`JOqqkT-2wN!L) zPe;VvR;A)$5G@RWm7{3nKdVt<5Y!a!fM&$#v#asjcY(@Ve@s=<{7cPsL%Tt?QUb zwK2vJ$k9dCIgUds^?7PqSu(_4Jj@xCZD{&B+)jp+@fD%s6&xmNnl7abW}aCY#A_^_ zQVAniP{>-FBzdM(lPa>SH!|W!5+rBmqANQg+{IR-R2Wp3;7_bKNphIvdTcpKUp?8B zxGJjzw99j7t;aFyF_d0{@?J?!kB)J?qcT3;;K`YTgM zI9P;eo`oHKRb0{+CUXpNicy`MME?NcQ#&+4iA5o-a^kttxT@*hq-k0GHRvfQ;f)js z7I`E!L?Ww5x9VReS&D%pjHQL~(es{P;kIJolswxC4r$Ca3b4!6I@C;;no%B~``vIL zyir=GrI`?6J?kMTLn^1;QsTB8Lu*mhyRW9;^?VjO_)@yAT8~7hsf&izg^1J`qH9#e zmE(=G*ab0a=%m>1so~X}VvCJQLnM?mkwNKoG}3Vz4D$+cG^=`PizKoxOWl@V@Nydx zHs%>Vi&uliES8MDQO-G&DAlDyT^fCI6*?VxiLFyyiynziug`K!6hBO1v_xAn6vIsx zkngLhIu10vJ_@M#-wqVBaSGlaQ6y%XTA1OEr6pKOB{Wr1v&0@G0y3|aRH$HtTKm2u zRRr7*h?>ZFeIvzddQ|h3`TM@Q!7UDb*pqG3lf@Q)@6Lm#$|yPu@WU(1X+c`h}Eid^ty{BrSjL! zi68|A$@>nVsiy|$S==X}@cQMfhB}Djnk0~$B}@+liUSq1M&kC@Mi*1KCu~tGs2+}2 zrgc!9^)5uq7!b!pys_n%sK6t^Di*bL1`kT}~>;f0f0%_gzK&i5@3> zJPGOGK|U9-_~R<$<8N;~CLKv6+?)IM^8^0?DkjIwoG;d&TKh%}It{)C_TPK$<~n^G z7;6iQdqx~4`cL?~bid2xYkT&%Qb{`Rw=3_qn2*)=ua&R*TM`>c+T!QGZ9VQnuh;MU z$#OKm*N5%C5SyExc$AUt0(zac_xYRqkK!;WxwpR&Nz2>$Vf3UM8||xe*xcOvhTX9u zt+hT_j}ird>+F+%p4$vR0VJKb)Sn+LI8=mwhtBUN{v+*7}{V;e28w1!_juE*o5vWT=C+t+l}G zw~@WEj@QgCHSg~E?~KHWMRMv9?!dOzef$ilY4ns{BX4X zx^MUXSNPk$9q~5PoxPp{`gh?lu#ic%_w(=euYZq@9o6{!KYSQkQ@QWC-^3fIzyP2H z>@BhHd`W`|Sh**lzqPi;-Ea8Yf6o!fGcVUZe(*42s_?Z=M)Z;6+KjZhL6*nzRt8lIYB-86Pnk#I`&5|CB-5!R__LC-mF$&iu*+`=mh64>P zMr7FSwu16f4>IY8O(3G0qku%O6!kR0TD{o?Jvz#P$BF&kA>Z5Y!DHx_%-;7l()s|a}F!g8SAJPnvJAx8BAiQ zS*49*l3Du>tPx7A5GaXKD2OBrw3m^?W2Eq|jzh!isJy9Byhx@t8)~QVTj>n5J=ZH4Jx>7pk@Gpu(&6``o#ER zN%ML{No@+kP=H9vTU~ErqS}B4!uXp7fVcAOk7)DiF}bBzDJfer98wiz5Ou8=7gmd0 zn~}8Xm7bB8oah?-!AENyIgx$rEtu*t9KNMu^H^TPT|i_6jYaIH*{#0z7?K)pOd`u+ zZMOxc6Rkx`FDxx+U$B#FgaoL9tsoFmoo3`9Ngh#fB2c#^oW|r306W^;z#O&1Zex%! z)XL0k1?(&c*Tj?JP4A|d+qh$qD*Qvt6ilZ^Ww)nPT~?B?wJ{PKGnTotCaI*25#z8{ zwX0YvK(bFTq#c(6;Z+=Bu9t^XqO_AS7CDL}NhxV$k$|>DOOs=AIo#t}$2hG&2cxOt z6)wvZDgm}tW|gC~amESN-RuCje=WV$%Q;$`lJcbwDN?leYXv~aqE5`K@SU{rQy&5Vy1;-4AuqDtnSvZ%_Ej}+g8Vw>#OGCd_t>; zPj0rRR*-?HMfFlOzu}1jqG~J_+F{kObr6e?4Tbjj4z>e+r|-n2P4w3;*F5{i+`H}1 z3=S=>pTBk^x|KEozf)^lulqhW>Q9FFVFYe4@NPC9dz)|U@fvN6Vv<#;D3Q8{!{}c4 z$2ybkKI~4r3wt~M9RC13G!Rs5l~^ZX?DPkvhtJ(|Fql$#o`0SYq=X-8)+g;7^uGHJ z{yn;EaHJ4ya079r?0J6P%mHik+sAMfe%3z!03P1!CJZ6%2_;8z0!59*w-+FeoAt3f z{BSjfqkVw=8=fAQ*lm4J>3?S{;wz4gE6}7Bqi~yzN=t2bTm!kWw|1Id{#@~lOk*nYWHb;rB?$^bcDi+xivwUTRCn@Lz(JEgZIl7su+y0q z1D5Ab`)+3vWc#&in{ING&fp#Wox_!}DmSSYkj2_6ZMBbAaDbo%h;XEf-=>q)1tjl# z;pk8>11@C*Wo`L(f}L;e=f6BP#Dz=tvX%!p{x9LvPX7RPv^c>@ek^C!;fnm{oKnr> zf*U|efY!IHgtpa?kd%$oSFq|t4(g0pqsYXcQ(!yGXrXOuca!Igq(*fEJaH%hcG~3F zUcogiz}=5<8|-oVHhK@JtI)I21x3D5SEBC#6k96PTPKA1Na!m5Z69Y<_qFli&X$sT zRnlTbiRlL!BwqF>iBys=&fWa+?e2+-bXTJy_qRv*FukpNaOz=ua=!NEwk;Mb_^@DL z!H>=})159o>7(g-9)4PyN2M2}2@#>_Mzp7j`Ljx0Sxw0a14?gY6TQH=_YXw@Zi;kZ zJ4u)R5AbfxKnsDxX{;F9}HFBoYz@fCJtyzV)826q$CS5J>yM=c%{ug;DaC03Boz~-BnyjxRC*GkaT_ZVSg`GH zVRAsQ79`kPL3~IWH2@-$mqBx2FR8aOJk5q1RX#ewT8qVMz1Fu>vMxtND3;O&!%|S2 zZ_wgCsdpu=d6UlLU_k@iJ@|N)t^f)Jwh95$OA<9YjWZF;+QMki0=b2SJiS2bdDW4B zX8!=gNlRoOXQ)sX*ml9_@d2AAW4SC(c^;^+H@A;JJUG-#Y?;E1tQ20x{PjKC9X@k{ z5|ossEg*k^2^RO*3m-f__Rs({{2^DvzrWea*o@qq#fctd{Ehr@N<6RlW)O^LbK z+;+Y0ZGNPjG`3v1M~=T=t`A#%Id9JP0{+h{<>iQ|Q;s-6LV^axRv{@i-*RkrAb1jX zu{$+ciMZR#Pkx_2Gl!4>)QsGRJ9E>1Uko9{yr()L4TM;!M(ZZ`2S^$~w)fS!=$^qz zV%bH2=1!#hKYh3E3b}2$Vq0tIH17wQ1D2Y1UkqspzK{v-PQc&2x_R4v$8E5HThCqe zP&Ph)Ek+%3-UCyn`ffg4z8Ff+Yi;i7?&;T0$G2=DI$PnchW`Lw{{R7HO|Px>zmJdQ z@5FO-i{El=ZMTm?JbT<>gxFsX!ft-h+qcMkx9iidh6A?t@ze9cgcVzR+ii!Q{{SDq z@x*1A9l`Rq>4zw}wjE2}%1IWm_ny7aef;+5Ho}KD8hf|DhTQPnx{+;8hv@10;qc&4 zy@k3Edf$6_Tc^(wh6EemeRbwM*7|<9ZeQy+zYZqK8+0i?U5*?W1=DlSd-(l)b;M@i z{{W-!15b!JMT&j;t=n<_V+{m?4kWs^o*mnHV2CE$3tqr}J+EW_T`&>u<+b(Hd@yDo z3-b4GzlJKur4J4n&e=gSsf@DbaHl%7&{V3DpuD!613{?RxR@qQR2g%t4^3wkZ)>X@msNRh4b%ODC0sj(fRPN7ZjpuAZ#BkZb zHD7VoAR^)>k-*OsWV2>s2sTk*4abu;ST%@pB~q&l%!5^BMKc+ihZ&XY4YU$D$X4hI zDn_)aH|2mv;>XQ35LCqSK~l2EI-c6gb(b=(nZerk7rOekumsy3{uycHSm&o`<$;IY zv_vvxE%->^Et=iObG@)ERHss!t3!)4MrNrMaB2a)4K*o+DKb+X#i^vaT2z#>R?}oQ zZgu4Z6E zsqBzWVomRGEpvM)zJL-uvWq)q3u1(Jt_DyEu(tLcqS|Um1oFm4B$h*n_2jNdExe_) zTyO=r=B8Rpj)evLC1GHtT2*UlwXHmEq_0{FTrem}7bfa1!?mTs(2iEbGNT0|Ba>AD zfKy;B%tDnTTV>Q~zHV5@xQ85yn6YIz>|JGQgoJ8k1+bRdbxs6(OHxTmTdGxwx{6KI z10B#JJF*Q-KwSeUvaum-PL{bRzfIPA+4H<=uWJcz0}$G<0`~)*fE@W_6{%rp3TbX# zrIZzWVPz?@P>=}D2va z6a^yep!&oBs!-+2l=3&)}SgT)!!9hLTXHf*ezy#BrjoU~Fh?BMOVmK%VpCyXr9p= zg@6M=u9)=kWDTDzh25Dm<%}+4aHObHWne9RP4^t4p&~}5#{ME(Mft8JO{reVB?LLk zDOpNypqp5M)mVrIa!htM7r7QE`nDi%VPUn6`Qk!y>2{vmJq03?o^IFZzPJ7@wV}ve4A{rf2fyWq(he1hM zOJ&_$v@&k$(twbn0V%cY32{+k>LUzWF;omKau+r7g*PM%UrUV-AZN@Ky279U9f;P~ zIW3s5?1FD@TH5RcH_~)0*$PepR|!}O1U5l1F1)Hl!8QTtQ4CIje$QN^S;a9 zxWtG>*4MXvkKrcZorSx(4)c68sP!0u9Oyu|B_&O`rqV)^7N*VJ(g1ZyN`hKixrs>~ z1+ckhMO@MP<8lVN+twNaMZg5+0PHs^9vKg2UeX&8bD^+rR{E$U48T~}jd|?Zb}MD6 zGpa8b%q7y0rbFwN*lZw_L{wn1>fA!Y3LHG3Tmfo9Nm(X-~nrVl9KtyO3BZDz3kIal1E{75atGeS&;^j@k_;(V8t2lf@l{jTL zrBz8=P|Wp&DxRw%-Ba%rrPC$zZmh~NRH))SM~2FjoJLg7gOvhDOO`?|7K1-@)Ub1veRH-hw z>$ho5B`7M_R;#H4twBNP@;tfLQzYslgD3(OjmcKe*_6oaSoUlHCicoIPSkRGcces- zWN3tNIhvp_V>?QU7-ZHgh^nh%7~BhMu_@ALQ>9cJs4|qsbOn{X_>}99q=jUlj5_`4ARFb4~Buxtv>TP9GfC322 z4!z8KCc?*_AU84ssq&d}JZI-A_FQga)a&zFZH2ni&9|XSZ1XOat;HovSO`cuda-4Q z#OhH@tm?u>C8SWfg8^%NDKs(Aa^jQ%f<*Ay$=o)kkHP!DBguju;ZGQ+&45QS zT-lFClj{kTveXz47tmt9%V<2u+(cx#tqWQjLX<9&l@W}2-UJHqp^`>N&K-b`Cc2o} zR2#7ht#u?RCu7W1ot&hMBaAu~$S)*|l!+CX_D~mPu>i3e0xhG|^%9<1&>4{Xj1we< z0NZI&3#ds6Bozg7MVuE1P}D9?AwzOO8C}YZ_9DP~!(w&0AZFx6!8gK6If7jjKi%AF z+T}OBw;4#c;s)E{QX)GRLix!WR<2?|O{~&_7Tbh{Sd}!iDM=s?Z%9y9f?DWN`$Ix* zJQR>Yzlb1_%Wd!^fz)L>fo|^A$RKDoWj3~LM%LbWtSU9QigVGtCqM3~5B#~t;B za}*>#%9LCPS+GvMXl+FbN>nZ-^o+`pIzpl&*<}HV&TezEl1-aU?g7+aXnh|eNis<* znN((1ECS^g8Dn4q+;hufMbw+(1!AX8^_RsGJCWl$+5^1g6v;%E(3af^`$$Skg2EA` z5O-13qlo5~6C(;`WJXb&FztsxL9iDB+Ud7FPPmo`X2`yh%I>6<$Zr`^OD*;%@Z8wn z*`T2|ilss%T9s|uR0T<4*>winT%!>MX+oS#c9azRs0GC(q}gh*N)nPm64HSzvBxb- zQ^H+ZNkW$~4#+GN8@njKXH%&H*DZpnnh0cgX_k3JY_Y^xN7fJt3SEVxRv>D08bsK@pT`{hXI(NLL8fC49CRge}kV5jQCN!Cp0dZh$VYnoL zt%RidKvih`J!6MCTAG@3b0#{e*`DcDMQl1PA-Y_4Zo-P1_tWW zvpWeg<~K_fHWu2=eYgY0ibVp2lQKqPmKc*zXvKzHamm$LwOKVy0Ww=bQ;?VpKHnh^ z`)f%Kdnpcb`u_k#I!y&NHx1#Hj;QjXNXc%pc_(@71A%iIWpyeWU2mWbZdKC0k5p9F zaV{f9onk`4T?y)Sgxln?=lCT_S|%__>JxE+s~ou>TC_S&<Yw*_R zLgr(aR1(qLx~E zNvdh(5-L>IRl``NBt#QUVcJ#-GQ?4zCQ~J}ue6whBcio}Ow+Ju-OZr$v!(6jF6FWo9;1S0+FXQUei}y5me;r>TarF-HT# zQ06wvG_dv2W(oz}lnB__vlRz5_p=-0WQ)X1jh6ES+RZ+VR;-$mS1NPz>PDSWrx^%z zNRHgdiIdIbyr39UD31GyyK3BpFD*E~45O-&rYd>r1faaFB;8D~<_si3Bw_Pd+bK}4 zK_Kci!jpt?O4?ZI<*0(2sUkR%IC}V{3d@p4jm&lofc1*y)lQ>(4oO|ibzJpZVoKyY z%8XuSnu$`>>y+wy^498GcA+U++z3*UWxk+Gmq^VbtE_>}7=X0n!8M6xp&qIWD6 zrIS{$BISu)RGUJuC)U`qwnw zWYb9j9jRL|k2IZbXw|c3B0|^74mn%7fthn^wW@`BrCH`Hl}4pan>#SdZtfH*mlZAG z11-1|rraqCI?7r~TspC#kBbV4r>K&uYK+Fz^zz9qV}W}WZn5-GZbKb)vVhv1>7jUH zf}Sd9DaaS7nmD4QjNAek1Y4G1Ks>B7HO4GuKaRP&sYRr4$|LBa)1GhleCo?I+3e5c zOHv{j(p#3?HK zvMjj~RI@))3lIWFmd5nSdM(4?s;T304@sFwo+@URHitA|$(>p=7ItEwA(-VIrjsxt z-S39^YMn}TsFa!pa?d%LltTXiS*gOCk@6%pY_}y$Wkso#RD`sJI+;yNROXx6l&I*% zw}er{0a)Oq;v7z~L_N8plZJ4}_AJsVw3BEKVCv>jJwVv2@rv1JR+4(I9m6P_tvy^a zN5r_KoPtKfG;mp(%2384W9wOOg5rL9qfV$#%k_$OSe2Nv`*np>o|y_$w22ZatTQzb zqA=vv9dX7X2b_+XO0FZ2{KSn} z)O7&jStwCPjZFUlV%3sP^G8_&BL{Md1;J?uRmz}Uf)GuSRQ8o@ZH>J*+KmE398XU& zIOypGIsX6~=<9GvUI(5jsv~T&MuJS)bOJ-0Fv**; z7~3$^3|#m>9sZdMByh_OJd2t+9HvbA-ZE4U)?UzEYlkLrU2|DY^IfwA#TSlry1#@5ii&zVsG*ugl4**hfpyCoM;1hGt%yTnS#Oku%1$e{ z9kPmedzqfe^v4nE8eVemEiBA!V5KdhQvs0sa)SXcYj7YumsUbKdT~MNUkyAHh(8R8 z)W?{W4P}rG01laR2M7Za_RI@dTEiC}i}3@+=$D9036vEBC}xeW2_`lzl%{JgP)Smu zTeX`NvG|Si^*9K1CrTYjRn!nwqQb#F$WYVX+W;|6WYhN@sxtpxXvz2RJqD2(E3@_k{ek_C3XtX*-}zTBy{O(gOLDbV(V}%W>q@a z+b#F7CfoOHHN-L$bqOKuUg{d#jQ}0y#Odd)v9^BwoTp+kxT$H0Eu)h1oO9bKSw@5l z6rc+vn-ys;0IM6P8wRS8nlRCTt~)K-0FZ592(sHw`(Isj#s{Lr7Dp0Y)sAHVX>og< zZg*gBYuftni888+r_5V#M@)wzxQ1Pdw@TY7K?-%1IE6NOZVR-&TJ<5zf$dnCT60e+ z41vlJ9T?mY2rRjUg_}^;JL$c!#DGf`)yfA}%OFq)BxP0#K{p<-BxSbxUmY%w#MY@* zbl1{ql}Fl#9xMhX#7wxzlI$YXnC&>+l@`JpZ`D%z%3lq(T`4Z1vMiLmeIck7S!bP= zG>RpbJm@4b<#Yr&vV~lk&uYUpvjsTORB%R~14u+LD@gK6@yXS(MUb+)0)P@&=g7BA z$0#-=4SP3C%GKCX>v3h2)LnxaNrh5kMckN_F&wHJvD+d;&$+2`T$1Sa5?or8Q;0Z& z(N)DIOmY!3M4xpsxV(xLe(jNN&duwyFg65}jJ_Wobu6h$@q-G=rsE0Pse zbVNnH?4eX0I25@H1SCdn4(k_qrDTFr{{R+S)B;LXq)7={d5cm))PUhe?v$f-=m-A*g|?Dy&}q3F z3_LK*GZG0R>@{O;@8kd)=q=jY3R2+M4KHizwmV##?nv?1eerQ}$E3#>a-CGfm6;Z` zMCGPUCcO!AS&_>^&=`5TiXN2}=$q zjEp7>@vs)VW>U9|QsWg}mMQmNr;}aYRTO6$~JW>VPkET2} zw8uXYrlu~E4xuR;d1h815b{MZ5V8ZU)wG67gbWJBxFw|TEQG8 zZbn3w6V|MZ!oWOY;j>**`0uar?}jbXRajMGbSiqCOcrD>EY=uX?j=N}i27;iY0#6b zgeFKz5)|UJAzICzZjtblO4SWjEOD0V)x8d(3lK$>2T}pHx(3kPn*)4RQ=+_Sr}TBF zj!8n9Sp{u71s2uY?}-HVMao!<09@!O&mK5=Ug9K|^R+&wl;+U%y0~?d391~Eqe^2% zdQ)ii`m~4AqTG1uOQ_}$fFq=Vj%Ct54_Cy?@hIn_mY9Yy)HGt5^tMRL0oP8=s6-*P zuo-q8Kcf6vmxLnl*`cnEq>v=0>l&psxoH&%>Yzn7F5!^do8qoT%$e6Jm@pryOrlaL z%W7(2MWw`rQE_Z3NlWEZU@iAn<=#tZeQ(9Owrx$4F-SFBLXWDA<&v7760!)=6pCU{ z*f}yqor@gVLl%nXYg-q0qv5r}Sym|OXP6j_l2l0~Dj)FLIRc;uE@x1$r>$@=kIfaj z7HgYUtWT-t2~#AZGGl+J(pd}THkRA{;PYyM9x_mr-&|-85K@-;H&I!|t*E80l6r|I zs(BnBL)Ac_BdW1BwGT47D4330Ntg`^~)DLTR1NVp2IxC9+L8w=k`$g9fY{njLD-?2U3x3<{b zDZ6GRfwA1)#@zetHuhnpE#e7jg&u%d9ebM_Ci<7ddq{+>75%>~`G4z$8;@ksZqJ(CZYT9vZ4KS+7H#KAAGaN%hz&OEOz&3s6!+ zjVjL&%Y{D4RjQ|={Y=PcjV(k0BkK`rl1X8Z>gGtuS5*XyT~1aRTE@c_nogD(;FW7u zrkZlnbuu+9kwr9j>~(U2$XI}HW)~M^()hXjAK{k{<>l&iLCm(e*_Mp_m{R4(da*}+ zPFt3(Z^V|!nhF!PryOl61agLfev8rm4Z>ukiepAnvIcmbL~4q5Cqb(uiY3q;*_P|J znC9IfLyMvRp83t(^Rx;IuqKfKDIEqgCE-*QTsXrz zP|2eQma?9fNXs}n-gxh+HUO~GOLlLKVB=g$vcImUmcAjH=?x`KOm3*QJ3{u@DPk7H z-1Eng97oIXXj!VePGJ!#)1X%;^IXepqMu4j0VKwD0}<9z(`!wgOKh^Ji8X~k0;GD^xB`#O>_I?qVcBoWax z%p{CY7)31&&t=RKg0C1hIpPdadq%)t7zz}O%H)>nFq@w>P#w~VOvhaE(}~oETwBgG z@>BsxDd($}TPI~&$j75<(pFg3SxilA>WwK@1ch=+kVUO*q5S4CG zoJDb|WeOQc-&}(*ZeyQpR4y>)3S{iTKA|xbjK9j2P=^|%X?%v-N}fc~Nr?PbUUjt~ zEe^KYWOGndk{r5?ty7QG!6j6)$duHUd7_SPqaX#CN$BXvtiY|oQJ*k6+#FWKogSo` zI#}V2sw%T2GCUo2V#hC3XOSJ06*gd4rc-0t%Zy@p;hQLxc#qNZW@4(YoXR9comH#P zbhkOi)R&tGoR@U4lqCpKU0??aieBckaHxk#tEuLV;I6BwFsO8zdWl-nm0-#QnY$nW z2xahW$a0yFMrbN&CXTF{x&UxbF8SUQM}t+L?>NYIxC@&3`c)kI3Dl$5M8jH!Rit2ru@K|PNX)7vFh9W7ZSmRYEvI&V2Ldp(f5*(8q3^u_^QX(f>Ml5_c zruB_TX5v&Lc$5Wc=?rTiVo3&AT0#P`VRu}rpaIpJfr|GN=oJvESa@}Lr?0CJ<2EG~M(VsTt}znkhDRjHLOd()hZ@l7&>)gqlWFyl;1Y78d19Wka& zkPzBbv?>mUoeK>(zp^R(db(~mP=55x5x(Y?Y2uTsSpYdbB?3t!*;eDKvbFNDCdS{< z-WwMIfB_Q39YTyd}()k63CPdSqGgTTAJr z$$jW`R~tb}mZV0L4WOj7fC`eARb=Y26b12xMbYZIqT)1#CXI6lBzBH=3UwhKF`Fpy zH(o^JV_nDS;L6fG(njQ|s6<&HQ)6IVBsR=#Yk}I(k+v=FMf7aW(dE)=bxL&yFlFbK zg-DLoYD_nbWs}WXIg6&ek`%SCLkD#XCd{- zxrLU*lVmqG0>Iw<_lfk+hPqTi1oc#vXb4tnXyhGWJ&?dG%G&@-3k&K?n8Em zJKM)yN7u^%ELhz}{V&qvW4_kgsJ~ys4hRP1Z>SzRdHUbJ6uBbSw|)&sNF-YS0M~pm z)Le^bHuqsOw|~HXm`>c4(G(_r-l;z?r(kkK6k><%2ZW*0paKKw*DvY z#Hkn?ix1D|g)Y|m1pY${OARF4Bwug4rMqHGi{0@!Ld5QGhj8pB42ya8KK}p@KYkE^ zbt3pMdT+S#BjMZYt``Ns+}jB|eSWxRUoUsj{{UOzrVJg8uWh_=xqqzQ{1_}K0BwT` zu+!X|@BSZuzw4$K1^`X(zfUf`a0Sof&+Fg%;Jv-NVI&)O9)DYX9sB|T(BQ&=2VvK} z`diBe8pgu*z8nZh^Y`Hfq#JkY4eU=ZA9f43@c#g;Fm~F*Z+0aL1+R0a-?yw!J+U5d z^S`t<^3>p1n}fLgy5Hf`;ePl(^?zR7{;h*GviN&8<>Sor^^Oz)w!>lHr^^yyxH}y| zHU!*#d%S(vkNY0q%YSazF(4+ugxhi9-=^Q*-rgJA-GNCucP^io&j-U_tLggbhY&rU zmbb&dhkdQm_WVG^9@Xr8Fk(mpx8=9^b{#&ii7;WoeJ4*_@9wes+k6;>{bTI;39Q;KYm;7w^}X<$eCQ!G?D!Bm2EP$tSOn!eRR6{v6+4{{W7-Mvy?* zfNyi*e-8feJn(Oa=J@))C-T?6*k{$7Qo$nN5zw9O=?VVzjL&B*TjuY}Ia%Eb9v z-yg1clmbWEJNR`UcE{`CAQvEa;hEdN;6F?`anr-@!~m~AP``x-Ej~Y9{5J$ixb}cf z_uId}p!obZ!dY+d=j(f|?AyZz6}P;39=MYR6?3p1x?A(>^lj4!KYwA@_V!@GfT7cF zzaJgD^|ktW_rl=8hSEp|_BZR>Zln*?b@$-<`uF^BVbn9E1K+Vdf$$dj8}=A5!r*PM z%Mwx>2T%Zc5r21EpLqVaHrNl9zP0+)M%TW(;lQN!AY0-3V8UTZbnkPp1GT(-&)1IF zc4K~ea=$xs=f1W+SO5cS53dX%QUXa%n+tWnzwY|Ax~XA%3+Okw9o`nd*L9R3I)F9! z{dn7!AWD_|H2{UUO|4^VA2Kg=gYoV5jmG}K6!=5rs!9yez zB>-G2q3gd(4xshE-8?Zm#0J0tz4>pc?!UO=29=vqPq%-L+jwItl9VMEuqVf3=6Bzx zY)UPab+@#8cfUL{3rfO<+Y{63-akh8dbumieR4b7_rr28cf|g-$cocZgAyz)C2YiDm*fo^)~a5V6@b|xkSbpfrGmunDI(h9CS+=J}^Hc;GJ z!1cuI3L6rteAFMye;!=7(YAVQTHKqP z*ke+YAqCWj5~o(>kfp2I*b4x%Zd3v3;cmFWVys4cl61K@w~p8Md-1W22vchSH2`V7 z_B^gM_UUX-YBCa$qUi)&Bmiu79s_H6@4ncbVOwc&ZML_M;kUC8Jg<8jHpKV--X9ao z7UR%8q_^q2=x$ExK9ydNBmV#<=1}nKYkRNcoN4+{fqF60KlulXfu_g$KBM#JjmJgX zH%YoWZf*TL!TJ9H{QW;J^S>;9m3Z-nJ(Yoj1}a~t(zJRCdTJ~i6#6ClM<{#K!QAA0 zyfM1y*|$iz0q)~mDEq6R#+#&K{T}1Pzk_i>@1dMy^A$_sYTOko*|mZ0LHYUp`wV*E zJ;-hQxm)XPe=K=1lmUKY+kdWFdElnBsW4|puuys{?AgV<(iB#OBqeUJIjtm;0db+s zNcNBkPVJdl;*~#&Hd_+P4aKfmJ4?Q$MZo8Af-(|VoL{jbw`407%5QM3*(0-{eGRO1 z*B)8%B3(_2z@|)LOfyZZ)#>j?j;PKvG04&*w%81q6zH-5Ye9`E>UtM75BkKG(BhPF z=l(Y|@znJWp;jsCB4kp9WGLvXW$L0wu(3yIL6KZDsAI2k;PJxL{d8@arl+TsUBfFz z9UQSNC7IIgeCV>UjILB-fLon460uXNQsBvX#w5QjQ0ek2j)-Y)IH)NQ(CyUhdTTLW zE~Q{NS#3xqYUoa?B&evK802z{(ioy?h>Qg5NQ^Nhk`+cQ7-q^2rozV?W_oyGo>f(J zSo+CQ0oD@2Akr1KSDBr1ckPo|n5Dr3; z1`epI7cebyLFWA}siSTWN+^q9cN6>Rt~r}V6cPAO*1W$h^uk<}q)1E28@8gL z0NF(<1Ru}?ZMW-eHKZZbje*;ihTdn^_8)E6AZ04Y))v2*Bjao9d+mL3w;}b(Z3_vq zUO-meH?ck!u{PhQo;D?m1vd4C`!?tKZJ_>G1ws-ps+(#%x!-S><%z8+O>PO;Sn9V; z?Wp{%?!<^Pf$S#z`eG-wwL0?p_HTlAW2*tAtJ*u=7bI`6x0ic(Th9(@2^nv{A%7n` zVOB6Mz#kj=?mumH*AgMHp}$oq0jT|;I)BmdKYg(1*1(?ref|FcUhFbP8*(1sXY02+ z;#~TYX{ltXJjJ}Cgru&@(i3v!^pHU871a3L3_5ALqPk`z*bCc{B;QXv{wzlvCSuk$ z3ZRo~fu`I404=eqRq6tA8(LdlmhM#2mN_LvkS;Wx!bu}xaz%xJwgl4kqV_f$f<>>X z+TGmz`>~${Jy9UAyKKN~U^}m|Abxt@{Chp-x(-vI$g5^((w?A7l^%~#Olo)UMi`G& zDvY-(G07Tfff~~>%?^--hS1B7xP%(l7O$nCrFpB>+L7d1c|t?is-)LKWkde}6KnN` z&TMQIiBXFO3!tj5tBRh9(Q1(%q7w6U4DSHW1TCmDUdBCC8(g>mk>|G^_$f=I*B{Jz zKPoDhld3W3%VJy_l2ZajVxrrtN@>woHd~EDn%nV7OOT^3JczEAQq*UVqs01K(YRr& zdcGY&)NtvRoTJ4sF+D`Vh!G=5I0;( z-c+ZBfF^bk#u`K@`lOB>9dl-Nu*7hcJUV{0PNXX((z6v(brzVaq#BNMEK=N+>+3|x z%3JP6S}I{FWU7GEGuF~yc_?MnlG-Ea@!=kk4Lfk?D(9A(5j<0I46qplq)90*$VAr5 zdR19S&cG`Rpr51%j3p%13&f_RhANr5iKF4!rV;fZq(CTeV7Y5mJ472QlEB%H%g0J2 z>Ll5aa;`#`6NkBi6V9_i%&-+rqSEWlxVDpA$~B~OV^ZWuOK5da=17PnHn-cA05c(` zS=scOj%X#4IxZI^d?KnM!j`fws+tP5V!o5Zss?0%m?$PW9Rn#~@nvNTfzfKH>Z6WY z{wo{tYDraEs)kW5Ow^@A8eSnxa=hq;mgEpG)bJSwc2ks6TVmZGVVA88ERpBb%w%e1*_Dtg4Knwkh>R1|J0p^j9@ z#qL%qo=DZnC+{O=3F}6niyN}g(=0Ml)6~>YD>)fg^TBup&7Xi+Zj| z7a5=I;%)bvNs#5wgh>Tu`OR^daF7dcVl(`lUWq#(j+G2@`6E^`1X z(wDh;>G-wg3kP|ip zRwb?Kg;uTLH9RhwzNt#IjZXwgJVHpL zM=dP%7cCJ7Ge;y~oTVdDx$(w$pB$>d zA!aqTI+b378dI})X;yKzSxXfr5aW^#Q>i}RAeh>rKugG4VzcU~Y5I>!IySU#T6%~_ z3#%(E6>y`poE~xlg_%Ju=rb_O*t}6@1S0ieUfa=*l095>YG;|atspT^ODmv{jMIWx zv@AeRPla1B&uL{UL6NiO6kb}TCY0P^SVZ+HsfltUDwJizkcZHq)2_bK8Jh}AjG|OU zM{-MT+R8%?a@4L_D?d?_(gdWemyJv3jl%*1W>B(5?4m@-Tn)%pBKxEm!tnI(BbeMN1!hMPuvLO-Lwh;D=gmBiTa4hDM{7PzVF7cNUSEk;y}LKti)ITPxT#oj}+ed1gVxB7_i0 z>rqG%s;i=j0kfR!s-?3s63Pf-cO$A&G9*`cc^5Ro;w&0F(jSi^ZcqK}{Cb0tzk4N? zB(pQ#o5h9hve>!afl)0Sm_7DS7Pbqet-`aWhxsRf#!F+EM1Jf!YOu*Yl6nWsBT zkC1Zmvv>C9jY-WC8KJwAsP&w=nV5DfE+R`5=b}ZF+=x>damJ%m;38v;I)x*Z%TXrP zS6#$icugm#{{TtTL0rj9czrbVb*jjuI>OPUfunULQfP#QO4}`o#cqy=hNJOXzd-(s zsi>k>sT@Y4p0bISMg9~7XLSu)p24Bn5!-lZUngB3I? zu_=utH;72mGX(%Vms?pZ{hTV?Tuja$a8EVFO>~I|G-fq3Ex43ga1&v>2~*rcUx!kW zF_9g>%r~E5rKQBJg#bp%}2?<)0V2-($5 z)UP^k2;ubn0L8`nPeCE11w9UsJZ4IXe(pt(LJ3JBNZdFkMMomUFvnWpwpFR+41rC` z^}0BvRVZ$~PLm)-rm(8Q0Zf+aNPd}BtG6|!t@W}c$db#?EtRR*ajqN1lcSUq@ct7G z6-_@;H7hhO*&!Z~23J{w!8JgT62)`7t1(lWBqrFe^qRgNCBQ)QWjJ~^EacO z(ilq11v^A-7;dd&Wl%<0AAELZ#+2D6`*rF-?_z$v*s!S}4L4z9^{$$aez>e1SlAyf zdST@304lxud_KH@#!3qd_x!M!eKt28Jg;M`;rLr^w())pIfD&3*M`u!h$*+WL86xRQf&WAfZ} z>Eqtlw{U&*YCBtE2g7_#hGC>Q@}#)gLekPu zohl_E2im#PED2J9B%XjIleNwv1@n<&5Df{niSXE1o?h!>LaGoOg2bDFd;5H}KMUet z{ViIy`CIgWay&5XGX@2K_}HGkcl-MM zFrZ%A9qdn?zP-3kd-B`!!h%T(x~*-8m&e1cy#3qE00P4RwY2y5_~Ah$0u8slynL_l z-^k$#0&Ypahtb08%-sEX;p7Do*5qHmk4t!4;5%V$-KO5)e@!ref-W$6P5qIk*492s zHYcz5dvArp;lK#$cft8!!W5gNgX6Wf*q)s}@5^G=9h2|+(*FQk+XgCbP+kN<7^7T+sD>Q%jVay6 z#o7mZdsY`01bv>PZM~xpq{ehpoPlz~)%WS+-HH7gTN1-2x3TrR_U{+?3}KzGKBp`S zQk_=P6a1%Z6ROwTUc<5R#6FP4xBmb(+{rev*OvQVZLv6}QN78(et@@)uc#W^Okp!7 zaD|p=bxg-yc(YBUL|oZQKr33CMUvZ0wiGqHA=S3SNe1e5)C+)i#o`=73JOY^+NR45 zJWV5!a@J9zi)vY!f&jXb!r029;j>rOLq$q~rm2udfa$3^vlFmI4D5L-6OSIaftx1h z+~=BV@;U9q%uYzE!Hq3Q=R`zyUT!Q!IM~vcV!%U@!Vt2Hu+wTQN>ZWa-Z8}F;=EqI zqD;#jTQu<`gaaN$VH{=0WE6-p*c*0KUe-ADp9kU5aGn`KOqp6*MMx%S!4bJ;Qt|~l z<­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

-### Tooling Support +## Tooling Support
@@ -139,1266 +139,18 @@ Snowpack's **unbundled development** still supports the same **bundled builds**
-### Browser Support +## Browser Support **Snowpack builds your site for both modern and legacy browsers. Even IE11 is supported.** You can control and customize this behavior with the ["browserlist" package.json property](https://css-tricks.com/browserlist-good-idea/). The only requirement is that _during development_ you use a [modern browser](http://caniuse.com/#feat=es6-module). Any recent release of Firefox, Chrome, or Edge will do. This is required to support the modern, bundle-free ESM imports that load your application in the browser. -### Community +## Community
Join us on Discord! [Join the Pika Discord](https://discord.gg/rS8SnRk) for discussion, questions about Snowpack or related Pika projects, or to show off what you’re working on! -## Get Started -### Install Snowpack - -```bash -# using npm -npm install --save-dev snowpack - -# using yarn -yarn add --dev snowpack -``` - -Snowpack can also be installed globally via `npm install -g snowpack`. But, we recommend installing locally in every project via `--save-dev`/`--dev`. You can run the Snowpack CLI locally via package.json "scripts", npm's `npx snowpack`, or via `yarn snowpack`. - -### Quick Start - -Here's a short list of what you can do with Snowpack: - -```bash -# Start your dev server, load your site locally -snowpack dev - -# Build your site for production -snowpack build - -# Build your site, but watch the file system and rebuild when files change. -# Great for local development with your own dev server (ex: Rails) -snowpack build --watch - -# See more helpful info -snowpack --help -``` - -### Create Snowpack App (CSA) - -The easiest way to get started with Snowpack is via [Create Snowpack App (CSA)](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app). CSA automatically initializes a starter application for you with a pre-configured, Snowpack-powered dev environment. - -If you've ever used Create React App, this is a lot like that! - -```bash -npx create-snowpack-app new-dir --template [SELECT FROM BELOW] [--use-yarn] -``` - -### Official App Templates - -- [@snowpack/app-template-blank](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank) -- [@snowpack/app-template-blank-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank-typescript) -- [@snowpack/app-template-minimal](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-minimal) -- [@snowpack/app-template-react](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react) -- [@snowpack/app-template-react-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react-typescript) -- [@snowpack/app-template-preact](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-preact) -- [@snowpack/app-template-svelte](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-svelte) -- [@snowpack/app-template-vue](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-vue) -- [@snowpack/app-template-lit-element](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element) -- [@snowpack/app-template-lit-element-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element-typescript) -- [@snowpack/app-template-11ty](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-11ty) - -- **[See all community templates](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli#featured-community-templates)** - - - -### Migrating an Existing App - -Migrating an existing app to Snowpack is meant to be painless, since Snowpack supports most features and build tools that you're already using today (Babel, PostCSS, etc). If this is your first time using Snowpack you should start with a Create Snowpack App (CSA) template, copy over your "src" & "public" files from your old app, and then run `snowpack dev`, troubleshooting any remaining issues. - -CSA is a good starting point for an existing application because it has a few common tools (like Babel) built in by default to replicate the full feature set of a traditional bundled app. CSA is also meant to be a drop-in replacement for Create React App, so any existing Create React App project should run via CSA with zero changes needed. - -If you run into issues, search the rest of our docs site for information about importing CSS [from JS](#javascript) and [from CSS](#import-css), [asset references](#import-images-%26-other-assets), and more. -## Main Concepts - -### Unbundled Development - -![webpack vs. snowpack diagram](/img/snowpack-unbundled-example-3.png) - -**Unbundled development** is the idea of shipping individual files to the browser during development. Files can still be built with your favorite tools (like Babel, TypeScript, Sass) and then loaded individually in the browser with dependencies thanks to ESM `import` and `export` syntax. Any time you change a file, Snowpack only ever needs to rebuild that single file. - -The alternative is **bundled development.** Almost every popular JavaScript build tool today focuses on bundled development. Running your entire application through a bundler introduces additional work and complexity to your dev workflow that is unnecessary now that ESM is widely supported. Every change -- on every save -- must be rebundled with the rest of your application before your changes can be reflected in your browser. - -Unbundled development has several advantages over the traditional bundled development approach: - -- Single-file builds are fast. -- Single-file builds are deterministic. -- Single-file builds are easier to debug. -- Project size doesn’t affect dev speed. -- Individual files cache better. - -That last point is key: **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. - -### Using NPM Dependencies - -NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. - -**Snowpack takes a different approach:** Instead of bundling your entire application for this one requirement, Snowpack processes your dependencies separately. Here's how it works: - -``` -node_modules/react/**/* -> http://localhost:3000/web_modules/react.js -node_modules/react-dom/**/* -> http://localhost:3000/web_modules/react-dom.js -``` - -1. Snowpack scans your website/application for all used npm packages. -2. Snowpack reads these installed dependencies from your `node_modules` directory. -3. Snowpack bundles all of your dependencies separately into single JavaScript files. For example: `react` and `react-dom` are converted to `react.js` and `react-dom.js`, respectively. -4. Each resulting file can be run directly in the browser, and imported via ESM `import` statements. -5. Because your dependencies rarely change, Snowpack rarely needs to rebuild them. - -After Snowpack builds your dependencies, any package can be imported and run directly in the browser with zero additional bundling or tooling required. This ability to import npm packages natively in the browser (without a bundler) is the foundation that all unbundled development and the rest of Snowpack is built on top of. - -```html - - - - -``` - -### Snowpack's Dev Server - -![dev command output example](/img/snowpack-dev-startup-2.png) - -`snowpack dev` - Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. - -Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](#plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! - -### Snowpack's Build Pipeline - -![build output example](/img/snowpack-build-example.png) - -`snowpack build` - When you're ready to deploy your application, run the build command to generate a static production build of your site. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. - -### Bundle for Production - -**You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. - -By default, `snowpack build` will build your site using the same unbundled approach as the `dev` command. This is fine for most projects, but you also may still want to bundle for production. Legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations can all be handled in Snowpack via bundling. - -Bundlers normally require dozens or even hundreds of lines of configuration, but with Snowpack it's just a one-line plugin with no config required. This is possible because Snowpack builds your application _before_ sending it to the bundler, so the bundler never sees your custom source code (JSX, TS, Svelte, Vue, etc.) and instead only needs to worry about building common HTML, CSS, and JS. - -```js -// Bundlers plugins are pre-configured to work with Snowpack apps. -// No config required! -{ - "plugins": [["@snowpack/plugin-webpack"]] -} -``` - -See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. -## JavaScript - -### ES Modules (ESM) - -Snowpack was designed to support JavaScript's native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! - -```js -// ESM Example - src/user.js -export function getUser() { - /* ... */ -} - -// src/index.js -import {getUser} from './user.js'; -``` - -All modern browsers support ESM, so Snowpack is able to ship this code directly to the browser during development. This is what makes Snowpack's **unbundled development** workflow possible. - -Snowpack also lets you import non-JavaScript files directly in your application. Snowpack handles all this for you automatically so there's nothing to configure, using the following logic: - -### Import NPM Packages - -```js -// Returns the React & React-DOM npm packages -import React from 'react'; -import ReactDOM from 'react-dom'; -``` - -Snowpack lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. - -When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. - -### Import JSON - -```js -// Returns the JSON object via the default import -import json from './data.json'; -``` - -Snowpack supports importing JSON files, which return the full JSON object in the default import. - -### Import CSS - -```js -// Loads './style.css' onto the page -import './style.css'; -``` - -Snowpack supports basic CSS imports inside of your JavaScript files. When you import a CSS file via the `import` keyword, Snowpack will automatically apply those styles to the page. This works for CSS and compile-to-CSS languages like Sass & Less. - -If you prefer, Snowpack also supports any popular CSS-in-JS library for styling. - -### Import CSS Modules - -```css -/* src/style.module.css */ -.error { - background-color: red; -} -``` - -```js -// 1. Converts './style.module.css' classnames to unique, scoped values. -// 2. Returns an object mapping the original classnames to their final, scoped value. -import styles from './style.module.css'; - -// This example uses JSX, but you can use CSS Modules with any framework. -return
Your Error Message
; -``` - -Snowpack supports CSS Modules using the `[name].module.css` naming convention. CSS Modules work just like normal CSS imports, but with a special default `styles` export that maps your original classnames to unique identifiers. - -### Import Images & Other Assets - -```jsx -import img from './image.png'; // img === '/src/image.png' -import svg from './image.svg'; // svg === '/src/image.svg' - -// This example uses JSX, but you can use these references with any framework. -; -``` - -All other assets not explicitly mentioned above can be imported via ESM `import` and will return a URL reference to the final built asset. This can be useful for referencing non-JS assets by URL, like creating an image element with a `src` attribute pointing to that image. - -#### Coming Soon: Native Reference URLs - -Webpack 5.0 released support for native reference URLs to replace the original, fake ESM file import. If you are using a bundler that supports this (or, not using a bundler at all) we recommend updating your non-JS URL reference imports to use this more standard pattern. Once Rollup adds support as well, we will move to promote this to our recommended style. - -```jsx -const img = new URL('./image.png', import.meta.url); // img === '/src/image.png' -const svg = new URL('./image.svg', import.meta.url); // svg === '/src/image.svg' - -// This example uses JSX, but you can use these references with any framework. -; -``` - -## Features - -Snowpack ships with built-in support for the following file types, no configuration required: - -- JavaScript (`.js`, `.mjs`) -- TypeScript (`.ts`, `.tsx`) -- JSX (`.jsx`, `.tsx`) -- CSS (`.css`) -- CSS Modules (`.module.css`) -- Images (`.svg`, `.jpg`, `.png`, etc.) - -To customize build behavior and support new languages (`.scss`, `.svelte`, `.vue`), keep reading. - -### Import Aliases - -```js -// Instead of this: -import Button from `../../../../components/Button`; - -// You can do this: -import Button from `@app/components/Button`; -``` - -Snowpack supports setting custom import aliases for your project via the top-level `alias` property. This can be used to define an alias for either a local source directory (like aliasing `@app` to `./src`) or a package (like aliasing `react` to `preact/compat`). See the full documentation for `alias` below. - -**TypeScript Users:** You'll need to configure your `tsconfig.json` `paths` to get proper types from top-level imports. Learn more about ["path mappings"](https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping). - -```js -// tsconfig.json -{ - "compilerOptions": { - "baseUrl": ".", - "paths": { - // Define either ONE of these... - // 1. General support: matches everything relative to the project directory - "*": ["*"], - // 2. Explicit support: match only your mounted directories (Recommended!) - "src/*": ["src/*"], - "public/*": ["public/*"], - } - } -} -``` - -### Environment Variables - -```js -// `import.meta.env` - Read process.env variables in your web app -fetch(`${import.meta.env.SNOWPACK_PUBLIC_API_URL}/users`).then(...) - -// Supports destructuring as well: -const {SNOWPACK_PUBLIC_API_URL} = import.meta.env; -fetch(`${SNOWPACK_PUBLIC_API_URL}/users`).then(...) - -// Instead of `import.meta.env.NODE_ENV` use `import.meta.env.MODE` -if (import.meta.env.MODE === 'development') { - // ... -``` - -You can read environment variables directly in your web application via `import.meta.env`. If you've ever used `process.env` in Create React App or any Webpack application, this behaves exactly the same. - -For your safety, Snowpack only supports environment variables that begin with `SNOWPACK_PUBLIC_*`. We do this because everything in your web application is sent to the browser, and we don't want you to accidentally share sensitive keys/env variables with your public web application. Prefixing your frontend web env variables with `SNOWPACK_PUBLIC_` is a good reminder that they will be shared with the world. - -`import.meta.env.MODE` and `import.meta.env.NODE_ENV` are also both set to the current `process.env.NODE_ENV` value, so that you can change app behavior based on dev vs. build. The env value is set to `development` during `snowpack dev` and `production` during `snowpack build`. Use this in your application instead of `process.env.NODE_ENV`. - -You can use environment variables in HTML files. All occurrences of `%SNOWPACK_PUBLIC_*%`, `%PUBLIC_URL%`, and `%MODE%` will be replaced at build time. - -**Remember:** that these env variables are statically injected into your application for everyone at **build time**, and not runtime. - -#### `.env` File Support - -```js -// snowpack.config.json -{ - "plugins": ["@snowpack/plugin-dotenv"] -} -``` - -Add the `@snowpack/plugin-dotenv` plugin to your dev environment to automatically load environment variables from your project `.env` files. Visit the [plugin README](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) to learn more. - -### Hot Module Replacement - -Hot Module Replacement (HMR) is the ability to update your web app during development without refreshing the page. Imagine changing some CSS, hitting save, and then instantly seeing your change reflected on the page without a refresh. That's HMR. - -Snowpack supports full HMR out-of-the-box for the following served files: - -- CSS -- CSS Modules -- JSON - -Popular frameworks can also be set up for HMR. **[Create Snowpack App (CSA)](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app) ships with HMR enabled by default for all of the following frameworks.** If you're not using CSA, you can setup HMR in your application with a simple plugin or a few lines of code: - -- Preact: [@prefresh/snowpack](https://www.npmjs.com/package/@prefresh/snowpack) -- React: [@snowpack/plugin-react-refresh](https://www.npmjs.com/package/@snowpack/plugin-react-refresh) -- Svelte: [A few lines of code](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-svelte/src/index.js#L9-L16) -- Vue: [A few lines of code](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-vue/src/index.js#L7-L14) - -For more advanced, bare-metal HMR integrations, Snowpack created [ESM-HMR](https://github.com/snowpackjs/esm-hot-module-replacement-spec), a standard HMR API for any ESM-based dev environment. Any HMR integration built for ESM-HMR will run on Snowpack and any other ESM-HMR-enabled dev server. To use the HMR API directly (via `import.meta.hot`) check out [the ESM-HMR spec](https://github.com/snowpackjs/esm-hot-module-replacement-spec) to learn more. - -```js -if (import.meta.hot) { - import.meta.hot.accept(({module}) => { - // Accept the module, apply it to your application. - }); - import.meta.hot.dispose(() => { - // Cleanup any side-effects. Optional. - }); -} -``` - -- 👉 **[Check out the full ESM-HMR spec.](https://github.com/snowpackjs/esm-hot-module-replacement-spec)** - -### Dev Request Proxy - -```js -// snowpack.config.json -// Example: Proxy "/api/pokemon/ditto" -> "https://pokeapi.co/api/v2/pokemon/ditto" -{ - "proxy": { - "/api": "https://pokeapi.co/api/v2", - } -} -``` - -Snowpack can proxy requests from the dev server to external URLs and APIs. Making API requests directly the dev server can help you mimic your production environment during development. - -See the [config.proxy API](#config.proxy) section for more information and full set of configuration options. - -### HTTPS/HTTP2 - -``` -npm start -- --secure -``` - -Snowpack provides an easy way to use a local HTTPS server during development through the use of the `--secure` flag. When enabled, Snowpack will look for a `snowpack.key` and `snowpack.crt` file in the root directory and use that to create an HTTPS server with HTTP2 support enabled. - -#### Generating SSL Certificates - -You can automatically generate credentials for your project via either: - -- [devcert (no install required)](https://github.com/davewasmer/devcert-cli): `npx devcert-cli generate localhost` -- [mkcert (install required)](https://github.com/FiloSottile/mkcert): `mkcert -install && mkcert -key-file snowpack.key -cert-file snowpack.crt localhost` - -In most situations you should add personally generated certificate files (`snowpack.key` and `snowpack.crt`) to your `.gitignore` file. - -### Legacy Browser Support - -You can customize the set of browsers you'd like to support via the `package.json` "browserslist" property, going all the way back to IE11. This will be picked up when you run `snowpack build` to build for production. - -```js -/* package.json */ -"browserslist": ">0.75%, not ie 11, not UCAndroid >0, not OperaMini all", -``` - -If you're worried about legacy browsers, you should also add a bundler to your production build. Check out our [section on bundling for production](#bundle-for-production) for more info. - -Note: During development (`snowpack dev`) we perform no transpilation for older browsers. Make sure that you're using a modern browser during development. - -### Node.js Polyfills - -If you depend on packages that depend on Node.js built-in modules (`"fs"`, `"path"`, `"url"`, etc.) you can run Snowpack with `--polyfill-node` (or `installOptions.polyfillNode: true` in your config file). This will automatically polyfill any Node.js dependencies as much as possible for the browser. You can see the full list of supported polyfills here: https://github.com/ionic-team/rollup-plugin-node-polyfills - -If you'd like to customize this polyfill behavior, skip the `--polyfill-node` flag and instead provide your own Rollup plugin for the installer: - -```js -// Example: If `--polyfill-node` doesn't support your use-case, you can provide your own custom Node.js polyfill behavior -module.exports = { - installOptions: { - polyfillNode: false, - rollup: { - plugins: [require('rollup-plugin-node-polyfills')({crypto: true, ...})], - }, - }, -}; -``` - -### CSS Imports (@import) - -```css -/* Import a local CSS file */ -@import './style1.css'; -/* Import a local Sass file (Sass build plugin still needed to compile file contents) */ -@import './style2.scss'; -/* Import a package CSS file */ -@import 'bootstrap/dist/css/bootstrap.css'; -``` - -Snowpack supports [native CSS "@import" behavior](https://developer.mozilla.org/en-US/docs/Web/CSS/@import) with additional support for importing CSS from within packages. - -**Note:** The actual CSS spec dictates that a "bare" import specifier like `@import "package/style.css"` should be treated as a relative path, equivalent to `@import "./package/style.css"`. We intentionally break from the spec to match the same package import behavior as JavaScript imports. If you prefer the strictly native behavior with no package resolution support, use the form `@import url("package/style.css")` instead. Snowpack will not resolve `url()` imports and will leave them as-is in the final build. - -**Note for webpack users:** If you're migrating an existing app to snowpack, note that `@import '~package/...'` (URL starting with a tilde) is a syntax specific to webpack. With Snowpack you remove the `~` from your `@import`s. - -### Server Side Rendering (SSR) - -SSR for Snowpack is supported but fairly new and experimental. This documentation will be updated as we finalize support over the next few minor versions. - -```js -// New in Snowpack v2.15.0 - JS API Example -import {startDevServer} from 'snowpack'; -const server = await startDevServer({ ... }); -``` - -These frameworks have known experiments / examples of using SSR + Snowpack: - -- React (Example): https://github.com/matthoffner/snowpack-react-ssr -- Svelte/Sapper (Experiment): https://github.com/Rich-Harris/snowpack-svelte-ssr -- [Join our Discord](https://discord.gg/rS8SnRk) if you're interested in getting involved! - -### Optimized Builds - -By default, Snowpack doesn't optimize your code for production. But, there are several plugins available to optimize your final build, including minification (reducing file sizes) and even bundling (combining files together to reduce the number of requests needed). - -**Connect the `@snowpack/plugin-optimize` plugin to optimize your build.** By default this will minify your built files for faster loading. It can also be configured to add `` elements that will improve the loading speed of unbundled sites. _Note: this plugin replaces `buildOptions.minify`._ - -```js -// snowpack.config.json -// [npm install @snowpack/plugin-optimize] -{ - "plugins": [ - ["@snowpack/plugin-optimize", {/* ... */}] - ] -} -``` - -Note that `@snowpack/plugin-optimize` will optimize your build, but won't bundle files together. - -**If you'd like a bundled build, use `@snowpack/plugin-webpack` instead.** Connect the `"@snowpack/plugin-webpack"` plugin in your Snowpack configuration file and then run `snowpack build` to see your optimized, _bundled_ build. - -```js -// snowpack.config.json -// [npm install @snowpack/plugin-webpack] -{ - "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] -} -``` - -### Testing - -Snowpack supports any popular JavaScript testing framework that you're already familiar with. Mocha, Jest, Jasmine, AVA and Cypress are all supported in Snowpack applications. - -We currently recommend [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) (WTR) for testing in Snowpack projects. When benchmarked it performed faster than Jest (our previous recommendation) while also providing an environment for testing that more closely matches the actual browser that your project runs in. Most importantly, WTR runs the same Snowpack build pipeline that you've already configured for your project, so there's no extra build configuration needed to run your tests. Jest (and many others) ask you to configure a totally secondary build pipeline for your tests, which reduces test confidence while adding 100s of extra dependencies to your project. - -To use [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) in your project, [follow the instructions here](https://modern-web.dev/docs/test-runner/overview/) and make sure that you add the Snowpack plugin to your config file: - -```js -// web-test-runner.config.js -module.exports = { - plugins: [require('@snowpack/web-test-runner-plugin')()], -}; -``` - -[See an example setup](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-react) in on of our Create Snowpack App starter templates. -## Plugins - -Snowpack isn't just a build tool for JavaScript, it is a build tool for your entire website. Babel, TypeScript, PostCSS, SVGR and any favorite build tool can be connected directly into Snowpack via 1-line plugins. - -Snowpack plugins can be added to: - -- Customize your build with new language/framework support (Svelte, Vue) -- Customize your build with new build tools (Babel, PostCSS) -- Run CLI commands during build and development (TypeScript, ESLint) -- Create custom transformations, specific to your exact application. - -👉 **[Check out our advanced guide](/plugins) and learn how to create your own plugin.** - -### Connect a Plugin - -To make a plugin available, you have to put it in your project `devDependencies` list (`package.json`) which will install it locally (in your project) and make it available to snowpack. - -For the official snowpack plugins, command would look like: - -```bash -# for npm -npm install --save-dev @snowpack/[plugin-name] -# for yarn -yarn add --dev @snowpack/[plugin-name] -``` - -After that, you can connect the plugin to Snowpack via the `"plugins"` array in your Snowpack config. For example, - -```js -// snowpack.config.json -{ - "plugins": ["@snowpack/plugin-babel"] -} -``` - -This is all you need to add Babel to your application build pipeline. If the plugin supports it, you can also pass **options** to the plugin to configure its behavior: - -```js -// snowpack.config.json -{ - "plugins": [ - ["@snowpack/plugin-babel", { /* ... */}] - ], -} -``` - -NOTE: The **order** of plugins is important, for example, if there are multiple plugins that load/build particular type of file, the first matching will take precedence. If it succeeds in the build task for the file, others will not be called for that particular build task. - -### Connect any Script/CLI - -If you can't find a plugin that fits your needs and don't want to write your own, you can also run CLI commands directly as a part of your build using one of our two utility plugins: `@snowpack/plugin-build-script` & `@snowpack/plugin-run-script`. - -#### @snowpack/plugin-build-script - -```js -// snowpack.config.json -// [npm install @snowpack/plugin-build-script] -{ - "plugins": [ - ["@snowpack/plugin-build-script", { "cmd": "postcss", "input": [".css"], "output": [".css"]}] - ], -} -``` - -This plugin allows you to connect any CLI into your build process. Just give it a `cmd` CLI command that can take input from `stdin` and emit the build result via `stdout`. Check out the README for more information. - -#### @snowpack/plugin-run-script - -```js -// snowpack.config.json -// [npm install @snowpack/plugin-run-script] -{ - "plugins": [ - ["@snowpack/plugin-run-script", { "cmd": "eleventy", "watch": "$1 --watch" }] - ], -} -``` - -This plugin allows you to run any CLI command as a part of your dev and build workflow. This plugin doesn't affect your build output, but it is useful for connecting developer tooling directly into Snowpack. Use this to add meaningful feedback to your dev console as you type, like TypeScript type-checking and ESLint lint errors. - -### Official Plugins - -- [@snowpack/plugin-babel](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-babel) -- [@snowpack/plugin-dotenv](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) -- [@snowpack/plugin-postcss](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-postcss) -- [@snowpack/plugin-react-refresh](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-react-refresh) -- [@snowpack/plugin-svelte](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-svelte) -- [@snowpack/plugin-vue](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-vue) -- [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-webpack) - -👉 **[Check out our full list](/plugins) of official plugins.** - -### Community Plugins - -- [snowpack-plugin-mdx](https://www.npmjs.com/package/snowpack-plugin-mdx) -- [snowpack-plugin-stylus](https://www.npmjs.com/package/snowpack-plugin-stylus) -- [snowpack-plugin-import-map](https://github.com/zhoukekestar/snowpack-plugin-import-map) - -👉 **[Find your community plugin on npm.](https://www.npmjs.com/search?q=keywords:snowpack%20plugin)** -## Recipes - -Below are a collection of guides for using different web frameworks and build tools with Snowpack. If you'd like to contribute a new recipe, feel free to edit the docs to add your own. - -### Supported Libraries - -All of the following frameworks have been tested and guaranteed to work in Snowpack without issues. If you encounter an issue using any of the following, please file an issue. - -- React -- Preact -- JSX -- HTM -- lit-html -- Vue (see below) -- Svelte (see below) -- Tailwind CSS (see below) -- Sass (see below) -- and many more! -- Literally... every library should work with Snowpack! - -Some libraries use compile-to-JS file formats and do require a special build script or plugin. See the guide below for examples. - -### JSX - -Snowpack has built-in support to handle `.jsx` & `.tsx` source files in your application. - -**Note: Snowpack's default build does not support JSX in `.js`/`.ts` files.** If you can't use the `.jsx`/`.tsx` file extension, you can use [Babel](#babel) to build your application instead. - -### TypeScript - -Snowpack includes built-in support to build all TypeScript source files (`.ts` & `.tsx`) in your application. - -For automatic TypeScript type checking during development, add the official [@snowpack/plugin-typescript](https://www.npmjs.com/package/@snowpack/plugin-typescript) plugin to your Snowpack config file. This plugin adds automatic `tsc` type checking results right in the Snowpack dev console. - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-typescript"] -``` - -### Babel - -Snowpack already comes with built-in support for building JavaScript, TypeScript, and JSX. However, If you would like to run your build through Babel instead, you can replace our default file builder with the official Snowpack Babel plugin. - -The plugin will automatically read plugins & presets from your local project `babel.config.*` config file, if one exists. - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-babel"], -``` - -### Preact - -You can import and use Preact without any custom configuration needed. - -**To use `preact/compat`:** (the Preact+React compatability layer) alias the "compat" package to React in your install options: - -```js -// Example: Lets you import "react" in your application, but uses preact internally -// snowpack.config.json -"installOptions": { - "alias": { - "react": "preact/compat", - "react-dom": "preact/compat" - } -} -``` - -### Vue - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-vue"] -``` - -### Svelte - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-svelte"] -``` - -### PostCSS - -```js -// snowpack.config.json -"plugins": [ - ["@snowpack/plugin-build-script", {"cmd": "postcss", "input": [".css"], "output": [".css"]}] -] -``` - -The [`postcss-cli`](https://github.com/postcss/postcss-cli) package must be installed manually. You can configure PostCSS with a `postcss.config.js` file in your current working directory. - -### Tailwind CSS - -You can add [Tailwind](https://tailwindcss.com) to any project via native CSS `@import`: - -```css -/* index.css */ -@import 'tailwindcss/dist/base.css'; -@import 'tailwindcss/dist/components.css'; -@import 'tailwindcss/dist/utilities.css'; -``` - -#### Using Tailwind with PostCSS - -If you are using PostCSS in your project ([see above](#postcss)) then you can just add Tailwind as a plugin to your `postcss.config.js`: - -```js -// postcss.config.js -// Taken from: https://tailwindcss.com/docs/installation#using-tailwind-with-postcss -module.exports = { - plugins: [ - // ... - require('tailwindcss'), - require('autoprefixer'), - // ... - ], -}; -``` - -Once you have added the Tailwind PostCSS plugin, you can replace your native CSS `dist` imports with Tailwind's more powerful `base`, `components`, and `utilities` imports: - -```diff -/* index.css */ -- @import 'tailwindcss/dist/base.css'; -- @import 'tailwindcss/dist/components.css'; -- @import 'tailwindcss/dist/utilities.css'; -+ @import 'tailwindcss/base'; -+ @import 'tailwindcss/components'; -+ @import 'tailwindcss/utilities'; -``` - -Follow the official [Tailwind CSS Docs](https://tailwindcss.com/docs/installation/#using-tailwind-with-postcss) for more information. - -### Sass - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-sass"] -``` - -[Sass](https://www.sass-lang.com/) is a stylesheet language that’s compiled to CSS. It allows you to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects. - -To use Sass + PostCSS, check out [this guide](https://zellwk.com/blog/eleventy-snowpack-sass-postcss/). - -### ESLint - -```js -// snowpack.config.json -"plugins": [ - ["@snowpack/plugin-run-script", { - "cmd": "eslint 'src/**/*.{js,jsx,ts,tsx}'", - // Optional: Use npm package "watch" to run on every file change - "watch": "watch \"$1\" src" - }] -] -``` - -### Webpack - -```js -// snowpack.config.json -{ - // Optimize your production builds with Webpack - "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] -} -``` - -Snowpack ships an official [webpack plugin](https://www.npmjs.com/package/@snowpack/plugin-webpack) for optimizing your build. Connect the `"@snowpack/plugin-webpack"` plugin into your Snowpack configuration file and then run `snowpack build` to see your optimized, bundled build. - -See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. - -### Workbox - -The [Workbox CLI](https://developers.google.com/web/tools/workbox/modules/workbox-cli) integrates well with Snowpack. Run the wizard to bootstrap your first configuration file, and then run `workbox generateSW` to generate your service worker. - -Remember that Workbox expects to be run every time you deploy, as a part of a production build process. If you don't have one yet, create package.json [`"deploy"` and/or `"build"` scripts](https://michael-kuehnel.de/tooling/2018/03/22/helpers-and-tips-for-npm-run-scripts.html) to automate your production build process. - -### @web/test-runner - -[@web/test-runner](https://www.npmjs.com/package/@web/test-runner) is our recommended test runner for Snowpack projects. [See our section on testing](/#testing) for detailed instructions on how to get started with @web/test-runner. - -### Jest - -> Update (October 11, 2020): **We now recommend [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) as our test runner of choice for Snowpack projects.** [See our section on testing](/#testing) for more background behind the change. - -[Jest](https://jestjs.io/) is a popular Node.js test runner for Node.js & web projects. Jest can be used with any frontend project as long as you configure how Jest should build your frontend files to run on Node.js. Many projects will try to manage this configuration for you, since it can get complicated. - -Snowpack ships pre-built Jest configuration files for several popular frameworks. If you need to use Jest for any reason,consider extending one of these packages: - -- React: [@snowpack/app-scripts-react](https://www.npmjs.com/package/@snowpack/app-scripts-react) -- Preact: [@snowpack/app-scripts-preact](https://www.npmjs.com/package/@snowpack/app-scripts-preact) -- Svelte: [@snowpack/app-scripts-svelte](https://www.npmjs.com/package/@snowpack/app-scripts-svelte) - -You can use these packages in your project like so: - -```js -// jest.config.js -// Example: extending a pre-built Jest configuration file -module.exports = { - ...require('@snowpack/app-scripts-preact/jest.config.js')(), -}; -``` - -### Server Side Rendering (SSR) - -To connect your own server to `snowpack dev` for SSR, there are a few things that you'll need to set up. Make sure that you include any Snowpack-built resources via script tags in your server's HTML response: - -```html - - -``` - -And make sure that your HTML response also includes code to configure HMR to talk to Snowpack's dev server: - -```html - - -``` - -### Leaving Snowpack - -Snowpack is designed for zero lock-in. If you ever feel the need to add a traditional application bundler to your stack (for whatever reason!) you can do so in seconds. - -Any application built with Snowpack should Just Work™️ when passed through Webpack/Rollup/Parcel. If you are already importing packages by name in your source code (ex: `import React from 'react'`) then you should be able to migrate to any popular bundler without issue. - -If you are importing packages by full URL (ex: `import React from '/web_modules/react.js'`), then a simple Find & Replace should help you re-write them to the plain package name imports that most bundlers expect. -## Troubleshooting - -### No such file or directory - -``` -ENOENT: no such file or directory, open …/node_modules/csstype/index.js -``` - -This error message would sometimes occur in older versions of Snowpack. - -**To solve this issue:** Upgrade to Snowpack `v2.6.0` or higher. If you continue to see this unexpected error in newer versions of Snowpack, please file an issue. - -### Package exists but package.json "exports" does not include entry - -Node.js recently added support for a package.json "exports" entry that defines which files you can and cannot import from within a package. Preact, for example, defines an "exports" map that allows you to to import "preact/hooks" but not "preact/some/custom/file-path.js". This allows packages to control their "public" interface. - -If you see this error message, that means that you've imported a file path not allowed in the export map. If you believe this to be an error, reach out to the package author to request the file be added to their export map. - -### Uncaught SyntaxError: The requested module '/web_modules/XXXXXX.js' does not provide an export named 'YYYYYY' - -This is usually seen when importing a named export from a package written in the older Common.js format. Snowpack will automatically scan legacy Common.js packages to detect its named exports, but sometimes these exports can't be detected statically. - -**To solve this issue:** Add a ["namedExports"](#config.installoptions) entry in your Snowpack config file. This tells Snowpack to use a more-powerful runtime scanner on this legacy Common.js package to detect it's exports at runtime. - -```json -// snowpack.config.json -// Example: add support for `import { Terminal } from 'xterm';` -"installOptions": { - "namedExports": ["xterm"] -} -``` - -### Installing Non-JS Packages - -When installing packages from npm, you may encounter some file formats that can only run with additional parsing/processing. First check to see if there is a [Snowpack plugin for the type of file](#plugins). - -Because our internal installer is powered by Rollup, you can also add Rollup plugins to your [Snowpack config](#configuration) to handle these special, rare files: - -```js -/* snowpack.config.js */ -module.exports = { - rollup: { - plugins: [require('rollup-plugin-sass')()], - }, -}; -``` - -Refer to [Rollup’s documentation on plugins](https://rollupjs.org/guide/en/#using-plugins) for more information. -## API Reference - -### Config Files - -Snowpack's behavior can be configured by CLI flags, a custom Snowpack config file, or both. [See the api reference below for the full list of supported options](#api-reference). - -Snowpack supports configuration files in multiple formats, sorted by priority order: - -1. `--config [path]`: If provided. -1. `package.json`: A namespaced config object (`"snowpack": {...}`). -1. `snowpack.config.cjs`: (`module.exports = {...}`) for projects using `"type": "module"`. -1. `snowpack.config.js`: (`module.exports = {...}`). -1. `snowpack.config.ts`\*: (`export default {...}`). -1. `snowpack.config.json`: (`{...}`). - -_(\* Note: `snowpack.config.ts` support is still experimental! It currently involves bundling your config file and all imported files into a temporary JS config file that can be loaded by Node.js. Your mileage may vary.)_ - -### CLI Flags - -```bash -# Show helpful info -$ snowpack --help - -# Show additional debugging logs -$ snowpack --verbose - -# {installOptions: {dest: 'CUSTOM_DIR/'}} -$ snowpack install --dest CUSTOM_DIR/ - -# {devOptions: {bundle: true}} -$ snowpack dev --bundle - -# {devOptions: {bundle: false}} -$ snowpack dev --no-bundle - -# {buildOptions: {clean: true}} -$ snowpack build --clean -``` - -**CLI flags will be merged with (and take priority over) your config file values.** Every config value outlined below can also be passed as a CLI flag. Additionally, Snowpack also supports the following flags: - -- **`--config [path]`** Set the path to your project config file. -- **`--help`** Show this help. -- **`--version`** Show the current version. -- **`--reload`** Clear the local cache. Useful for troubleshooting installer issues. - -### Configuration - -Example: - -```js -{ - "install": [ - "htm", - "preact", - "preact/hooks", // A package within a package - "unistore/full/preact.es.js", // An ESM file within a package (supports globs) - "bulma/css/bulma.css" // A non-JS static asset (supports globs) - ], - "plugins": [ /* ... */ ], - "installOptions": { /* ... */ }, - "devOptions": { /* ... */ }, - "buildOptions": { /* ... */ }, - "proxy": { /* ... */ }, - "mount": { /* ... */ }, - "alias": { /* ... */ } -} -``` - -#### `config` - -`object` (options) - -See the configuration section for information on file formats and command line usage. - -Example: - -```js -{ - mount: { - public: '/', - src: '/_dist_', - }, - plugins: ['@snowpack/plugin-babel', '@snowpack/plugin-dotenv'], - devOptions: {}, - installOptions: { - installTypes: isTS, - }, -} -``` - -Options: - -- **`extends`** | `string` - - Inherit from a separate "base" config. Can be a relative file path, an npm package, or a file within an npm package. Your configuration will be merged on top of the extended base config. -- **`exclude`** | `string[]` - - Exclude any files from scanning, building, etc. Defaults to exclude common test file locations: `['**/node_modules/**/*', '**/__tests__/*', '**/*.@(spec|test).@(js|mjs)']` - - Useful for excluding tests and other unnecessary files from the final build. Supports glob pattern matching. -- **`install`** | `string[]` - - Known dependencies to install with Snowpack. Useful for installing packages manually and any dependencies that couldn't be detected by our automatic import scanner (ex: package CSS files). -- **`mount.*`** - - Mount local directories to custom URLs in your built application. -- **`alias.*`** - - Configure import aliases for directories and packages. See the section below for all options. -- **`proxy.*`** - - Configure the dev server to proxy requests. See the section below for all options. -- **`plugins`** - - Extend Snowpack with third-party tools and plugins. See the section below for more info. -- **`installOptions.*`** - - Configure how npm packages are installed. See the section below for all options. -- **`devOptions.*`** - - Configure your dev server. See the section below for all options. -- **`buildOptions.*`** - - Configure your build. See the section below for all options. -- **`testOptions.*`** - - Configure your tests. See the section below for all options. - -#### `config.installOptions` - -`object` (options) - -Settings that determine how Snowpack handles installing modules. - -Example: - -```js -installOptions: { - installTypes: isTS, -} -``` - -Options: - -- **`installOptions.dest`** | `string` - - _Default:`"web_modules"`_ - - Configure the install directory. -- **`installOptions.sourceMap`** | `boolean` - - Emit source maps for installed packages. -- **`installOptions.env`** | `{[ENV_NAME: string]: (string | true)}` - - Sets a `process.env.` environment variable inside the installed dependencies. If set to true (ex: `{NODE_ENV: true}` or `--env NODE_ENV`) this will inherit from your current shell environment variable. Otherwise, set to a string (ex: `{NODE_ENV: 'production'}` or `--env NODE_ENV=production`) to set the exact value manually. -- **`installOptions.treeshake`** | `boolean` - - _Default:`false`, or `true` when run with `snowpack build`_ - - Treeshake your dependencies to optimize your installed files. Snowpack will scan your application to detect which exact imports are used from each package, and then will remove any unused imports from the final install via dead-code elimination (aka tree shaking). -- **`installOptions.installTypes`** | `boolean` - - Install TypeScript type declarations with your packages. Requires changes to your [tsconfig.json](#typescript) to pick up these types. -- **`installOptions.alias`** | `{[mapFromPackageName: string]: string}` - - Alias an installed package name. This applies to imports within your application and within your installed dependency graph. - - Example: `"alias": {"react": "preact/compat", "react-dom": "preact/compat"}` -- **`installOptions.namedExports`** | `string[]` - - _NOTE(v2.13.0): Snowpack now automatically supports named exports for most Common.js packages. This configuration remains for any package that Snowpack can't handle automatically. In most cases, this should no longer be needed._ - - Import CJS packages using named exports (Example: `import {useTable} from 'react-table'`). - - Example: `"namedExports": ["react-table"]` -- **`installOptions.externalPackage`** | `string[]` - - _NOTE: This is an advanced feature, and may not do what you want! Bare imports are not supported in any major browser, so an ignored import will usually fail when sent directly to the browser._ - - Mark some imports as external. Snowpack won't install them and will ignore them when resolving imports. - - Example: `"externalPackage": ["fs"]` -- **`installOptions.rollup`** | `Object` - - Snowpack uses Rollup internally to install your packages. This `rollup` config option gives you deeper control over the internal rollup configuration that we use. - - **`installOptions.rollup.plugins`** - Specify [Custom Rollup plugins](#installing-non-js-packages) if you are dealing with non-standard files. - - **`installOptions.rollup.dedupe`** - If needed, deduplicate multiple versions/copies of a packages to a single one. This helps prevent issues with some packages when multiple versions are installed from your node_modules tree. See [rollup-plugin-node-resolve](https://github.com/rollup/plugins/tree/master/packages/node-resolve#usage) for more documentation. - - **`installOptions.rollup.context`** - Specify top-level `this` value. Useful to silence install errors caused by legacy common.js packages that reference a top-level this variable, which does not exist in a pure ESM environment. Note that the `'THIS_IS_UNDEFINED'` warning (`The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten`) is silenced by default, unless `--verbose` is used. - -#### `config.devOptions` - -`object` (options) - -Settings that determine how the Snowpack dev environment behaves. - -Example: - -```js -devOptions: { - port: 4000, - open: "none", -} -``` - -Options: - -- **`devOptions.port`** | `number` | Default: `8080` - - The port number to run the dev server on. -- **`devOptions.bundle`** | `boolean` - - Create an optimized, bundled build for production. - - You must have [Parcel](https://parceljs.org/) as a dev dependency in your project. - - If undefined, this option will be enabled if the `parcel` package is found. -- **`devOptions.fallback`** | `string` | Default: `"index.html"` - - When using the Single-Page Application (SPA) pattern, this is the HTML "shell" file that gets served for every (non-resource) user route. Make sure that you configure your production servers to serve this as well. -- **`devOptions.open`** | `string` | Default: `"default"` - - Opens the dev server in a new browser tab. If Chrome is available on macOS, an attempt will be made to reuse an existing browser tab. Any installed browser may also be specified. E.g., "chrome", "firefox", "brave". Set "none" to disable. -- **`devOptions.output`** | `"stream" | "dashboard"` | Default: `"dashboard"` - - Set the output mode of the `dev` console. - - `"dashboard"` delivers an organized layout of console output and the logs of any connected tools. This is recommended for most users and results in the best logging experience. - - `"stream"` is useful when Snowpack is run in parallel with other commands, where clearing the shell would clear important output of other commands running in the same shell. -- **`devOptions.hostname`** | `string` | Default: `localhost` - - The hostname where the browser tab will be open. -- **`devOptions.hmr`** | `boolean` | Default: `true` - - Toggles whether or not Snowpack dev server should have HMR enabled. -- **`devOptions.hmrErrorOverlay`** | `boolean` | Default: `true` - - When HMR is enabled, toggles whether or not a browser overlay should display javascript errors. -- **`devOptions.secure`** | `boolean` - - Toggles whether or not Snowpack dev server should use HTTPS with HTTP2 enabled. -- **`devOptions.out`** | `string` | Default: `"build"` - - _NOTE:_ Deprecated, see `buildOptions.out`. - - The local directory that we output your final build to. - -#### `config.buildOptions` - -`object` (options) - -Determines how Snowpack processes the final build. - -Example: - -```js -buildOptions: { - sourceMaps: true, - baseUrl: '/home', - metaDir: 'static/snowpack', - webModulesUrl: 'web' -} -``` - -Options: - -- **`buildOptions.out`** | `string` | Default: `"build"` - - The local directory that we output your final build to. -- **`buildOptions.baseUrl`** | `string` | Default: `/` - - In your HTML, replace all instances of `%PUBLIC_URL%` with this (inspired by the same [Create React App](https://create-react-app.dev/docs/using-the-public-folder/) concept). This is useful if your app will be deployed to a subdirectory. _Note: if you have `homepage` in your `package.json`, Snowpack will actually pick up on that, too._ -- **`buildOptions.clean`** | `boolean` | Default: `false` - - Set to `true` if Snowpack should erase the build folder before each build. -- **`buildOptions.metaDir`** | `string` | Default: `__snowpack__` - - By default, Snowpack outputs Snowpack-related metadata such as [HMR](#hot-module-replacement) and [ENV](#environment-variables) info to a folder called `__snowpack__`. You can rename that folder with this option (e.g.: `metaDir: 'static/snowpack'`). -- **`buildOptions.sourceMaps`** | `boolean` | Default: `false` - - **_Experimental:_** Set to `true` to enable source maps -- **`buildOptions.webModulesUrl`** | `string` | Default: `web_modules` - - Rename your web modules directory. - -#### `config.testOptions` - -`object` (options) - -Settings that determine how the Snowpack test environment behaves. - -Example: - -```js -testOptions: { - files: ['my-test-dir/*.test.js']; -} -``` - -Options: - -- **`testOptions.files`** | `string[]` | Default: `["__tests__/**/*", "**/*.@(spec|test).*"]` - - The location of all test files. - - All matching test files are scanned for installable dependencies during development, but excluded from both scanning and building in your final build. - -#### `config.proxy` - -`object` (path: options) - -If desired, `"proxy"` is where you configure the proxy behavior of your dev server. Define different paths that should be proxied, and where they should be proxied to. - -The short form of a full URL string is enough for general use. For advanced configuration, you can use the object format to set all options supported by [http-proxy](https://github.com/http-party/node-http-proxy). - -This configuration has no effect on the final build. - -Example: - -```js -// snowpack.config.json -{ - "proxy": { - // Short form: - "/api/01": "https://pokeapi.co/api/v2/", - // Long form: - "/api/02": { - on: { proxyReq: (p, req, res) => /* Custom event handlers (JS only) */ }, - /* Custom http-proxy options */ - } - } -} -``` - -Options: - -- **`"path".on`** | `object` (string: function) - - `on` is a special Snowpack property for setting event handler functions on proxy server events. See the section on ["Listening for Proxy Events"](https://github.com/http-party/node-http-proxy#listening-for-proxy-events) for a list of all supported events. You must be using a `snowpack.config.js` JavaScript configuration file to set this. -- All options supported by [http-proxy](https://github.com/http-party/node-http-proxy). - -#### `config.mount` - -``` -mount: { - [path: string]: string | {url: string, static: boolean, resolve: boolean} -} -``` - -The `mount` configuration lets you customize which directories should be included in your Snowpack build, and what URL they are mounted to. Given the following example configuration, you could expect the following results: - -```js -// Example: Basic "mount" usage -// snowpack.config.json -{ - "mount": { - "src": "/_dist_", - "public": "/" - } -} -``` - -``` -GET /src/a.js -> 404 NOT FOUND ("./src" is mounted to "/_dist_/*", not "/src/*") -GET /_dist_/a.js -> ./src/a.js -GET /_dist_/b/b.js -> ./src/b/b.js -GET /public/robots.txt -> 404 NOT FOUND ("./public" dir is mounted to "/*", not "/public/*") -GET /robots.txt -> ./public/robots.txt -``` - -By default, Snowpack builds every mounted file by passing it through Snowpack's build pipeline. - -**\*New in Snowpack `v2.15.0`:** You can customize the build behavior for a mounted directory using the expanded object notation: - -- `url` _required_: The URL to mount to, matching the simple form above. -- `static` _optional, default: false_: If true, don't build files in this directory and serve them directly to the browser. -- `resolve` _optional, default: true_: If false, don't resolve JS & CSS imports in your JS, CSS, and HTML files and send every import to the browser, as written. We recommend that you don't disable this unless absolutely necessary, since it prevents Snowpack from handling your imports to things like packages, JSON files, CSS modules, and more. - -```js -// Example: Advanced "mount" usage -// snowpack.config.json -{ - "mount": { - // Same behavior as the "src" example above: - "src": {url: "/_dist_"}, - // Mount "public" to the root URL path ("/*") and serve files with zero transformations: - "public": {url: "/", static: true, resolve: false} - } -} -``` - -#### `config.alias` - -`object` (package: package or path) - -> Note: In an older version of Snowpack, all mounted directories were also available as aliases by default. As of Snowpack 2.7, this is no longer the case and no aliases are defined by default. - -The `alias` config option lets you define an import alias in your application. When aliasing a package, this allows you to import that package by another name in your application. This applies to imports inside of your dependencies as well, essentially replacing all references to the aliased package. - -Aliasing a local directory (any path that starts with "./") creates a shortcut to import that file or directory. While we don't necessarily recommend this pattern, some projects do enjoy using these instead of relative paths: - -```diff --import '../../../../../Button.js'; -+import '@app/Button.js'; -``` - -Example: - -```js -// snowpack.config.json -{ - alias: { - // Type 1: Package Import Alias - "lodash": "lodash-es", - "react": "preact/compat", - // Type 2: Local Directory Import Alias (relative to cwd) - "components": "./src/components" - "@app": "./src" - } -} -``` ## Assets - [Snowpack Logo (PNG, White)](/assets/snowpack-logo-white.png) diff --git a/docs/03-main-concepts.md b/www/_template/overview.md similarity index 96% rename from docs/03-main-concepts.md rename to www/_template/overview.md index 27b36ba313..6a2dec3eff 100644 --- a/docs/03-main-concepts.md +++ b/www/_template/overview.md @@ -1,6 +1,9 @@ -## Main Concepts +--- +layout: layouts/main.njk +title: Main Concepts +--- -### Unbundled Development +## Unbundled Development ![webpack vs. snowpack diagram](/img/snowpack-unbundled-example-3.png) @@ -18,7 +21,7 @@ Unbundled development has several advantages over the traditional bundled develo That last point is key: **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. -### Using NPM Dependencies +## Using NPM Dependencies NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. @@ -47,7 +50,7 @@ After Snowpack builds your dependencies, any package can be imported and run dir ``` -### Snowpack's Dev Server +## Snowpack's Dev Server ![dev command output example](/img/snowpack-dev-startup-2.png) @@ -55,13 +58,13 @@ After Snowpack builds your dependencies, any package can be imported and run dir Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](#plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! -### Snowpack's Build Pipeline +## Snowpack's Build Pipeline ![build output example](/img/snowpack-build-example.png) `snowpack build` - When you're ready to deploy your application, run the build command to generate a static production build of your site. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. -### Bundle for Production +## Bundle for Production **You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. diff --git a/docs/07-plugins.md b/www/_template/plugins.md similarity index 95% rename from docs/07-plugins.md rename to www/_template/plugins.md index 5789339f1b..4162731003 100644 --- a/docs/07-plugins.md +++ b/www/_template/plugins.md @@ -1,4 +1,7 @@ -## Plugins +--- +layout: layouts/main.njk +title: Plugins +--- Snowpack isn't just a build tool for JavaScript, it is a build tool for your entire website. Babel, TypeScript, PostCSS, SVGR and any favorite build tool can be connected directly into Snowpack via 1-line plugins. @@ -11,7 +14,7 @@ Snowpack plugins can be added to: 👉 **[Check out our advanced guide](/plugins) and learn how to create your own plugin.** -### Connect a Plugin +## Connect a Plugin To make a plugin available, you have to put it in your project `devDependencies` list (`package.json`) which will install it locally (in your project) and make it available to snowpack. @@ -46,11 +49,11 @@ This is all you need to add Babel to your application build pipeline. If the plu NOTE: The **order** of plugins is important, for example, if there are multiple plugins that load/build particular type of file, the first matching will take precedence. If it succeeds in the build task for the file, others will not be called for that particular build task. -### Connect any Script/CLI +## Connect any Script/CLI If you can't find a plugin that fits your needs and don't want to write your own, you can also run CLI commands directly as a part of your build using one of our two utility plugins: `@snowpack/plugin-build-script` & `@snowpack/plugin-run-script`. -#### @snowpack/plugin-build-script +### @snowpack/plugin-build-script ```js // snowpack.config.json @@ -64,7 +67,7 @@ If you can't find a plugin that fits your needs and don't want to write your own This plugin allows you to connect any CLI into your build process. Just give it a `cmd` CLI command that can take input from `stdin` and emit the build result via `stdout`. Check out the README for more information. -#### @snowpack/plugin-run-script +### @snowpack/plugin-run-script ```js // snowpack.config.json @@ -78,7 +81,7 @@ This plugin allows you to connect any CLI into your build process. Just give it This plugin allows you to run any CLI command as a part of your dev and build workflow. This plugin doesn't affect your build output, but it is useful for connecting developer tooling directly into Snowpack. Use this to add meaningful feedback to your dev console as you type, like TypeScript type-checking and ESLint lint errors. -### Official Plugins +## Official Plugins - [@snowpack/plugin-babel](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-babel) - [@snowpack/plugin-dotenv](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) @@ -90,7 +93,7 @@ This plugin allows you to run any CLI command as a part of your dev and build wo 👉 **[Check out our full list](/plugins) of official plugins.** -### Community Plugins +## Community Plugins - [snowpack-plugin-mdx](https://www.npmjs.com/package/snowpack-plugin-mdx) - [snowpack-plugin-stylus](https://www.npmjs.com/package/snowpack-plugin-stylus) diff --git a/docs/09-troubleshooting.md b/www/_template/support.md similarity index 87% rename from docs/09-troubleshooting.md rename to www/_template/support.md index a6a017c6d7..0218706e9c 100644 --- a/docs/09-troubleshooting.md +++ b/www/_template/support.md @@ -1,6 +1,9 @@ -## Troubleshooting +--- +layout: layouts/main.njk +title: Troubleshooting +--- -### No such file or directory +## No such file or directory ``` ENOENT: no such file or directory, open …/node_modules/csstype/index.js @@ -10,13 +13,13 @@ This error message would sometimes occur in older versions of Snowpack. **To solve this issue:** Upgrade to Snowpack `v2.6.0` or higher. If you continue to see this unexpected error in newer versions of Snowpack, please file an issue. -### Package exists but package.json "exports" does not include entry +## Package exists but package.json "exports" does not include entry Node.js recently added support for a package.json "exports" entry that defines which files you can and cannot import from within a package. Preact, for example, defines an "exports" map that allows you to to import "preact/hooks" but not "preact/some/custom/file-path.js". This allows packages to control their "public" interface. If you see this error message, that means that you've imported a file path not allowed in the export map. If you believe this to be an error, reach out to the package author to request the file be added to their export map. -### Uncaught SyntaxError: The requested module '/web_modules/XXXXXX.js' does not provide an export named 'YYYYYY' +## Uncaught SyntaxError: The requested module '/web_modules/XXXXXX.js' does not provide an export named 'YYYYYY' This is usually seen when importing a named export from a package written in the older Common.js format. Snowpack will automatically scan legacy Common.js packages to detect its named exports, but sometimes these exports can't be detected statically. @@ -30,7 +33,7 @@ This is usually seen when importing a named export from a package written in the } ``` -### Installing Non-JS Packages +## Installing Non-JS Packages When installing packages from npm, you may encounter some file formats that can only run with additional parsing/processing. First check to see if there is a [Snowpack plugin for the type of file](#plugins). diff --git a/www/css/_base.scss b/www/css/_base.scss index 3ddcf5c0bc..e4184c861f 100644 --- a/www/css/_base.scss +++ b/www/css/_base.scss @@ -1,6 +1,7 @@ // typography -$body: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, - sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; +$body: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, + Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, + Segoe UI Symbol, Noto Color Emoji; $heading: 'Overpass', $body; // breakpoints @@ -129,6 +130,10 @@ img.company-logo { } } +.grid-body .markdown-body { + padding-top: 52px; +} + .grid-body-header { line-height: 1.5; margin: 3rem 0 0; @@ -530,7 +535,7 @@ img.company-logo { background: #258ad622; } -.toc { +.menu { background: #2e5e82; min-height: 100%; padding: 1rem; diff --git a/www/css/_guides.scss b/www/css/_guides.scss index 7c9c91a256..cc23cf5693 100644 --- a/www/css/_guides.scss +++ b/www/css/_guides.scss @@ -47,6 +47,10 @@ } } +.menu .back { + margin: 10px 0; + display: block; +} .guide { .grid-body-header { margin-bottom: 4rem; diff --git a/www/package.json b/www/package.json index fcad8612fa..7f300c9802 100644 --- a/www/package.json +++ b/www/package.json @@ -2,12 +2,12 @@ "name": "snowpack-www", "version": "3.0.0", "scripts": { - "start": "yarn build:md && concurrently 'snowpack dev' 'yarn build:sass --watch'", - "build": "ELEVENTY_ENV=prod yarn build:md && yarn build:sass && snowpack build && yarn build:css", + "start": "concurrently 'snowpack dev' 'yarn build:sass --watch'", + "build": "ELEVENTY_ENV=prod yarn build:sass && snowpack build && yarn build:css", "test": "jest /__test__/", + "dev": "concurrently 'eleventy --serve' 'yarn build:sass --watch'", "format": "prettier --write \"src/**/*.js\"", "lint": "prettier --check \"src/**/*.js\"", - "build:md": "cat ../docs/* > _template/index.md", "build:css": "postcss _site/assets/*.css -u postcss-preset-env cssnano -r --no-map", "build:sass": "sass css/app.scss:_template/assets/app.min.css --no-source-map" }, diff --git a/www/vercel.json b/www/vercel.json index 6b8a24a893..9ade02d5d3 100644 --- a/www/vercel.json +++ b/www/vercel.json @@ -1,9 +1,3 @@ { - "routes": [ - { - "src": "/plugins.*", - "status": 308, - "headers": {"Location": "/guides/plugins"} - } - ] + "routes": [] } From 7052d54340851bf48507942c7056ac66c716a381 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Mon, 2 Nov 2020 16:53:19 -0600 Subject: [PATCH 04/33] stub for docs readme --- www/README.md | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-) diff --git a/www/README.md b/www/README.md index 975b5389d1..160a726189 100644 --- a/www/README.md +++ b/www/README.md @@ -1,24 +1,5 @@ -# New Project +# Snowpack Docs -> ✨ Bootstrapped with Create Snowpack App (CSA). - -## Available Scripts - -### npm start - -Runs the app in the development mode. -Open http://localhost:8080 to view it in the browser. - -The page will reload if you make edits. -You will also see any lint errors in the console. - -### npm run build - -Builds a static copy of your site to the `build/` folder. -Your app is ready to be deployed! - -**For the best production performance:** Add a build bundler plugin like [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-webpack) or [snowpack-plugin-rollup-bundle](https://github.com/ParamagicDev/snowpack-plugin-rollup-bundle) to your `snowpack.config.json` config file. - -### Q: What about Eject? - -No eject needed! Snowpack guarantees zero lock-in, and CSA strives for the same. +- Markdown files that become pages are in `/template` +- SASS files in `css` +- templates in `_includes` From 33402d1be4472c8ec5920df0b15fa9e14ab05fec Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Tue, 3 Nov 2020 11:41:20 -0600 Subject: [PATCH 05/33] removing JSX guide (#1490) --- www/_template/features.md | 6 ++++++ www/_template/guides/jsx.md | 11 ----------- 2 files changed, 6 insertions(+), 11 deletions(-) delete mode 100644 www/_template/guides/jsx.md diff --git a/www/_template/features.md b/www/_template/features.md index dcedcea19e..5889ca0e31 100644 --- a/www/_template/features.md +++ b/www/_template/features.md @@ -350,3 +350,9 @@ module.exports = { ``` [See an example setup](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-react) in on of our Create Snowpack App starter templates. + +## JSX + +Snowpack has built-in support to handle `.jsx` & `.tsx` source files in your application. + +**Note: Snowpack's default build does not support JSX in `.js`/`.ts` files.** If you can't use the `.jsx`/`.tsx` file extension, you can use [Babel](#babel) to build your application instead. diff --git a/www/_template/guides/jsx.md b/www/_template/guides/jsx.md deleted file mode 100644 index 62bc8ec776..0000000000 --- a/www/_template/guides/jsx.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -layout: layouts/main.njk -title: JSX -tags: guides ---- - -## JSX - -Snowpack has built-in support to handle `.jsx` & `.tsx` source files in your application. - -**Note: Snowpack's default build does not support JSX in `.js`/`.ts` files.** If you can't use the `.jsx`/`.tsx` file extension, you can use [Babel](#babel) to build your application instead. From d29f3b8f71d6d72cbb1b0a9ff6f9d258e93de168 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Tue, 3 Nov 2020 11:46:17 -0600 Subject: [PATCH 06/33] Move plugin-related guide stubs to plugins (#1492) * moving a couple of guides to plugins * deleting svelte --- www/_template/guides/babel.md | 16 ------- www/_template/guides/sass.md | 16 ------- www/_template/guides/svelte.md | 12 ----- www/_template/guides/typescript.md | 16 ------- www/_template/guides/webpack.md | 19 -------- www/_template/plugins.md | 75 ++++++++++++++++++++++++------ 6 files changed, 61 insertions(+), 93 deletions(-) delete mode 100644 www/_template/guides/babel.md delete mode 100644 www/_template/guides/sass.md delete mode 100644 www/_template/guides/svelte.md delete mode 100644 www/_template/guides/typescript.md delete mode 100644 www/_template/guides/webpack.md diff --git a/www/_template/guides/babel.md b/www/_template/guides/babel.md deleted file mode 100644 index 55326590d2..0000000000 --- a/www/_template/guides/babel.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: layouts/main.njk -title: Babel -tags: guides ---- - -## Babel - -Snowpack already comes with built-in support for building JavaScript, TypeScript, and JSX. However, If you would like to run your build through Babel instead, you can replace our default file builder with the official Snowpack Babel plugin. - -The plugin will automatically read plugins & presets from your local project `babel.config.*` config file, if one exists. - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-babel"], -``` diff --git a/www/_template/guides/sass.md b/www/_template/guides/sass.md deleted file mode 100644 index f33f9d74b5..0000000000 --- a/www/_template/guides/sass.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: layouts/main.njk -title: Sass -tags: guides ---- - -### Sass - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-sass"] -``` - -[Sass](https://www.sass-lang.com/) is a stylesheet language that’s compiled to CSS. It allows you to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects. - -To use Sass + PostCSS, check out [this guide](https://zellwk.com/blog/eleventy-snowpack-sass-postcss/). diff --git a/www/_template/guides/svelte.md b/www/_template/guides/svelte.md deleted file mode 100644 index 8e142fe75a..0000000000 --- a/www/_template/guides/svelte.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -layout: layouts/main.njk -title: Svelte -tags: guides ---- - -## Svelte - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-svelte"] -``` diff --git a/www/_template/guides/typescript.md b/www/_template/guides/typescript.md deleted file mode 100644 index 82b1335ffd..0000000000 --- a/www/_template/guides/typescript.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: layouts/main.njk -title: TypeScript -tags: guides ---- - -## TypeScript - -Snowpack includes built-in support to build all TypeScript source files (`.ts` & `.tsx`) in your application. - -For automatic TypeScript type checking during development, add the official [@snowpack/plugin-typescript](https://www.npmjs.com/package/@snowpack/plugin-typescript) plugin to your Snowpack config file. This plugin adds automatic `tsc` type checking results right in the Snowpack dev console. - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-typescript"] -``` diff --git a/www/_template/guides/webpack.md b/www/_template/guides/webpack.md deleted file mode 100644 index f75f6164f6..0000000000 --- a/www/_template/guides/webpack.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: layouts/main.njk -title: Webpack -tags: guides ---- - -### Webpack - -```js -// snowpack.config.json -{ - // Optimize your production builds with Webpack - "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] -} -``` - -Snowpack ships an official [webpack plugin](https://www.npmjs.com/package/@snowpack/plugin-webpack) for optimizing your build. Connect the `"@snowpack/plugin-webpack"` plugin into your Snowpack configuration file and then run `snowpack build` to see your optimized, bundled build. - -See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. diff --git a/www/_template/plugins.md b/www/_template/plugins.md index 4162731003..470a708d8e 100644 --- a/www/_template/plugins.md +++ b/www/_template/plugins.md @@ -14,6 +14,26 @@ Snowpack plugins can be added to: 👉 **[Check out our advanced guide](/plugins) and learn how to create your own plugin.** +## Official Plugins + +- [@snowpack/plugin-babel](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-babel) +- [@snowpack/plugin-dotenv](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) +- [@snowpack/plugin-postcss](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-postcss) +- [@snowpack/plugin-react-refresh](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-react-refresh) +- [@snowpack/plugin-svelte](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-svelte) +- [@snowpack/plugin-vue](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-vue) +- [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-webpack) + +👉 **[Check out our full list](/plugins) of official plugins.** + +## Community Plugins + +- [snowpack-plugin-mdx](https://www.npmjs.com/package/snowpack-plugin-mdx) +- [snowpack-plugin-stylus](https://www.npmjs.com/package/snowpack-plugin-stylus) +- [snowpack-plugin-import-map](https://github.com/zhoukekestar/snowpack-plugin-import-map) + +👉 **[Find your community plugin on npm.](https://www.npmjs.com/search?q=keywords:snowpack%20plugin)** + ## Connect a Plugin To make a plugin available, you have to put it in your project `devDependencies` list (`package.json`) which will install it locally (in your project) and make it available to snowpack. @@ -81,22 +101,49 @@ This plugin allows you to connect any CLI into your build process. Just give it This plugin allows you to run any CLI command as a part of your dev and build workflow. This plugin doesn't affect your build output, but it is useful for connecting developer tooling directly into Snowpack. Use this to add meaningful feedback to your dev console as you type, like TypeScript type-checking and ESLint lint errors. -## Official Plugins +## @snowpack/plugin-sass -- [@snowpack/plugin-babel](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-babel) -- [@snowpack/plugin-dotenv](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) -- [@snowpack/plugin-postcss](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-postcss) -- [@snowpack/plugin-react-refresh](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-react-refresh) -- [@snowpack/plugin-svelte](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-svelte) -- [@snowpack/plugin-vue](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-vue) -- [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-webpack) +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-sass"] +``` -👉 **[Check out our full list](/plugins) of official plugins.** +[Sass](https://www.sass-lang.com/) is a stylesheet language that’s compiled to CSS. It allows you to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects. -## Community Plugins +To use Sass + PostCSS, check out [this guide](https://zellwk.com/blog/eleventy-snowpack-sass-postcss/). -- [snowpack-plugin-mdx](https://www.npmjs.com/package/snowpack-plugin-mdx) -- [snowpack-plugin-stylus](https://www.npmjs.com/package/snowpack-plugin-stylus) -- [snowpack-plugin-import-map](https://github.com/zhoukekestar/snowpack-plugin-import-map) +## @snowpack/plugin-typescript -👉 **[Find your community plugin on npm.](https://www.npmjs.com/search?q=keywords:snowpack%20plugin)** +Snowpack includes built-in support to build all TypeScript source files (`.ts` & `.tsx`) in your application. + +For automatic TypeScript type checking during development, add the official [@snowpack/plugin-typescript](https://www.npmjs.com/package/@snowpack/plugin-typescript) plugin to your Snowpack config file. This plugin adds automatic `tsc` type checking results right in the Snowpack dev console. + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-typescript"] +``` + +## @snowpack/plugin-webpack + +```js +// snowpack.config.json +{ + // Optimize your production builds with Webpack + "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] +} +``` + +Snowpack ships an official [webpack plugin](https://www.npmjs.com/package/@snowpack/plugin-webpack) for optimizing your build. Connect the `"@snowpack/plugin-webpack"` plugin into your Snowpack configuration file and then run `snowpack build` to see your optimized, bundled build. + +See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. + +## @snowpack/plugin-babel + +Snowpack already comes with built-in support for building JavaScript, TypeScript, and JSX. However, If you would like to run your build through Babel instead, you can replace our default file builder with the official Snowpack Babel plugin. + +The plugin will automatically read plugins & presets from your local project `babel.config.*` config file, if one exists. + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-babel"], +``` From eb5264420e4cb3e5695df2deb246c750314fcb29 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Tue, 3 Nov 2020 14:20:36 -0600 Subject: [PATCH 07/33] Moving Create-Snowpack-App to its own page, minor changes to Getting Started page (#1494) * refactoring getting started, create-snowpack-app page * fixing typo * fixing typo * fixing typo * moving in menu * deleting cra docs --- www/_includes/layouts/menu.njk | 5 +++ www/_template/getting-started.md | 58 +++++++------------------------- 2 files changed, 18 insertions(+), 45 deletions(-) diff --git a/www/_includes/layouts/menu.njk b/www/_includes/layouts/menu.njk index 3b606c33f1..53fd8d604b 100644 --- a/www/_includes/layouts/menu.njk +++ b/www/_includes/layouts/menu.njk @@ -6,6 +6,11 @@
  • Getting Started +
      +
    1. + Create Snowpack App +
    2. +
  • diff --git a/www/_template/getting-started.md b/www/_template/getting-started.md index ac8580141e..b4eed9f3f5 100644 --- a/www/_template/getting-started.md +++ b/www/_template/getting-started.md @@ -3,19 +3,17 @@ layout: layouts/main.njk title: Get Started --- -## Install Snowpack +## Quick start ```bash -# using npm -npm install --save-dev snowpack - -# using yarn -yarn add --dev snowpack +npx create-snowpack-app new-dir --template @snowpack/app-template-blank +cd new-dir +npm start ``` -Snowpack can also be installed globally via `npm install -g snowpack`. But, we recommend installing locally in every project via `--save-dev`/`--dev`. You can run the Snowpack CLI locally via package.json "scripts", npm's `npx snowpack`, or via `yarn snowpack`. +This uses [our create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) template to spin up a working Snowpack app. For a list of other templates available check out the [create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) docs. -## Quick Start +## Basic commands Here's a short list of what you can do with Snowpack: @@ -34,44 +32,14 @@ snowpack build --watch snowpack --help ``` -## Create Snowpack App (CSA) - -The easiest way to get started with Snowpack is via [Create Snowpack App (CSA)](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app). CSA automatically initializes a starter application for you with a pre-configured, Snowpack-powered dev environment. - -If you've ever used Create React App, this is a lot like that! +## Install Snowpack from scratch ```bash -npx create-snowpack-app new-dir --template [SELECT FROM BELOW] [--use-yarn] -``` - -## Official App Templates - -- [@snowpack/app-template-blank](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank) -- [@snowpack/app-template-blank-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank-typescript) -- [@snowpack/app-template-minimal](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-minimal) -- [@snowpack/app-template-react](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react) -- [@snowpack/app-template-react-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react-typescript) -- [@snowpack/app-template-preact](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-preact) -- [@snowpack/app-template-svelte](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-svelte) -- [@snowpack/app-template-vue](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-vue) -- [@snowpack/app-template-lit-element](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element) -- [@snowpack/app-template-lit-element-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element-typescript) -- [@snowpack/app-template-11ty](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-11ty) - -- **[See all community templates](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli#featured-community-templates)** - - - -## Migrating an Existing App - -Migrating an existing app to Snowpack is meant to be painless, since Snowpack supports most features and build tools that you're already using today (Babel, PostCSS, etc). If this is your first time using Snowpack you should start with a Create Snowpack App (CSA) template, copy over your "src" & "public" files from your old app, and then run `snowpack dev`, troubleshooting any remaining issues. +# using npm +npm install --save-dev snowpack -CSA is a good starting point for an existing application because it has a few common tools (like Babel) built in by default to replicate the full feature set of a traditional bundled app. CSA is also meant to be a drop-in replacement for Create React App, so any existing Create React App project should run via CSA with zero changes needed. +# using yarn +yarn add --dev snowpack +``` -If you run into issues, search the rest of our docs site for information about importing CSS [from JS](#javascript) and [from CSS](#import-css), [asset references](#import-images-%26-other-assets), and more. +Snowpack can also be installed globally via `npm install -g snowpack`. But, we recommend installing locally in every project via `--save-dev`/`--dev`. You can run the Snowpack CLI locally via package.json "scripts", npm's `npx snowpack`, or via `yarn snowpack`. From 11326d7dc91035dfe4ea23e2881c0fcddc3ff429 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Tue, 3 Nov 2020 14:21:52 -0600 Subject: [PATCH 08/33] removing tailwind and postcss guide stubs (#1493) --- www/_template/guides/postcss.md | 16 ----------- www/_template/guides/tailwind.md | 47 -------------------------------- 2 files changed, 63 deletions(-) delete mode 100644 www/_template/guides/postcss.md delete mode 100644 www/_template/guides/tailwind.md diff --git a/www/_template/guides/postcss.md b/www/_template/guides/postcss.md deleted file mode 100644 index 19cad56dee..0000000000 --- a/www/_template/guides/postcss.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: layouts/main.njk -title: PostCSS -tags: guides ---- - -## PostCSS - -```js -// snowpack.config.json -"plugins": [ - ["@snowpack/plugin-build-script", {"cmd": "postcss", "input": [".css"], "output": [".css"]}] -] -``` - -The [`postcss-cli`](https://github.com/postcss/postcss-cli) package must be installed manually. You can configure PostCSS with a `postcss.config.js` file in your current working directory. diff --git a/www/_template/guides/tailwind.md b/www/_template/guides/tailwind.md deleted file mode 100644 index 2e2d75b001..0000000000 --- a/www/_template/guides/tailwind.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -layout: layouts/main.njk -title: Tailwind -tags: guides ---- - -## Tailwind CSS - -You can add [Tailwind](https://tailwindcss.com) to any project via native CSS `@import`: - -```css -/* index.css */ -@import 'tailwindcss/dist/base.css'; -@import 'tailwindcss/dist/components.css'; -@import 'tailwindcss/dist/utilities.css'; -``` - -### Using Tailwind with PostCSS - -If you are using PostCSS in your project ([see above](#postcss)) then you can just add Tailwind as a plugin to your `postcss.config.js`: - -```js -// postcss.config.js -// Taken from: https://tailwindcss.com/docs/installation#using-tailwind-with-postcss -module.exports = { - plugins: [ - // ... - require('tailwindcss'), - require('autoprefixer'), - // ... - ], -}; -``` - -Once you have added the Tailwind PostCSS plugin, you can replace your native CSS `dist` imports with Tailwind's more powerful `base`, `components`, and `utilities` imports: - -```diff -/* index.css */ -- @import 'tailwindcss/dist/base.css'; -- @import 'tailwindcss/dist/components.css'; -- @import 'tailwindcss/dist/utilities.css'; -+ @import 'tailwindcss/base'; -+ @import 'tailwindcss/components'; -+ @import 'tailwindcss/utilities'; -``` - -Follow the official [Tailwind CSS Docs](https://tailwindcss.com/docs/installation/#using-tailwind-with-postcss) for more information. From 45a5d921588974578034fad310b3fdb62aeecb67 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Tue, 3 Nov 2020 14:23:12 -0600 Subject: [PATCH 09/33] removing supported libraries stub --- www/_template/guides/supported-libraries.md | 23 --------------------- 1 file changed, 23 deletions(-) delete mode 100644 www/_template/guides/supported-libraries.md diff --git a/www/_template/guides/supported-libraries.md b/www/_template/guides/supported-libraries.md deleted file mode 100644 index c3e818f3c5..0000000000 --- a/www/_template/guides/supported-libraries.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: layouts/main.njk -title: Supported Libraries -tags: guides ---- - -## Supported Libraries - -All of the following frameworks have been tested and guaranteed to work in Snowpack without issues. If you encounter an issue using any of the following, please file an issue. - -- React -- Preact -- JSX -- HTM -- lit-html -- Vue (see below) -- Svelte (see below) -- Tailwind CSS (see below) -- Sass (see below) -- and many more! -- Literally... every library should work with Snowpack! - -Some libraries use compile-to-JS file formats and do require a special build script or plugin. See the guide below for examples. From 38c6de96b5e19dd1fcbf392c0828dbf54eaf8878 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Tue, 3 Nov 2020 14:24:39 -0600 Subject: [PATCH 10/33] removing eslint --- www/_template/guides/eslint.md | 18 ------------------ 1 file changed, 18 deletions(-) delete mode 100644 www/_template/guides/eslint.md diff --git a/www/_template/guides/eslint.md b/www/_template/guides/eslint.md deleted file mode 100644 index d01831f3f5..0000000000 --- a/www/_template/guides/eslint.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -layout: layouts/main.njk -title: ESLint -tags: guides ---- - -### ESLint - -```js -// snowpack.config.json -"plugins": [ - ["@snowpack/plugin-run-script", { - "cmd": "eslint 'src/**/*.{js,jsx,ts,tsx}'", - // Optional: Use npm package "watch" to run on every file change - "watch": "watch \"$1\" src" - }] -] -``` From 69d08d33c136db60781967328ca69892770f153a Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Tue, 3 Nov 2020 15:25:46 -0600 Subject: [PATCH 11/33] outline/draft of getting started --- www/_template/features.md | 17 +++ www/_template/getting-started.md | 194 +++++++++++++++++++++++++++---- www/_template/overview.md | 14 --- 3 files changed, 188 insertions(+), 37 deletions(-) diff --git a/www/_template/features.md b/www/_template/features.md index 5889ca0e31..913a1f8c36 100644 --- a/www/_template/features.md +++ b/www/_template/features.md @@ -3,6 +3,23 @@ layout: layouts/main.njk title: Features --- +Here's a short list of what you can do with Snowpack: + +```bash +# Start your dev server, load your site locally +snowpack dev + +# Build your site for production +snowpack build + +# Build your site, but watch the file system and rebuild when files change. +# Great for local development with your own dev server (ex: Rails) +snowpack build --watch + +# See more helpful info +snowpack --help +``` + ## ES Modules (ESM) Snowpack was designed to support JavaScript's native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! diff --git a/www/_template/getting-started.md b/www/_template/getting-started.md index b4eed9f3f5..d60181db46 100644 --- a/www/_template/getting-started.md +++ b/www/_template/getting-started.md @@ -3,43 +3,191 @@ layout: layouts/main.njk title: Get Started --- -## Quick start +This guide will show you how to set up Snowpack from scratch. For specific frameworks like React and Svelte we have framework guides. Check out our full list of guides here. + +In this guide you'll learn + +- Snowpack's dev server +- Snowpack's build pipeline +- Using ESM! +- Using CSS +- Using node modules + +> 💡 Tip: the project we'll create here is [Create Snowpack App minimalist template](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/). For a list of other templates available check out the [create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) docs. + +## Install Snowpack + +Let's create an empty directory. You can use any tool of your choice or the command line as shown here: ```bash -npx create-snowpack-app new-dir --template @snowpack/app-template-blank -cd new-dir -npm start +mkdir my-first-snowpack +cd my-first-snowpack ``` -This uses [our create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) template to spin up a working Snowpack app. For a list of other templates available check out the [create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) docs. +Now let's enable it as a Node project -## Basic commands +```bash +npm init +``` -Here's a short list of what you can do with Snowpack: +> 💡 Tip: add the "--use-yarn" or "--use-pnpm" flag to use something other than npm -```bash -# Start your dev server, load your site locally -snowpack dev +This creates our `package.json`, now let's install Snowpack + +``` +npm install --save-dev snowpack +``` + +> 💡 Tip: Snowpack can also be installed globally via `npm install -g snowpack`. But, we recommend installing locally in every project via `--save-dev`/`--dev`. You can run the Snowpack CLI locally via package.json "scripts", npm's `npx snowpack`, or via `yarn snowpack`. + +## Snowpack Dev Server -# Build your site for production -snowpack build +`snowpack dev` - Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. -# Build your site, but watch the file system and rebuild when files change. -# Great for local development with your own dev server (ex: Rails) -snowpack build --watch +Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](#plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! -# See more helpful info -snowpack --help +To show you how it works let's create an `index.html` in your `my-first-snowpack` with the following contents: + +```html + + + + + + + Starter Snowpack App + + +

    Welcome to Snowpack!

    + + ``` -## Install Snowpack from scratch +Now let's add the Snowpack dev server to `package.json` under as the `start` script: + +```diff + "scripts": { ++ "start": "snowpack dev", + "test": "echo \"Error: no test specified\" && exit 1" + + }, + +``` + +Now you can run this on the command line to start the dev server + +``` +npm run start +``` + +When started it should show you the local host address and automatically open the page in your default browser. + +TODO: add image showing the console and the site + +Some key features: + +- try changing the index.html and saving while the server is running, the site should refresh and show changes automatically + +## ES Modules + +Snowpack was designed to support JavaScript's native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! + +All modern browsers support ESM, so Snowpack is able to ship this code directly to the browser during development. This is what makes Snowpack's **unbundled development** workflow possible. + +Let's create an example `hello-world.js` that creates a helloWorld ES module: + +```js +export function helloWorld() { + console.log('Hello World!'); +} +``` + +And let's use our new module by importing it using ESM syntax. Create an `index.js` that imports our new module: + +```js +import { helloWorld } from './hello-world.js'; + +helloWorld(); +``` + +Now let's finally add to our `index.html` at the bottom of the body tag + +```diff + +

    Welcome to Snowpack!

    ++ + +``` + +> 💡 Tip: Snowpack detects the files in `index.html` for processing + +Check your console and you should see the Hello World + +## Using NPM Packages + +Snowpack lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. + +When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. + +Let's install a package and use it ```bash -# using npm -npm install --save-dev snowpack +npm install --save canvas-confetti +``` + +Now head to `index.js` and add this + +```diff +import { helloWorld } from './hello-world.js'; ++import confetti from 'canvas-confetti'; + +helloWorld(); ++confetti.create(document.getElementById('canvas'), { ++ resize: true, ++ useWorker: true, ++})({ particleCount: 200, spread: 200 }); + +``` + +Restart your Snowpack dev server and you should see this: +TODO: IMAGE/GIF + +> 💡 Tip: Sometimes node modules need to be polyfilled because TODO add links info/ + +## Adding CSS + +First add this css file as `index.css` -# using yarn -yarn add --dev snowpack +```css +body { + font-family: sans-serif; +} ``` -Snowpack can also be installed globally via `npm install -g snowpack`. But, we recommend installing locally in every project via `--save-dev`/`--dev`. You can run the Snowpack CLI locally via package.json "scripts", npm's `npx snowpack`, or via `yarn snowpack`. +Now let's include in our project by adding it to index.html in the `` + +```diff + ++ + Starter Snowpack App +``` + +## Build for production/deployment + +When you're ready to deploy your application, run the `snowpack build` command to generate a static production build of your site. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. + +Let's add this to package.json + +Now let's try it out. + +You should see a new directory called so and so with the things in it. + +You may also want to use a bundler or optimize the code to do this check out our docs. + +## Next Steps + +Congrads etc.! + +Check out all the other stuff you can try built into Snowpack (CSS modules, JSX etc.) + +Check out our guides! diff --git a/www/_template/overview.md b/www/_template/overview.md index 6a2dec3eff..6eaa9b066c 100644 --- a/www/_template/overview.md +++ b/www/_template/overview.md @@ -50,20 +50,6 @@ After Snowpack builds your dependencies, any package can be imported and run dir ``` -## Snowpack's Dev Server - -![dev command output example](/img/snowpack-dev-startup-2.png) - -`snowpack dev` - Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. - -Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](#plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! - -## Snowpack's Build Pipeline - -![build output example](/img/snowpack-build-example.png) - -`snowpack build` - When you're ready to deploy your application, run the build command to generate a static production build of your site. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. - ## Bundle for Production **You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. From 55e64c1aa621269695f8cba4b8eec67934ff166c Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Thu, 5 Nov 2020 17:53:50 -0600 Subject: [PATCH 12/33] copywriting --- www/_template/getting-started.md | 117 ++- www/_template/overview.md | 47 - www/index.md | 1423 ++++++++++++++++++++++++++++++ 3 files changed, 1519 insertions(+), 68 deletions(-) create mode 100644 www/index.md diff --git a/www/_template/getting-started.md b/www/_template/getting-started.md index d60181db46..c22e61b979 100644 --- a/www/_template/getting-started.md +++ b/www/_template/getting-started.md @@ -3,18 +3,26 @@ layout: layouts/main.njk title: Get Started --- -This guide will show you how to set up Snowpack from scratch. For specific frameworks like React and Svelte we have framework guides. Check out our full list of guides here. +This guide will show you how to set up Snowpack from scratch in a Node.js project. + +> 💡 Tip: For specific frameworks like React and Svelte we have framework guides. Check out our full list of guides here (TODO: INsert link). In this guide you'll learn -- Snowpack's dev server -- Snowpack's build pipeline -- Using ESM! -- Using CSS -- Using node modules +- Unbundled development: **Unbundled development** is the idea of shipping individual files to the browser during development. Files can still be built with your favorite tools (like Babel, TypeScript, Sass) and then loaded individually in the browser with dependencies thanks to ESM `import` and `export` syntax. Any time you change a file, Snowpack only ever needs to rebuild that single file. +- Using ESM: Snowpack leverages JavaScript's native module system (known as ESM) to create a first-of-its-kind build system that never builds the same file twice. Snowpack pushes changes instantly to the browser, saving you hours of development time traditionally spent waiting around for your bundler. +- Snowpack's dev server: Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) +- Snowpack's build pipeline: Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. + +- Using CSS: CSS is one of several built-in types of files that Snowpack can handle +- Using Node modules with ESM > 💡 Tip: the project we'll create here is [Create Snowpack App minimalist template](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/). For a list of other templates available check out the [create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) docs. +Prerequisites: Snowpack is a command line tool installed from npm. This guide assumes a basic understanding of Node.js, npm, and how to run commands in the terminal. + +Snowpack builds your site for both modern and legacy browsers, but during development you'll need to use a [modern browser](http://caniuse.com/#feat=es6-module). Any recent release of Firefox, Chrome, or Edge will do. This is required to support the modern, bundle-free ESM imports that load your application in the browser. + ## Install Snowpack Let's create an empty directory. You can use any tool of your choice or the command line as shown here: @@ -44,7 +52,7 @@ npm install --save-dev snowpack `snowpack dev` - Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. -Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](#plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! +Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](/plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! To show you how it works let's create an `index.html` in your `my-first-snowpack` with the following contents: @@ -80,7 +88,7 @@ Now you can run this on the command line to start the dev server npm run start ``` -When started it should show you the local host address and automatically open the page in your default browser. +Snowpack displays the local host address and automatically opens the page in your default browser. TODO: add image showing the console and the site @@ -119,15 +127,32 @@ Now let's finally add to our `index.html` at the bottom of the body tag ``` +Try making a change to the module. Snowpack will rebuild that module, but nothing else. With Snowpack **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. + > 💡 Tip: Snowpack detects the files in `index.html` for processing Check your console and you should see the Hello World ## Using NPM Packages -Snowpack lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. +NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. -When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. +**Snowpack takes a different approach:** Instead of bundling your entire application for this one requirement, Snowpack processes your dependencies separately. Here's how it works: + +``` +node_modules/react/**/* -> http://localhost:3000/web_modules/react.js +node_modules/react-dom/**/* -> http://localhost:3000/web_modules/react-dom.js +``` + +1. Snowpack scans your website/application for all used npm packages. +2. Snowpack reads these installed dependencies from your `node_modules` directory. +3. Snowpack bundles all of your dependencies separately into single JavaScript files. For example: `react` and `react-dom` are converted to `react.js` and `react-dom.js`, respectively. +4. Each resulting file can be run directly in the browser, and imported via ESM `import` statements. +5. Because your dependencies rarely change, Snowpack rarely needs to rebuild them. + +After Snowpack builds your dependencies, any package can be imported and run directly in the browser with zero additional bundling or tooling required. This ability to import npm packages natively in the browser (without a bundler) is the foundation that all unbundled development and the rest of Snowpack is built on top of. + +Snowpack lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. Let's install a package and use it @@ -135,23 +160,26 @@ Let's install a package and use it npm install --save canvas-confetti ``` -Now head to `index.js` and add this +Now head to `index.html` and add this ```diff -import { helloWorld } from './hello-world.js'; -+import confetti from 'canvas-confetti'; -helloWorld(); -+confetti.create(document.getElementById('canvas'), { -+ resize: true, -+ useWorker: true, -+})({ particleCount: 200, spread: 200 }); + ``` Restart your Snowpack dev server and you should see this: TODO: IMAGE/GIF +> 💡 Tip: When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. + > 💡 Tip: Sometimes node modules need to be polyfilled because TODO add links info/ ## Adding CSS @@ -174,15 +202,58 @@ Now let's include in our project by adding it to index.html in the `` ## Build for production/deployment +**You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. + +By default, `snowpack build` will build your site using the same unbundled approach as the `dev` command. + +See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. + When you're ready to deploy your application, run the `snowpack build` command to generate a static production build of your site. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. Let's add this to package.json -Now let's try it out. +```diff + "scripts": { + "start": "snowpack dev", ++ "build": "snowpack build", + "test": "echo \"Error: no test specified\" && exit 1" -You should see a new directory called so and so with the things in it. + }, + +``` + +Now let's try it out. Run this in your terminal + +```bash +npm run build +``` + +You should see a new directory called `build` that contains a copy of your Snowpack project ready for deployment. + +TODO: Image + +## Bundle for deployment + +`snowpack build` is fine for many projects, but you also may still want to bundle for production. Legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations can all be handled in Snowpack via bundling. -You may also want to use a bundler or optimize the code to do this check out our docs. +Bundlers normally require dozens or even hundreds of lines of configuration, but with Snowpack it's just a one-line plugin with no config required. This is possible because Snowpack builds your application _before_ sending it to the bundler, so the bundler never sees your custom source code (JSX, TS, Svelte, Vue, etc.) and instead only needs to worry about building common HTML, CSS, and JS. + +Let's use the Webpack plugin. First install it + +```bash +npm install @snowpack/plugin-webpack --save-dev +``` + +To tell snowpack to use it, we'll need to create a configuration file. Create a file named `snowpack.config.js` + +```js +// Bundlers plugins are pre-configured to work with Snowpack apps. +// No config required! + +module.exports = { + plugins: ['@snowpack/plugin-webpack'], +}; +``` ## Next Steps @@ -190,4 +261,8 @@ Congrads etc.! Check out all the other stuff you can try built into Snowpack (CSS modules, JSX etc.) +Check out examples + +Check out plugins + Check out our guides! diff --git a/www/_template/overview.md b/www/_template/overview.md index 6eaa9b066c..0a4abeb70e 100644 --- a/www/_template/overview.md +++ b/www/_template/overview.md @@ -20,50 +20,3 @@ Unbundled development has several advantages over the traditional bundled develo - Individual files cache better. That last point is key: **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. - -## Using NPM Dependencies - -NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. - -**Snowpack takes a different approach:** Instead of bundling your entire application for this one requirement, Snowpack processes your dependencies separately. Here's how it works: - -``` -node_modules/react/**/* -> http://localhost:3000/web_modules/react.js -node_modules/react-dom/**/* -> http://localhost:3000/web_modules/react-dom.js -``` - -1. Snowpack scans your website/application for all used npm packages. -2. Snowpack reads these installed dependencies from your `node_modules` directory. -3. Snowpack bundles all of your dependencies separately into single JavaScript files. For example: `react` and `react-dom` are converted to `react.js` and `react-dom.js`, respectively. -4. Each resulting file can be run directly in the browser, and imported via ESM `import` statements. -5. Because your dependencies rarely change, Snowpack rarely needs to rebuild them. - -After Snowpack builds your dependencies, any package can be imported and run directly in the browser with zero additional bundling or tooling required. This ability to import npm packages natively in the browser (without a bundler) is the foundation that all unbundled development and the rest of Snowpack is built on top of. - -```html - - - - -``` - -## Bundle for Production - -**You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. - -By default, `snowpack build` will build your site using the same unbundled approach as the `dev` command. This is fine for most projects, but you also may still want to bundle for production. Legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations can all be handled in Snowpack via bundling. - -Bundlers normally require dozens or even hundreds of lines of configuration, but with Snowpack it's just a one-line plugin with no config required. This is possible because Snowpack builds your application _before_ sending it to the bundler, so the bundler never sees your custom source code (JSX, TS, Svelte, Vue, etc.) and instead only needs to worry about building common HTML, CSS, and JS. - -```js -// Bundlers plugins are pre-configured to work with Snowpack apps. -// No config required! -{ - "plugins": [["@snowpack/plugin-webpack"]] -} -``` - -See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. diff --git a/www/index.md b/www/index.md new file mode 100644 index 0000000000..9d04eadfc2 --- /dev/null +++ b/www/index.md @@ -0,0 +1,1423 @@ +--- +layout: layouts/main.njk + +# Using Snowpack? Want to be featured on snowpack.dev? +# Add your project, organization, or company to the end of this list! +usersList: + - ia: + name: The Internet Archive + img: https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Internet_Archive_logo_and_wordmark.svg/1200px-Internet_Archive_logo_and_wordmark.svg.png + url: https://github.com/internetarchive/dweb-archive + - 1688: + name: Alibaba 1688 + img: https://s.cafebazaar.ir/1/icons/com.alibaba.intl.android.apps.poseidon_512x512.png + url: https://www.1688.com + - intel: + name: Intel + img: https://upload.wikimedia.org/wikipedia/commons/4/4e/Intel_logo_%282006%29.svg + url: https://twitter.com/kennethrohde/status/1227273971831332865 + - circlehd.com: + name: CircleHD + img: https://www.circlehd.com/img/logo-sm.svg + url: https://www.circlehd.com/ + - Svelvet: + name: Svelvet + img: https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/240/apple/237/spool-of-thread_1f9f5.png + url: https://github.com/jakedeichert/svelvet + - pika: + name: Pika.dev + img: https://www.pika.dev/static/img/logo5.svg + url: https://www.pika.dev + - Toast: + name: Toast + img: https://www.toast.dev/toast-icon-300.png + url: https://www.toast.dev + - maskable: + name: Maskable.app + img: https://maskable.app/favicon/favicon_196.png + url: https://maskable.app/ + - web-skills: + name: Web Skills + img: https://andreasbm.github.io/web-skills/www/icon.svg + url: https://andreasbm.github.io/web-skills + - swissdev-javascript: + name: SwissDev JavaScript Jobs + img: https://static.swissdevjobs.ch/pictures/swissdev-javascript-jobs.svg + url: https://swissdevjobs.ch/jobs/JavaScript/All + - tradie-training: + name: Tradie Training + img: https://tt.edu.au/images/logo.png + url: https://tt.edu.au + - wemake-services: + name: wemake.services + img: https://avatars0.githubusercontent.com/u/19639014?s=200&v=4 + url: https://github.com/wemake-services + - airhacks.com: + name: airhacks.com + img: https://airhacks.com/logo.svg + url: https://airhacks.com + - tongdun: + name: tongdun + img: https://www.tongdun.cn/static/favicon.ico + url: https://www.tongdun.cn/ + - blessing-skin: + name: Blessing Skin + img: https://blessing.netlify.app/logo.png + url: https://github.com/bs-community + - trpg-engine: + name: TRPG Engine + img: https://trpgdoc.moonrailgun.com/img/trpg_logo.png + url: https://trpgdoc.moonrailgun.com/ + - shein: + name: SHEIN + img: https://sheinsz.ltwebstatic.com/she_dist/images/touch-icon-ipad-144-47ceee2d97.png + url: https://www.shein.com/ +--- +## Overview + +### What is Snowpack? + +Snowpack is a modern frontend build tool for faster web development. It replaces heavier, more complex bundlers like webpack or Parcel in your development workflow. + +Snowpack leverages JavaScript's native module system (known as ESM) to create a first-of-its-kind build system that never builds the same file twice. Snowpack pushes changes instantly to the browser, saving you hours of development time traditionally spent waiting around for your bundler. + +### Key Features + +- Develop faster, with a dev server that starts up in **50ms or less.** +- See changes reflected [instantly in the browser.](/#hot-module-replacement) +- Integrate your favorite bundler for a [production-optimized build.](/#bundle-for-production) +- Enjoy out-of-the-box support for [TypeScript, JSX, CSS Modules and more.](/#features) +- Connect your favorite tools with [third-party plugins.](/#plugins) + +### Who's Using Snowpack? + + + +### How Snowpack Works + +**Snowpack is a modern, lightweight build tool for faster web development.** Traditional JavaScript build tools like webpack and Parcel need to rebuild & rebundle entire chunks of your application every time you save a single file. This rebundling step introduces lag between hitting save on your changes and seeing them reflected in the browser. + +Snowpack serves your application **unbundled during development.** Every file only needs to be built once and then is cached forever. When a file changes, Snowpack rebuilds that single file. There's no time wasted re-bundling every change, just instant updates in the browser (made even faster via [Hot-Module Replacement (HMR)](#hot-module-replacement)). You can read more about this approach in our [Snowpack 2.0 Release Post.](/posts/2020-05-26-snowpack-2-0-release/) + +Snowpack's **unbundled development** still supports the same **bundled builds** that you're used to for production. When you go to build your application for production, you can plug in your favorite bundler via an official Snowpack plugin for Webpack or Rollup (coming soon). With Snowpack already handling your build, there's no complex bundler config required. + +**Snowpack gets you the best of both worlds:** fast, unbundled development with optimized performance in your bundled production builds. + +### Library Support + +
    + +- React +- Preact +- Svelte +- Vue +- lit-html +- lit-element +- Styled Components +- Tailwind CSS +- [and more!](/#recipes) + + +
    + +### Tooling Support + +
    + +- Babel +- TypeScript +- PostCSS +- Sass +- esbuild +- 11ty +- [and more!](/#recipes) + + +
    + +### Browser Support + +**Snowpack builds your site for both modern and legacy browsers. Even IE11 is supported.** You can control and customize this behavior with the ["browserlist" package.json property](https://css-tricks.com/browserlist-good-idea/). + +The only requirement is that _during development_ you use a [modern browser](http://caniuse.com/#feat=es6-module). Any recent release of Firefox, Chrome, or Edge will do. This is required to support the modern, bundle-free ESM imports that load your application in the browser. + +### Community + +Join us on Discord! + +[Join the Pika Discord](https://discord.gg/rS8SnRk) for discussion, questions about Snowpack or related Pika projects, or to show off what you’re working on! +## Get Started + +### Install Snowpack + +```bash +# using npm +npm install --save-dev snowpack + +# using yarn +yarn add --dev snowpack +``` + +Snowpack can also be installed globally via `npm install -g snowpack`. But, we recommend installing locally in every project via `--save-dev`/`--dev`. You can run the Snowpack CLI locally via package.json "scripts", npm's `npx snowpack`, or via `yarn snowpack`. + +### Quick Start + +Here's a short list of what you can do with Snowpack: + +```bash +# Start your dev server, load your site locally +snowpack dev + +# Build your site for production +snowpack build + +# Build your site, but watch the file system and rebuild when files change. +# Great for local development with your own dev server (ex: Rails) +snowpack build --watch + +# See more helpful info +snowpack --help +``` + +### Create Snowpack App (CSA) + +The easiest way to get started with Snowpack is via [Create Snowpack App (CSA)](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app). CSA automatically initializes a starter application for you with a pre-configured, Snowpack-powered dev environment. + +If you've ever used Create React App, this is a lot like that! + +```bash +npx create-snowpack-app new-dir --template [SELECT FROM BELOW] [--use-yarn] +``` + +### Official App Templates + +- [@snowpack/app-template-blank](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank) +- [@snowpack/app-template-blank-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank-typescript) +- [@snowpack/app-template-minimal](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-minimal) +- [@snowpack/app-template-react](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react) +- [@snowpack/app-template-react-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react-typescript) +- [@snowpack/app-template-preact](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-preact) +- [@snowpack/app-template-svelte](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-svelte) +- [@snowpack/app-template-vue](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-vue) +- [@snowpack/app-template-lit-element](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element) +- [@snowpack/app-template-lit-element-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element-typescript) +- [@snowpack/app-template-11ty](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-11ty) + +- **[See all community templates](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli#featured-community-templates)** + + + +### Migrating an Existing App + +Migrating an existing app to Snowpack is meant to be painless, since Snowpack supports most features and build tools that you're already using today (Babel, PostCSS, etc). If this is your first time using Snowpack you should start with a Create Snowpack App (CSA) template, copy over your "src" & "public" files from your old app, and then run `snowpack dev`, troubleshooting any remaining issues. + +CSA is a good starting point for an existing application because it has a few common tools (like Babel) built in by default to replicate the full feature set of a traditional bundled app. CSA is also meant to be a drop-in replacement for Create React App, so any existing Create React App project should run via CSA with zero changes needed. + +If you run into issues, search the rest of our docs site for information about importing CSS [from JS](#javascript) and [from CSS](#import-css), [asset references](#import-images-%26-other-assets), and more. +## Main Concepts + +### Unbundled Development + +![webpack vs. snowpack diagram](/img/snowpack-unbundled-example-3.png) + +**Unbundled development** is the idea of shipping individual files to the browser during development. Files can still be built with your favorite tools (like Babel, TypeScript, Sass) and then loaded individually in the browser with dependencies thanks to ESM `import` and `export` syntax. Any time you change a file, Snowpack only ever needs to rebuild that single file. + +The alternative is **bundled development.** Almost every popular JavaScript build tool today focuses on bundled development. Running your entire application through a bundler introduces additional work and complexity to your dev workflow that is unnecessary now that ESM is widely supported. Every change -- on every save -- must be rebundled with the rest of your application before your changes can be reflected in your browser. + +Unbundled development has several advantages over the traditional bundled development approach: + +- Single-file builds are fast. +- Single-file builds are deterministic. +- Single-file builds are easier to debug. +- Project size doesn’t affect dev speed. +- Individual files cache better. + +That last point is key: **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. + +### Using NPM Dependencies + +NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. + +**Snowpack takes a different approach:** Instead of bundling your entire application for this one requirement, Snowpack processes your dependencies separately. Here's how it works: + +``` +node_modules/react/**/* -> http://localhost:3000/web_modules/react.js +node_modules/react-dom/**/* -> http://localhost:3000/web_modules/react-dom.js +``` + +1. Snowpack scans your website/application for all used npm packages. +2. Snowpack reads these installed dependencies from your `node_modules` directory. +3. Snowpack bundles all of your dependencies separately into single JavaScript files. For example: `react` and `react-dom` are converted to `react.js` and `react-dom.js`, respectively. +4. Each resulting file can be run directly in the browser, and imported via ESM `import` statements. +5. Because your dependencies rarely change, Snowpack rarely needs to rebuild them. + +After Snowpack builds your dependencies, any package can be imported and run directly in the browser with zero additional bundling or tooling required. This ability to import npm packages natively in the browser (without a bundler) is the foundation that all unbundled development and the rest of Snowpack is built on top of. + +```html + + + + +``` + +### Snowpack's Dev Server + +![dev command output example](/img/snowpack-dev-startup-2.png) + +`snowpack dev` - Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. + +Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](#plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! + +### Snowpack's Build Pipeline + +![build output example](/img/snowpack-build-example.png) + +`snowpack build` - When you're ready to deploy your application, run the build command to generate a static production build of your site. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. + +### Bundle for Production + +**You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. + +By default, `snowpack build` will build your site using the same unbundled approach as the `dev` command. This is fine for most projects, but you also may still want to bundle for production. Legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations can all be handled in Snowpack via bundling. + +Bundlers normally require dozens or even hundreds of lines of configuration, but with Snowpack it's just a one-line plugin with no config required. This is possible because Snowpack builds your application _before_ sending it to the bundler, so the bundler never sees your custom source code (JSX, TS, Svelte, Vue, etc.) and instead only needs to worry about building common HTML, CSS, and JS. + +```js +// Bundlers plugins are pre-configured to work with Snowpack apps. +// No config required! +{ + "plugins": [["@snowpack/plugin-webpack"]] +} +``` + +See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. +## JavaScript + +### ES Modules (ESM) + +Snowpack was designed to support JavaScript's native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! + +```js +// ESM Example - src/user.js +export function getUser() { + /* ... */ +} + +// src/index.js +import {getUser} from './user.js'; +``` + +All modern browsers support ESM, so Snowpack is able to ship this code directly to the browser during development. This is what makes Snowpack's **unbundled development** workflow possible. + +Snowpack also lets you import non-JavaScript files directly in your application. Snowpack handles all this for you automatically so there's nothing to configure, using the following logic: + +### Import NPM Packages + +```js +// Returns the React & React-DOM npm packages +import React from 'react'; +import ReactDOM from 'react-dom'; +``` + +Snowpack lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. + +When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. + +### Import JSON + +```js +// Returns the JSON object via the default import +import json from './data.json'; +``` + +Snowpack supports importing JSON files, which return the full JSON object in the default import. + +### Import CSS + +```js +// Loads './style.css' onto the page +import './style.css'; +``` + +Snowpack supports basic CSS imports inside of your JavaScript files. When you import a CSS file via the `import` keyword, Snowpack will automatically apply those styles to the page. This works for CSS and compile-to-CSS languages like Sass & Less. + +If you prefer, Snowpack also supports any popular CSS-in-JS library for styling. + +### Import CSS Modules + +```css +/* src/style.module.css */ +.error { + background-color: red; +} +``` + +```js +// 1. Converts './style.module.css' classnames to unique, scoped values. +// 2. Returns an object mapping the original classnames to their final, scoped value. +import styles from './style.module.css'; + +// This example uses JSX, but you can use CSS Modules with any framework. +return
    Your Error Message
    ; +``` + +Snowpack supports CSS Modules using the `[name].module.css` naming convention. CSS Modules work just like normal CSS imports, but with a special default `styles` export that maps your original classnames to unique identifiers. + +### Import Images & Other Assets + +```jsx +import img from './image.png'; // img === '/src/image.png' +import svg from './image.svg'; // svg === '/src/image.svg' + +// This example uses JSX, but you can use these references with any framework. +; +``` + +All other assets not explicitly mentioned above can be imported via ESM `import` and will return a URL reference to the final built asset. This can be useful for referencing non-JS assets by URL, like creating an image element with a `src` attribute pointing to that image. + +#### Coming Soon: Native Reference URLs + +Webpack 5.0 released support for native reference URLs to replace the original, fake ESM file import. If you are using a bundler that supports this (or, not using a bundler at all) we recommend updating your non-JS URL reference imports to use this more standard pattern. Once Rollup adds support as well, we will move to promote this to our recommended style. + +```jsx +const img = new URL('./image.png', import.meta.url); // img === '/src/image.png' +const svg = new URL('./image.svg', import.meta.url); // svg === '/src/image.svg' + +// This example uses JSX, but you can use these references with any framework. +; +``` + +## Features + +Snowpack ships with built-in support for the following file types, no configuration required: + +- JavaScript (`.js`, `.mjs`) +- TypeScript (`.ts`, `.tsx`) +- JSX (`.jsx`, `.tsx`) +- CSS (`.css`) +- CSS Modules (`.module.css`) +- Images (`.svg`, `.jpg`, `.png`, etc.) + +To customize build behavior and support new languages (`.scss`, `.svelte`, `.vue`), keep reading. + +### Import Aliases + +```js +// Instead of this: +import Button from `../../../../components/Button`; + +// You can do this: +import Button from `@app/components/Button`; +``` + +Snowpack supports setting custom import aliases for your project via the top-level `alias` property. This can be used to define an alias for either a local source directory (like aliasing `@app` to `./src`) or a package (like aliasing `react` to `preact/compat`). See the full documentation for `alias` below. + +**TypeScript Users:** You'll need to configure your `tsconfig.json` `paths` to get proper types from top-level imports. Learn more about ["path mappings"](https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping). + +```js +// tsconfig.json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + // Define either ONE of these... + // 1. General support: matches everything relative to the project directory + "*": ["*"], + // 2. Explicit support: match only your mounted directories (Recommended!) + "src/*": ["src/*"], + "public/*": ["public/*"], + } + } +} +``` + +### Environment Variables + +```js +// `import.meta.env` - Read process.env variables in your web app +fetch(`${import.meta.env.SNOWPACK_PUBLIC_API_URL}/users`).then(...) + +// Supports destructuring as well: +const {SNOWPACK_PUBLIC_API_URL} = import.meta.env; +fetch(`${SNOWPACK_PUBLIC_API_URL}/users`).then(...) + +// Instead of `import.meta.env.NODE_ENV` use `import.meta.env.MODE` +if (import.meta.env.MODE === 'development') { + // ... +``` + +You can read environment variables directly in your web application via `import.meta.env`. If you've ever used `process.env` in Create React App or any Webpack application, this behaves exactly the same. + +For your safety, Snowpack only supports environment variables that begin with `SNOWPACK_PUBLIC_*`. We do this because everything in your web application is sent to the browser, and we don't want you to accidentally share sensitive keys/env variables with your public web application. Prefixing your frontend web env variables with `SNOWPACK_PUBLIC_` is a good reminder that they will be shared with the world. + +`import.meta.env.MODE` and `import.meta.env.NODE_ENV` are also both set to the current `process.env.NODE_ENV` value, so that you can change app behavior based on dev vs. build. The env value is set to `development` during `snowpack dev` and `production` during `snowpack build`. Use this in your application instead of `process.env.NODE_ENV`. + +You can use environment variables in HTML files. All occurrences of `%SNOWPACK_PUBLIC_*%`, `%PUBLIC_URL%`, and `%MODE%` will be replaced at build time. + +**Remember:** that these env variables are statically injected into your application for everyone at **build time**, and not runtime. + +#### `.env` File Support + +```js +// snowpack.config.json +{ + "plugins": ["@snowpack/plugin-dotenv"] +} +``` + +Add the `@snowpack/plugin-dotenv` plugin to your dev environment to automatically load environment variables from your project `.env` files. Visit the [plugin README](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) to learn more. + +### Hot Module Replacement + +Hot Module Replacement (HMR) is the ability to update your web app during development without refreshing the page. Imagine changing some CSS, hitting save, and then instantly seeing your change reflected on the page without a refresh. That's HMR. + +Snowpack supports full HMR out-of-the-box for the following served files: + +- CSS +- CSS Modules +- JSON + +Popular frameworks can also be set up for HMR. **[Create Snowpack App (CSA)](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app) ships with HMR enabled by default for all of the following frameworks.** If you're not using CSA, you can setup HMR in your application with a simple plugin or a few lines of code: + +- Preact: [@prefresh/snowpack](https://www.npmjs.com/package/@prefresh/snowpack) +- React: [@snowpack/plugin-react-refresh](https://www.npmjs.com/package/@snowpack/plugin-react-refresh) +- Svelte: [A few lines of code](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-svelte/src/index.js#L9-L16) +- Vue: [A few lines of code](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-vue/src/index.js#L7-L14) + +For more advanced, bare-metal HMR integrations, Snowpack created [ESM-HMR](https://github.com/snowpackjs/esm-hot-module-replacement-spec), a standard HMR API for any ESM-based dev environment. Any HMR integration built for ESM-HMR will run on Snowpack and any other ESM-HMR-enabled dev server. To use the HMR API directly (via `import.meta.hot`) check out [the ESM-HMR spec](https://github.com/snowpackjs/esm-hot-module-replacement-spec) to learn more. + +```js +if (import.meta.hot) { + import.meta.hot.accept(({module}) => { + // Accept the module, apply it to your application. + }); + import.meta.hot.dispose(() => { + // Cleanup any side-effects. Optional. + }); +} +``` + +- 👉 **[Check out the full ESM-HMR spec.](https://github.com/snowpackjs/esm-hot-module-replacement-spec)** + +### Dev Request Proxy + +```js +// snowpack.config.json +// Example: Proxy "/api/pokemon/ditto" -> "https://pokeapi.co/api/v2/pokemon/ditto" +{ + "proxy": { + "/api": "https://pokeapi.co/api/v2", + } +} +``` + +Snowpack can proxy requests from the dev server to external URLs and APIs. Making API requests directly the dev server can help you mimic your production environment during development. + +See the [config.proxy API](#config.proxy) section for more information and full set of configuration options. + +### HTTPS/HTTP2 + +``` +npm start -- --secure +``` + +Snowpack provides an easy way to use a local HTTPS server during development through the use of the `--secure` flag. When enabled, Snowpack will look for a `snowpack.key` and `snowpack.crt` file in the root directory and use that to create an HTTPS server with HTTP2 support enabled. + +#### Generating SSL Certificates + +You can automatically generate credentials for your project via either: + +- [devcert (no install required)](https://github.com/davewasmer/devcert-cli): `npx devcert-cli generate localhost` +- [mkcert (install required)](https://github.com/FiloSottile/mkcert): `mkcert -install && mkcert -key-file snowpack.key -cert-file snowpack.crt localhost` + +In most situations you should add personally generated certificate files (`snowpack.key` and `snowpack.crt`) to your `.gitignore` file. + +### Legacy Browser Support + +You can customize the set of browsers you'd like to support via the `package.json` "browserslist" property, going all the way back to IE11. This will be picked up when you run `snowpack build` to build for production. + +```js +/* package.json */ +"browserslist": ">0.75%, not ie 11, not UCAndroid >0, not OperaMini all", +``` + +If you're worried about legacy browsers, you should also add a bundler to your production build. Check out our [section on bundling for production](#bundle-for-production) for more info. + +Note: During development (`snowpack dev`) we perform no transpilation for older browsers. Make sure that you're using a modern browser during development. + +### Node.js Polyfills + +If you depend on packages that depend on Node.js built-in modules (`"fs"`, `"path"`, `"url"`, etc.) you can run Snowpack with `--polyfill-node` (or `installOptions.polyfillNode: true` in your config file). This will automatically polyfill any Node.js dependencies as much as possible for the browser. You can see the full list of supported polyfills here: https://github.com/ionic-team/rollup-plugin-node-polyfills + +If you'd like to customize this polyfill behavior, skip the `--polyfill-node` flag and instead provide your own Rollup plugin for the installer: + +```js +// Example: If `--polyfill-node` doesn't support your use-case, you can provide your own custom Node.js polyfill behavior +module.exports = { + installOptions: { + polyfillNode: false, + rollup: { + plugins: [require('rollup-plugin-node-polyfills')({crypto: true, ...})], + }, + }, +}; +``` + +### CSS Imports (@import) + +```css +/* Import a local CSS file */ +@import './style1.css'; +/* Import a local Sass file (Sass build plugin still needed to compile file contents) */ +@import './style2.scss'; +/* Import a package CSS file */ +@import 'bootstrap/dist/css/bootstrap.css'; +``` + +Snowpack supports [native CSS "@import" behavior](https://developer.mozilla.org/en-US/docs/Web/CSS/@import) with additional support for importing CSS from within packages. + +**Note:** The actual CSS spec dictates that a "bare" import specifier like `@import "package/style.css"` should be treated as a relative path, equivalent to `@import "./package/style.css"`. We intentionally break from the spec to match the same package import behavior as JavaScript imports. If you prefer the strictly native behavior with no package resolution support, use the form `@import url("package/style.css")` instead. Snowpack will not resolve `url()` imports and will leave them as-is in the final build. + +**Note for webpack users:** If you're migrating an existing app to snowpack, note that `@import '~package/...'` (URL starting with a tilde) is a syntax specific to webpack. With Snowpack you remove the `~` from your `@import`s. + +### Server Side Rendering (SSR) + +SSR for Snowpack is supported but fairly new and experimental. This documentation will be updated as we finalize support over the next few minor versions. + +```js +// New in Snowpack v2.15.0 - JS API Example +import {startDevServer} from 'snowpack'; +const server = await startDevServer({ ... }); +``` + +These frameworks have known experiments / examples of using SSR + Snowpack: + +- React (Example): https://github.com/matthoffner/snowpack-react-ssr +- Svelte/Sapper (Experiment): https://github.com/Rich-Harris/snowpack-svelte-ssr +- [Join our Discord](https://discord.gg/rS8SnRk) if you're interested in getting involved! + +### Optimized Builds + +By default, Snowpack doesn't optimize your code for production. But, there are several plugins available to optimize your final build, including minification (reducing file sizes) and even bundling (combining files together to reduce the number of requests needed). + +**Connect the `@snowpack/plugin-optimize` plugin to optimize your build.** By default this will minify your built files for faster loading. It can also be configured to add `` elements that will improve the loading speed of unbundled sites. _Note: this plugin replaces `buildOptions.minify`._ + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-optimize] +{ + "plugins": [ + ["@snowpack/plugin-optimize", {/* ... */}] + ] +} +``` + +Note that `@snowpack/plugin-optimize` will optimize your build, but won't bundle files together. + +**If you'd like a bundled build, use `@snowpack/plugin-webpack` instead.** Connect the `"@snowpack/plugin-webpack"` plugin in your Snowpack configuration file and then run `snowpack build` to see your optimized, _bundled_ build. + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-webpack] +{ + "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] +} +``` + +### Testing + +Snowpack supports any popular JavaScript testing framework that you're already familiar with. Mocha, Jest, Jasmine, AVA and Cypress are all supported in Snowpack applications. + +We currently recommend [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) (WTR) for testing in Snowpack projects. When benchmarked it performed faster than Jest (our previous recommendation) while also providing an environment for testing that more closely matches the actual browser that your project runs in. Most importantly, WTR runs the same Snowpack build pipeline that you've already configured for your project, so there's no extra build configuration needed to run your tests. Jest (and many others) ask you to configure a totally secondary build pipeline for your tests, which reduces test confidence while adding 100s of extra dependencies to your project. + +To use [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) in your project, [follow the instructions here](https://modern-web.dev/docs/test-runner/overview/) and make sure that you add the Snowpack plugin to your config file: + +```js +// web-test-runner.config.js +module.exports = { + plugins: [require('@snowpack/web-test-runner-plugin')()], +}; +``` + +[See an example setup](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-react) in on of our Create Snowpack App starter templates. +## Plugins + +Snowpack isn't just a build tool for JavaScript, it is a build tool for your entire website. Babel, TypeScript, PostCSS, SVGR and any favorite build tool can be connected directly into Snowpack via 1-line plugins. + +Snowpack plugins can be added to: + +- Customize your build with new language/framework support (Svelte, Vue) +- Customize your build with new build tools (Babel, PostCSS) +- Run CLI commands during build and development (TypeScript, ESLint) +- Create custom transformations, specific to your exact application. + +👉 **[Check out our advanced guide](/plugins) and learn how to create your own plugin.** + +### Connect a Plugin + +To make a plugin available, you have to put it in your project `devDependencies` list (`package.json`) which will install it locally (in your project) and make it available to snowpack. + +For the official snowpack plugins, command would look like: + +```bash +# for npm +npm install --save-dev @snowpack/[plugin-name] +# for yarn +yarn add --dev @snowpack/[plugin-name] +``` + +After that, you can connect the plugin to Snowpack via the `"plugins"` array in your Snowpack config. For example, + +```js +// snowpack.config.json +{ + "plugins": ["@snowpack/plugin-babel"] +} +``` + +This is all you need to add Babel to your application build pipeline. If the plugin supports it, you can also pass **options** to the plugin to configure its behavior: + +```js +// snowpack.config.json +{ + "plugins": [ + ["@snowpack/plugin-babel", { /* ... */}] + ], +} +``` + +NOTE: The **order** of plugins is important, for example, if there are multiple plugins that load/build particular type of file, the first matching will take precedence. If it succeeds in the build task for the file, others will not be called for that particular build task. + +### Connect any Script/CLI + +If you can't find a plugin that fits your needs and don't want to write your own, you can also run CLI commands directly as a part of your build using one of our two utility plugins: `@snowpack/plugin-build-script` & `@snowpack/plugin-run-script`. + +#### @snowpack/plugin-build-script + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-build-script] +{ + "plugins": [ + ["@snowpack/plugin-build-script", { "cmd": "postcss", "input": [".css"], "output": [".css"]}] + ], +} +``` + +This plugin allows you to connect any CLI into your build process. Just give it a `cmd` CLI command that can take input from `stdin` and emit the build result via `stdout`. Check out the README for more information. + +#### @snowpack/plugin-run-script + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-run-script] +{ + "plugins": [ + ["@snowpack/plugin-run-script", { "cmd": "eleventy", "watch": "$1 --watch" }] + ], +} +``` + +This plugin allows you to run any CLI command as a part of your dev and build workflow. This plugin doesn't affect your build output, but it is useful for connecting developer tooling directly into Snowpack. Use this to add meaningful feedback to your dev console as you type, like TypeScript type-checking and ESLint lint errors. + +### Official Plugins + +- [@snowpack/plugin-babel](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-babel) +- [@snowpack/plugin-dotenv](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) +- [@snowpack/plugin-postcss](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-postcss) +- [@snowpack/plugin-react-refresh](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-react-refresh) +- [@snowpack/plugin-svelte](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-svelte) +- [@snowpack/plugin-svelte-typescript](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-svelte-typescript) +- [@snowpack/plugin-vue](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-vue) +- [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-webpack) + +👉 **[Check out our full list](/plugins) of official plugins.** + +### Community Plugins + +- [snowpack-plugin-mdx](https://www.npmjs.com/package/snowpack-plugin-mdx) +- [snowpack-plugin-stylus](https://www.npmjs.com/package/snowpack-plugin-stylus) +- [snowpack-plugin-import-map](https://github.com/zhoukekestar/snowpack-plugin-import-map) + +👉 **[Find your community plugin on npm.](https://www.npmjs.com/search?q=keywords:snowpack%20plugin)** +## Recipes + +Below are a collection of guides for using different web frameworks and build tools with Snowpack. If you'd like to contribute a new recipe, feel free to edit the docs to add your own. + +### Supported Libraries + +All of the following frameworks have been tested and guaranteed to work in Snowpack without issues. If you encounter an issue using any of the following, please file an issue. + +- React +- Preact +- JSX +- HTM +- lit-html +- Vue (see below) +- Svelte (see below) +- Tailwind CSS (see below) +- Sass (see below) +- and many more! +- Literally... every library should work with Snowpack! + +Some libraries use compile-to-JS file formats and do require a special build script or plugin. See the guide below for examples. + +### JSX + +Snowpack has built-in support to handle `.jsx` & `.tsx` source files in your application. + +**Note: Snowpack's default build does not support JSX in `.js`/`.ts` files.** If you can't use the `.jsx`/`.tsx` file extension, you can use [Babel](#babel) to build your application instead. + +### TypeScript + +Snowpack includes built-in support to build all TypeScript source files (`.ts` & `.tsx`) in your application. + +For automatic TypeScript type checking during development, add the official [@snowpack/plugin-typescript](https://www.npmjs.com/package/@snowpack/plugin-typescript) plugin to your Snowpack config file. This plugin adds automatic `tsc` type checking results right in the Snowpack dev console. + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-typescript"] +``` + +### Babel + +Snowpack already comes with built-in support for building JavaScript, TypeScript, and JSX. However, If you would like to run your build through Babel instead, you can replace our default file builder with the official Snowpack Babel plugin. + +The plugin will automatically read plugins & presets from your local project `babel.config.*` config file, if one exists. + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-babel"], +``` + +### Preact + +You can import and use Preact without any custom configuration needed. + +**To use `preact/compat`:** (the Preact+React compatability layer) alias the "compat" package to React in your install options: + +```js +// Example: Lets you import "react" in your application, but uses preact internally +// snowpack.config.json + "alias": { + "react": "preact/compat", + "react-dom": "preact/compat" + } +``` + +### Vue + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-vue"] +``` + +### Svelte + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-svelte"] +``` + +### PostCSS + +```js +// snowpack.config.json +"plugins": [ + ["@snowpack/plugin-build-script", {"cmd": "postcss", "input": [".css"], "output": [".css"]}] +] +``` + +The [`postcss-cli`](https://github.com/postcss/postcss-cli) package must be installed manually. You can configure PostCSS with a `postcss.config.js` file in your current working directory. + +### Tailwind CSS + +You can add [Tailwind](https://tailwindcss.com) to any project via native CSS `@import`: + +```css +/* index.css */ +@import 'tailwindcss/dist/base.css'; +@import 'tailwindcss/dist/components.css'; +@import 'tailwindcss/dist/utilities.css'; +``` + +#### Using Tailwind with PostCSS + +If you are using PostCSS in your project ([see above](#postcss)) then you can just add Tailwind as a plugin to your `postcss.config.js`: + +```js +// postcss.config.js +// Taken from: https://tailwindcss.com/docs/installation#using-tailwind-with-postcss +module.exports = { + plugins: [ + // ... + require('tailwindcss'), + require('autoprefixer'), + // ... + ], +}; +``` + +Once you have added the Tailwind PostCSS plugin, you can replace your native CSS `dist` imports with Tailwind's more powerful `base`, `components`, and `utilities` imports: + +```diff +/* index.css */ +- @import 'tailwindcss/dist/base.css'; +- @import 'tailwindcss/dist/components.css'; +- @import 'tailwindcss/dist/utilities.css'; ++ @import 'tailwindcss/base'; ++ @import 'tailwindcss/components'; ++ @import 'tailwindcss/utilities'; +``` + +Follow the official [Tailwind CSS Docs](https://tailwindcss.com/docs/installation/#using-tailwind-with-postcss) for more information. + +### Sass + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-sass"] +``` + +[Sass](https://www.sass-lang.com/) is a stylesheet language that’s compiled to CSS. It allows you to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects. + +To use Sass + PostCSS, check out [this guide](https://zellwk.com/blog/eleventy-snowpack-sass-postcss/). + +### ESLint + +```js +// snowpack.config.json +"plugins": [ + ["@snowpack/plugin-run-script", { + "cmd": "eslint 'src/**/*.{js,jsx,ts,tsx}'", + // Optional: Use npm package "watch" to run on every file change + "watch": "watch \"$1\" src" + }] +] +``` + +### Webpack + +```js +// snowpack.config.json +{ + // Optimize your production builds with Webpack + "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] +} +``` + +Snowpack ships an official [webpack plugin](https://www.npmjs.com/package/@snowpack/plugin-webpack) for optimizing your build. Connect the `"@snowpack/plugin-webpack"` plugin into your Snowpack configuration file and then run `snowpack build` to see your optimized, bundled build. + +See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. + +### Workbox + +The [Workbox CLI](https://developers.google.com/web/tools/workbox/modules/workbox-cli) integrates well with Snowpack. Run the wizard to bootstrap your first configuration file, and then run `workbox generateSW` to generate your service worker. + +Remember that Workbox expects to be run every time you deploy, as a part of a production build process. If you don't have one yet, create package.json [`"deploy"` and/or `"build"` scripts](https://michael-kuehnel.de/tooling/2018/03/22/helpers-and-tips-for-npm-run-scripts.html) to automate your production build process. + +### @web/test-runner + +[@web/test-runner](https://www.npmjs.com/package/@web/test-runner) is our recommended test runner for Snowpack projects. [See our section on testing](/#testing) for detailed instructions on how to get started with @web/test-runner. + +### Jest + +> Update (October 11, 2020): **We now recommend [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) as our test runner of choice for Snowpack projects.** [See our section on testing](/#testing) for more background behind the change. + +[Jest](https://jestjs.io/) is a popular Node.js test runner for Node.js & web projects. Jest can be used with any frontend project as long as you configure how Jest should build your frontend files to run on Node.js. Many projects will try to manage this configuration for you, since it can get complicated. + +Snowpack ships pre-built Jest configuration files for several popular frameworks. If you need to use Jest for any reason,consider extending one of these packages: + +- React: [@snowpack/app-scripts-react](https://www.npmjs.com/package/@snowpack/app-scripts-react) +- Preact: [@snowpack/app-scripts-preact](https://www.npmjs.com/package/@snowpack/app-scripts-preact) +- Svelte: [@snowpack/app-scripts-svelte](https://www.npmjs.com/package/@snowpack/app-scripts-svelte) + +You can use these packages in your project like so: + +```js +// jest.config.js +// Example: extending a pre-built Jest configuration file +module.exports = { + ...require('@snowpack/app-scripts-preact/jest.config.js')(), +}; +``` + +### Server Side Rendering (SSR) + +To connect your own server to `snowpack dev` for SSR, there are a few things that you'll need to set up. Make sure that you include any Snowpack-built resources via script tags in your server's HTML response: + +```html + + +``` + +And make sure that your HTML response also includes code to configure HMR to talk to Snowpack's dev server: + +```html + + +``` + +### Leaving Snowpack + +Snowpack is designed for zero lock-in. If you ever feel the need to add a traditional application bundler to your stack (for whatever reason!) you can do so in seconds. + +Any application built with Snowpack should Just Work™️ when passed through Webpack/Rollup/Parcel. If you are already importing packages by name in your source code (ex: `import React from 'react'`) then you should be able to migrate to any popular bundler without issue. + +If you are importing packages by full URL (ex: `import React from '/web_modules/react.js'`), then a simple Find & Replace should help you re-write them to the plain package name imports that most bundlers expect. +## Troubleshooting + +### No such file or directory + +``` +ENOENT: no such file or directory, open …/node_modules/csstype/index.js +``` + +This error message would sometimes occur in older versions of Snowpack. + +**To solve this issue:** Upgrade to Snowpack `v2.6.0` or higher. If you continue to see this unexpected error in newer versions of Snowpack, please file an issue. + +### Package exists but package.json "exports" does not include entry + +Node.js recently added support for a package.json "exports" entry that defines which files you can and cannot import from within a package. Preact, for example, defines an "exports" map that allows you to to import "preact/hooks" but not "preact/some/custom/file-path.js". This allows packages to control their "public" interface. + +If you see this error message, that means that you've imported a file path not allowed in the export map. If you believe this to be an error, reach out to the package author to request the file be added to their export map. + +### Uncaught SyntaxError: The requested module '/web_modules/XXXXXX.js' does not provide an export named 'YYYYYY' + +#### Legacy Common.js Packages + +This is usually seen when importing a named export from a package written in the older Common.js format. Snowpack will automatically scan legacy Common.js packages to detect its named exports, but sometimes these exports can't be detected statically. + +**To solve this issue:** Add a ["namedExports"](#config.installoptions) entry in your Snowpack config file. This tells Snowpack to use a more-powerful runtime scanner on this legacy Common.js package to detect it's exports at runtime. + +```json +// snowpack.config.json +// Example: add support for `import { Terminal } from 'xterm';` +"installOptions": { + "namedExports": ["xterm"] +} +``` + +#### TypeScript imports + +This could occur if you're attempting to import a named interface or other type from another compiled TypeScript file. + +**To solve this issue:** Make sure to use `import type { MyInterfaceName }` instead. + +### Installing Non-JS Packages + +When installing packages from npm, you may encounter some file formats that can only run with additional parsing/processing. First check to see if there is a [Snowpack plugin for the type of file](#plugins). + +Because our internal installer is powered by Rollup, you can also add Rollup plugins to your [Snowpack config](#configuration) to handle these special, rare files: + +```js +/* snowpack.config.js */ +module.exports = { + rollup: { + plugins: [require('rollup-plugin-sass')()], + }, +}; +``` + +Refer to [Rollup’s documentation on plugins](https://rollupjs.org/guide/en/#using-plugins) for more information. +## API Reference + +### Config Files + +Snowpack's behavior can be configured by CLI flags, a custom Snowpack config file, or both. [See the api reference below for the full list of supported options](#api-reference). + +Snowpack supports configuration files in multiple formats, sorted by priority order: + +1. `--config [path]`: If provided. +1. `package.json`: A namespaced config object (`"snowpack": {...}`). +1. `snowpack.config.cjs`: (`module.exports = {...}`) for projects using `"type": "module"`. +1. `snowpack.config.js`: (`module.exports = {...}`). +1. `snowpack.config.ts`\*: (`export default {...}`). +1. `snowpack.config.json`: (`{...}`). + +_(\* Note: `snowpack.config.ts` support is still experimental! It currently involves bundling your config file and all imported files into a temporary JS config file that can be loaded by Node.js. Your mileage may vary.)_ + +### CLI Flags + +```bash +# Show helpful info +$ snowpack --help + +# Show additional debugging logs +$ snowpack --verbose + +# {installOptions: {dest: 'CUSTOM_DIR/'}} +$ snowpack install --dest CUSTOM_DIR/ + +# {devOptions: {bundle: true}} +$ snowpack dev --bundle + +# {devOptions: {bundle: false}} +$ snowpack dev --no-bundle + +# {buildOptions: {clean: true}} +$ snowpack build --clean +``` + +**CLI flags will be merged with (and take priority over) your config file values.** Every config value outlined below can also be passed as a CLI flag. Additionally, Snowpack also supports the following flags: + +- **`--config [path]`** Set the path to your project config file. +- **`--help`** Show this help. +- **`--version`** Show the current version. +- **`--reload`** Clear the local cache. Useful for troubleshooting installer issues. + +### Configuration + +Example: + +```js +{ + "install": [ + "htm", + "preact", + "preact/hooks", // A package within a package + "unistore/full/preact.es.js", // An ESM file within a package (supports globs) + "bulma/css/bulma.css" // A non-JS static asset (supports globs) + ], + "plugins": [ /* ... */ ], + "installOptions": { /* ... */ }, + "devOptions": { /* ... */ }, + "buildOptions": { /* ... */ }, + "proxy": { /* ... */ }, + "mount": { /* ... */ }, + "alias": { /* ... */ } +} +``` + +#### `config` + +`object` (options) + +See the configuration section for information on file formats and command line usage. + +Example: + +```js +{ + mount: { + public: '/', + src: '/_dist_', + }, + plugins: ['@snowpack/plugin-babel', '@snowpack/plugin-dotenv'], + devOptions: {}, + installOptions: { + installTypes: isTS, + }, +} +``` + +Options: + +- **`extends`** | `string` + - Inherit from a separate "base" config. Can be a relative file path, an npm package, or a file within an npm package. Your configuration will be merged on top of the extended base config. +- **`exclude`** | `string[]` + - Exclude any files from scanning, building, etc. Defaults to exclude common test file locations: `['**/node_modules/**/*', '**/__tests__/*', '**/*.@(spec|test).@(js|mjs)']` + - Useful for excluding tests and other unnecessary files from the final build. Supports glob pattern matching. +- **`install`** | `string[]` + - Known dependencies to install with Snowpack. Useful for installing packages manually and any dependencies that couldn't be detected by our automatic import scanner (ex: package CSS files). +- **`mount.*`** + - Mount local directories to custom URLs in your built application. +- **`alias.*`** + - Configure import aliases for directories and packages. See the section below for all options. +- **`proxy.*`** + - Configure the dev server to proxy requests. See the section below for all options. +- **`plugins`** + - Extend Snowpack with third-party tools and plugins. See the section below for more info. +- **`installOptions.*`** + - Configure how npm packages are installed. See the section below for all options. +- **`devOptions.*`** + - Configure your dev server. See the section below for all options. +- **`buildOptions.*`** + - Configure your build. See the section below for all options. +- **`testOptions.*`** + - Configure your tests. See the section below for all options. + +#### `config.installOptions` + +`object` (options) + +Settings that determine how Snowpack handles installing modules. + +Example: + +```js +installOptions: { + installTypes: isTS, +} +``` + +Options: + +- **`installOptions.dest`** | `string` + - _Default:`"web_modules"`_ + - Configure the install directory. +- **`installOptions.sourceMap`** | `boolean` + - Emit source maps for installed packages. +- **`installOptions.env`** | `{[ENV_NAME: string]: (string | true)}` + - Sets a `process.env.` environment variable inside the installed dependencies. If set to true (ex: `{NODE_ENV: true}` or `--env NODE_ENV`) this will inherit from your current shell environment variable. Otherwise, set to a string (ex: `{NODE_ENV: 'production'}` or `--env NODE_ENV=production`) to set the exact value manually. +- **`installOptions.treeshake`** | `boolean` + - _Default:`false`, or `true` when run with `snowpack build`_ + - Treeshake your dependencies to optimize your installed files. Snowpack will scan your application to detect which exact imports are used from each package, and then will remove any unused imports from the final install via dead-code elimination (aka tree shaking). +- **`installOptions.installTypes`** | `boolean` + - Install TypeScript type declarations with your packages. Requires changes to your [tsconfig.json](#typescript) to pick up these types. +- **`installOptions.namedExports`** | `string[]` + - _NOTE(v2.13.0): Snowpack now automatically supports named exports for most Common.js packages. This configuration remains for any package that Snowpack can't handle automatically. In most cases, this should no longer be needed._ + - Import CJS packages using named exports (Example: `import {useTable} from 'react-table'`). + - Example: `"namedExports": ["react-table"]` +- **`installOptions.externalPackage`** | `string[]` + - _NOTE: This is an advanced feature, and may not do what you want! Bare imports are not supported in any major browser, so an ignored import will usually fail when sent directly to the browser._ + - Mark some imports as external. Snowpack won't install them and will ignore them when resolving imports. + - Example: `"externalPackage": ["fs"]` +- **`installOptions.packageLookupFields`** | `string[]` + - Set custom lookup fields for dependency `package.json` file entrypoints, in addition to the defaults like "module", "main", etc. Useful for package ecosystems like Svelte where dependencies aren't shipped as traditional JavaScript. + - Example: `"packageLookupFields": ["svelte"]` +- **`installOptions.rollup`** | `Object` + - Snowpack uses Rollup internally to install your packages. This `rollup` config option gives you deeper control over the internal rollup configuration that we use. + - **`installOptions.rollup.plugins`** - Specify [Custom Rollup plugins](#installing-non-js-packages) if you are dealing with non-standard files. + - **`installOptions.rollup.dedupe`** - If needed, deduplicate multiple versions/copies of a packages to a single one. This helps prevent issues with some packages when multiple versions are installed from your node_modules tree. See [rollup-plugin-node-resolve](https://github.com/rollup/plugins/tree/master/packages/node-resolve#usage) for more documentation. + - **`installOptions.rollup.context`** - Specify top-level `this` value. Useful to silence install errors caused by legacy common.js packages that reference a top-level this variable, which does not exist in a pure ESM environment. Note that the `'THIS_IS_UNDEFINED'` warning (`The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten`) is silenced by default, unless `--verbose` is used. + +#### `config.devOptions` + +`object` (options) + +Settings that determine how the Snowpack dev environment behaves. + +Example: + +```js +devOptions: { + port: 4000, + open: "none", +} +``` + +Options: + +- **`devOptions.port`** | `number` | Default: `8080` + - The port number to run the dev server on. +- **`devOptions.bundle`** | `boolean` + - Create an optimized, bundled build for production. + - You must have [Parcel](https://parceljs.org/) as a dev dependency in your project. + - If undefined, this option will be enabled if the `parcel` package is found. +- **`devOptions.fallback`** | `string` | Default: `"index.html"` + - When using the Single-Page Application (SPA) pattern, this is the HTML "shell" file that gets served for every (non-resource) user route. Make sure that you configure your production servers to serve this as well. +- **`devOptions.open`** | `string` | Default: `"default"` + - Opens the dev server in a new browser tab. If Chrome is available on macOS, an attempt will be made to reuse an existing browser tab. Any installed browser may also be specified. E.g., "chrome", "firefox", "brave". Set "none" to disable. +- **`devOptions.output`** | `"stream" | "dashboard"` | Default: `"dashboard"` + - Set the output mode of the `dev` console. + - `"dashboard"` delivers an organized layout of console output and the logs of any connected tools. This is recommended for most users and results in the best logging experience. + - `"stream"` is useful when Snowpack is run in parallel with other commands, where clearing the shell would clear important output of other commands running in the same shell. +- **`devOptions.hostname`** | `string` | Default: `localhost` + - The hostname where the browser tab will be open. +- **`devOptions.hmr`** | `boolean` | Default: `true` + - Toggles whether or not Snowpack dev server should have HMR enabled. +- **`devOptions.hmrErrorOverlay`** | `boolean` | Default: `true` + - When HMR is enabled, toggles whether or not a browser overlay should display javascript errors. +- **`devOptions.secure`** | `boolean` + - Toggles whether or not Snowpack dev server should use HTTPS with HTTP2 enabled. +- **`devOptions.out`** | `string` | Default: `"build"` + - _NOTE:_ Deprecated, see `buildOptions.out`. + - The local directory that we output your final build to. + +#### `config.buildOptions` + +`object` (options) + +Determines how Snowpack processes the final build. + +Example: + +```js +buildOptions: { + sourceMaps: true, + baseUrl: '/home', + metaDir: 'static/snowpack', + webModulesUrl: 'web' +} +``` + +Options: + +- **`buildOptions.out`** | `string` | Default: `"build"` + - The local directory that we output your final build to. +- **`buildOptions.baseUrl`** | `string` | Default: `/` + - In your HTML, replace all instances of `%PUBLIC_URL%` with this (inspired by the same [Create React App](https://create-react-app.dev/docs/using-the-public-folder/) concept). This is useful if your app will be deployed to a subdirectory. _Note: if you have `homepage` in your `package.json`, Snowpack will actually pick up on that, too._ +- **`buildOptions.clean`** | `boolean` | Default: `false` + - Set to `true` if Snowpack should erase the build folder before each build. +- **`buildOptions.metaDir`** | `string` | Default: `__snowpack__` + - By default, Snowpack outputs Snowpack-related metadata such as [HMR](#hot-module-replacement) and [ENV](#environment-variables) info to a folder called `__snowpack__`. You can rename that folder with this option (e.g.: `metaDir: 'static/snowpack'`). +- **`buildOptions.sourceMaps`** | `boolean` | Default: `false` + - **_Experimental:_** Set to `true` to enable source maps +- **`buildOptions.webModulesUrl`** | `string` | Default: `web_modules` + - Rename your web modules directory. + +#### `config.testOptions` + +`object` (options) + +Settings that determine how the Snowpack test environment behaves. + +Example: + +```js +testOptions: { + files: ['my-test-dir/*.test.js']; +} +``` + +Options: + +- **`testOptions.files`** | `string[]` | Default: `["__tests__/**/*", "**/*.@(spec|test).*"]` + - The location of all test files. + - All matching test files are scanned for installable dependencies during development, but excluded from both scanning and building in your final build. + +#### `config.proxy` + +`object` (path: options) + +If desired, `"proxy"` is where you configure the proxy behavior of your dev server. Define different paths that should be proxied, and where they should be proxied to. + +The short form of a full URL string is enough for general use. For advanced configuration, you can use the object format to set all options supported by [http-proxy](https://github.com/http-party/node-http-proxy). + +This configuration has no effect on the final build. + +Example: + +```js +// snowpack.config.json +{ + "proxy": { + // Short form: + "/api/01": "https://pokeapi.co/api/v2/", + // Long form: + "/api/02": { + on: { proxyReq: (p, req, res) => /* Custom event handlers (JS only) */ }, + /* Custom http-proxy options */ + } + } +} +``` + +Options: + +- **`"path".on`** | `object` (string: function) + - `on` is a special Snowpack property for setting event handler functions on proxy server events. See the section on ["Listening for Proxy Events"](https://github.com/http-party/node-http-proxy#listening-for-proxy-events) for a list of all supported events. You must be using a `snowpack.config.js` JavaScript configuration file to set this. +- All options supported by [http-proxy](https://github.com/http-party/node-http-proxy). + +#### `config.mount` + +``` +mount: { + [path: string]: string | {url: string, static: boolean, resolve: boolean} +} +``` + +The `mount` configuration lets you customize which directories should be included in your Snowpack build, and what URL they are mounted to. Given the following example configuration, you could expect the following results: + +```js +// Example: Basic "mount" usage +// snowpack.config.json +{ + "mount": { + "src": "/_dist_", + "public": "/" + } +} +``` + +``` +GET /src/a.js -> 404 NOT FOUND ("./src" is mounted to "/_dist_/*", not "/src/*") +GET /_dist_/a.js -> ./src/a.js +GET /_dist_/b/b.js -> ./src/b/b.js +GET /public/robots.txt -> 404 NOT FOUND ("./public" dir is mounted to "/*", not "/public/*") +GET /robots.txt -> ./public/robots.txt +``` + +By default, Snowpack builds every mounted file by passing it through Snowpack's build pipeline. + +**\*New in Snowpack `v2.15.0`:** You can customize the build behavior for a mounted directory using the expanded object notation: + +- `url` _required_: The URL to mount to, matching the simple form above. +- `static` _optional, default: false_: If true, don't build files in this directory and serve them directly to the browser. +- `resolve` _optional, default: true_: If false, don't resolve JS & CSS imports in your JS, CSS, and HTML files and send every import to the browser, as written. We recommend that you don't disable this unless absolutely necessary, since it prevents Snowpack from handling your imports to things like packages, JSON files, CSS modules, and more. + +```js +// Example: Advanced "mount" usage +// snowpack.config.json +{ + "mount": { + // Same behavior as the "src" example above: + "src": {url: "/_dist_"}, + // Mount "public" to the root URL path ("/*") and serve files with zero transformations: + "public": {url: "/", static: true, resolve: false} + } +} +``` + +#### `config.alias` + +`object` (package: package or path) + +> Note: In an older version of Snowpack, all mounted directories were also available as aliases by default. As of Snowpack 2.7, this is no longer the case and no aliases are defined by default. + +The `alias` config option lets you define an import alias in your application. When aliasing a package, this allows you to import that package by another name in your application. This applies to imports inside of your dependencies as well, essentially replacing all references to the aliased package. + +Aliasing a local directory (any path that starts with "./") creates a shortcut to import that file or directory. While we don't necessarily recommend this pattern, some projects do enjoy using these instead of relative paths: + +```diff +-import '../../../../../Button.js'; ++import '@app/Button.js'; +``` + +Example: + +```js +// snowpack.config.json +{ + alias: { + // Type 1: Package Import Alias + "lodash": "lodash-es", + "react": "preact/compat", + // Type 2: Local Directory Import Alias (relative to cwd) + "components": "./src/components" + "@app": "./src" + } +} +``` +## Assets + +- [Snowpack Logo (PNG, White)](/assets/snowpack-logo-white.png) +- [Snowpack Logo (PNG, Dark)](/assets/snowpack-logo-dark.png) +- [Snowpack Logo (PNG, Black)](/assets/snowpack-logo-black.png) +- [Snowpack Wordmark (PNG, White)](/assets/snowpack-wordmark-white.png) +- [Snowpack Wordmark (PNG, Black)](/assets/snowpack-wordmark-black.png) From 5170f2d560d2a3694b2ca63627494c7602618a21 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Thu, 5 Nov 2020 20:28:06 -0600 Subject: [PATCH 13/33] deleting overview, copy edits and image descriptions --- www/_template/getting-started.md | 144 +++++++++++++++++-------------- www/_template/overview.md | 22 ----- 2 files changed, 79 insertions(+), 87 deletions(-) delete mode 100644 www/_template/overview.md diff --git a/www/_template/getting-started.md b/www/_template/getting-started.md index c22e61b979..3215b30dd4 100644 --- a/www/_template/getting-started.md +++ b/www/_template/getting-started.md @@ -3,21 +3,23 @@ layout: layouts/main.njk title: Get Started --- -This guide will show you how to set up Snowpack from scratch in a Node.js project. +![webpack vs. snowpack diagram](/img/snowpack-unbundled-example-3.png) + +This guide will show you how to set up Snowpack from scratch in a Node.js project. Along the way you'll learn key concepts of Snowpack and unbundled development > 💡 Tip: For specific frameworks like React and Svelte we have framework guides. Check out our full list of guides here (TODO: INsert link). In this guide you'll learn -- Unbundled development: **Unbundled development** is the idea of shipping individual files to the browser during development. Files can still be built with your favorite tools (like Babel, TypeScript, Sass) and then loaded individually in the browser with dependencies thanks to ESM `import` and `export` syntax. Any time you change a file, Snowpack only ever needs to rebuild that single file. -- Using ESM: Snowpack leverages JavaScript's native module system (known as ESM) to create a first-of-its-kind build system that never builds the same file twice. Snowpack pushes changes instantly to the browser, saving you hours of development time traditionally spent waiting around for your bundler. -- Snowpack's dev server: Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) -- Snowpack's build pipeline: Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. - -- Using CSS: CSS is one of several built-in types of files that Snowpack can handle -- Using Node modules with ESM +- Unbundled development: Saving time by building only the files changed during development instead of bundling your entire codebase. +- ESM and Snowpack: Snowpack uses JavaScript's native module system (known as [ESM](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import)) to power the single-file builds. +- Snowpack's dev server: An instant dev environment for unbundled development. +- Snowpack's build pipeline: A flexible system where you use a bundler only if you need one. +- Using Node modules/NPM packages: Snowpack does the work of bringing your favorite Node modules into the ESM world. +- Using CSS: Snowpack has built-in support for CSS (and CSS Modules, JSX and [more](/features) +- Using plugins: You can extend your build even further with [custom plugins](/plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! -> 💡 Tip: the project we'll create here is [Create Snowpack App minimalist template](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/). For a list of other templates available check out the [create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) docs. +> 💡 Tip: the project we'll create here is [Create Snowpack App minimalist template](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/). For a list of other examples that available check out the [create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) docs. Prerequisites: Snowpack is a command line tool installed from npm. This guide assumes a basic understanding of Node.js, npm, and how to run commands in the terminal. @@ -25,14 +27,16 @@ Snowpack builds your site for both modern and legacy browsers, but during develo ## Install Snowpack -Let's create an empty directory. You can use any tool of your choice or the command line as shown here: +In this step we'll create a new NPM project and install Snowpack. + +First create an empty directory. You can use any tool of your choice or the command line as shown here: ```bash mkdir my-first-snowpack cd my-first-snowpack ``` -Now let's enable it as a Node project +Now enable it as an NPM project with the following command, which will create a package.json. Feel free to just hit enter for all the fields: ```bash npm init @@ -40,7 +44,7 @@ npm init > 💡 Tip: add the "--use-yarn" or "--use-pnpm" flag to use something other than npm -This creates our `package.json`, now let's install Snowpack +Now let's install Snowpack to our dev dependencies with this command: ``` npm install --save-dev snowpack @@ -50,11 +54,9 @@ npm install --save-dev snowpack ## Snowpack Dev Server -`snowpack dev` - Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. - -Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](/plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! +In this step we'll add some files so we can showcase Snowpack's dev server. Snowpack's dev server is an instant dev environment for unbundled development. The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. -To show you how it works let's create an `index.html` in your `my-first-snowpack` with the following contents: +First create an `index.html` in your project with the following contents: ```html @@ -77,12 +79,11 @@ Now let's add the Snowpack dev server to `package.json` under as the `start` scr "scripts": { + "start": "snowpack dev", "test": "echo \"Error: no test specified\" && exit 1" - }, ``` -Now you can run this on the command line to start the dev server +Now you can run this on the command line to start the Snowpack dev server ``` npm run start @@ -90,19 +91,17 @@ npm run start Snowpack displays the local host address and automatically opens the page in your default browser. -TODO: add image showing the console and the site - -Some key features: +IMAGE: GIF. Side by side of the terminal showing the dev server output. The dev server output displays the localhost address the project is running on. In a browser window you can see the running project on localhost, which is "Welcome to Snowpack" on a white background. An edit is made to `index.html` adding an exclamation point, the browser window shows the updated text as soon as the file is saved. -- try changing the index.html and saving while the server is running, the site should refresh and show changes automatically +Try changing the index.html and saving while the server is running, the site should refresh and show changes automatically. -## ES Modules +## ESM (ES Modules) -Snowpack was designed to support JavaScript's native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! +You're ready to add some ES modules (ESM). Snowpack is designed to support JavaScript's native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! All modern browsers support ESM, so Snowpack is able to ship this code directly to the browser during development. This is what makes Snowpack's **unbundled development** workflow possible. -Let's create an example `hello-world.js` that creates a helloWorld ES module: +Let's create an example `hello-world.js` that exports a `helloWorld` ESM: ```js export function helloWorld() { @@ -110,7 +109,7 @@ export function helloWorld() { } ``` -And let's use our new module by importing it using ESM syntax. Create an `index.js` that imports our new module: +Use your new module by importing it using ESM syntax and running. Create an `index.js` that imports our new module using ESM syntax: ```js import { helloWorld } from './hello-world.js'; @@ -118,7 +117,7 @@ import { helloWorld } from './hello-world.js'; helloWorld(); ``` -Now let's finally add to our `index.html` at the bottom of the body tag +Finally, add your `index.js` to `index.html` at the bottom of the `` tag ```diff @@ -127,15 +126,15 @@ Now let's finally add to our `index.html` at the bottom of the body tag ``` -Try making a change to the module. Snowpack will rebuild that module, but nothing else. With Snowpack **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. - > 💡 Tip: Snowpack detects the files in `index.html` for processing -Check your console and you should see the Hello World +Check your console on your Snowpack site. You should see "Hello World!". Try making a change to the module. Snowpack will rebuild that module without rebuilding the rest of your code. With Snowpack **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. + +IMAGE: Gif showing the code next to the project running in the browser. On save the console shows "Hello World!". On edit and save of the `hello-world.js` file to be "Hello everyone!" instead, that instantly shows in the browser console. ## Using NPM Packages -NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. +While writing your own JavaScript is great, you'll also probably want to use JavaScript from NPM. NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. **Snowpack takes a different approach:** Instead of bundling your entire application for this one requirement, Snowpack processes your dependencies separately. Here's how it works: @@ -154,37 +153,41 @@ After Snowpack builds your dependencies, any package can be imported and run dir Snowpack lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. -Let's install a package and use it +> 💡 Tip: When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. + +Let's install a package from NPM and use it with the following command: ```bash npm install --save canvas-confetti ``` -Now head to `index.html` and add this +Now head to `index.html` and add this code to the bottom of the `` tag: ```diff - - - + ++ + ``` -Restart your Snowpack dev server and you should see this: -TODO: IMAGE/GIF +> 💡 Tip: You can also add this code in index.js -> 💡 Tip: When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. +You should now see a nifty confetti effect on your site. -> 💡 Tip: Sometimes node modules need to be polyfilled because TODO add links info/ +IMAGE: Gif showing site loading with a confetti effect + +> 💡 Tip: Not all NPM modules may work well in the browser. If it's dependent on Node.js built-in modules you'll need to polyfill Node. Read more about how to do this on our [features page.](/features) ## Adding CSS -First add this css file as `index.css` +Snowpack natively supports many file types. CSS and CSS Modules for example. Here we'll add a simple CSS file to showcase this. + +First add the following css as a new `index.css` file: ```css body { @@ -192,7 +195,7 @@ body { } ``` -Now let's include in our project by adding it to index.html in the `` +Include it in your project by adding it to index.html in the `` ```diff @@ -200,17 +203,15 @@ Now let's include in our project by adding it to index.html in the `` Starter Snowpack App ``` -## Build for production/deployment - -**You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. +Image: GIF showing adding the css to `index.html` and saving, showing the visual changes as the CSS loads. -By default, `snowpack build` will build your site using the same unbundled approach as the `dev` command. +## Build for production/deployment -See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. +OK you've now built the most amazing website ever (or something like that) and you want to launch it. It's time to use Snowpack build. -When you're ready to deploy your application, run the `snowpack build` command to generate a static production build of your site. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. +By default, `snowpack build` will build your site using the same unbundled approach as the `dev` command. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. -Let's add this to package.json +Let's add this to package.json so it's easier to run on the command line: ```diff "scripts": { @@ -222,7 +223,7 @@ Let's add this to package.json ``` -Now let's try it out. Run this in your terminal +Now let's try it out. Run this in your terminal: ```bash npm run build @@ -230,11 +231,13 @@ npm run build You should see a new directory called `build` that contains a copy of your Snowpack project ready for deployment. -TODO: Image +IMAGE: GIF terminal running Snowpack build, showing output, then clicking on the new `build` directory ## Bundle for deployment -`snowpack build` is fine for many projects, but you also may still want to bundle for production. Legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations can all be handled in Snowpack via bundling. +`snowpack build` is fine for many projects, but you also may still want to bundle to optimize code, especially with large projects. Legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations can all be handled in Snowpack via bundling. In this step we'll install the Webpack plugin and use it to build. + +Snowpack's **You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. Bundlers normally require dozens or even hundreds of lines of configuration, but with Snowpack it's just a one-line plugin with no config required. This is possible because Snowpack builds your application _before_ sending it to the bundler, so the bundler never sees your custom source code (JSX, TS, Svelte, Vue, etc.) and instead only needs to worry about building common HTML, CSS, and JS. @@ -255,14 +258,25 @@ module.exports = { }; ``` -## Next Steps +Again run -Congrads etc.! +```bash +npm run build +``` + +TODO: there is a problem here because it doesn't get the code added in "Using NPM Packages" + +> 💡 Tip: Want to optimize your site code without a bundler? Check out our plugin-optimize. + +## Next Steps -Check out all the other stuff you can try built into Snowpack (CSS modules, JSX etc.) +You're ready to launch the most optimized hello world ever. But that's just the beginning with Snowpack. -Check out examples +What's next? Our docs site has several great resources -Check out plugins +- Features: a list of all the built in features Snowpack supports right out of the box +- Plugins: a list of plugins that allow you to integrate your favorite tools with Snowpack +- Templates/Example: pre-built projects you can build on or just explore using many popular frameworks and tools +- Guides: Step by step deep dives on building with and for Snowpack. Includes frameworks like React and Svelte. -Check out our guides! +If you have any questions, comments, or corrections, we'd love to hear from you in the Snowpack [discussion](https://github.com/snowpackjs/snowpack/discussions) forum or our [Snowpack Discord community](https://discord.gg/rS8SnRk). diff --git a/www/_template/overview.md b/www/_template/overview.md deleted file mode 100644 index 0a4abeb70e..0000000000 --- a/www/_template/overview.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -layout: layouts/main.njk -title: Main Concepts ---- - -## Unbundled Development - -![webpack vs. snowpack diagram](/img/snowpack-unbundled-example-3.png) - -**Unbundled development** is the idea of shipping individual files to the browser during development. Files can still be built with your favorite tools (like Babel, TypeScript, Sass) and then loaded individually in the browser with dependencies thanks to ESM `import` and `export` syntax. Any time you change a file, Snowpack only ever needs to rebuild that single file. - -The alternative is **bundled development.** Almost every popular JavaScript build tool today focuses on bundled development. Running your entire application through a bundler introduces additional work and complexity to your dev workflow that is unnecessary now that ESM is widely supported. Every change -- on every save -- must be rebundled with the rest of your application before your changes can be reflected in your browser. - -Unbundled development has several advantages over the traditional bundled development approach: - -- Single-file builds are fast. -- Single-file builds are deterministic. -- Single-file builds are easier to debug. -- Project size doesn’t affect dev speed. -- Individual files cache better. - -That last point is key: **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. From 3dfba5cc8fc99261397d05ee3e52e18f7ba01650 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Thu, 5 Nov 2020 21:00:34 -0600 Subject: [PATCH 14/33] copy edits --- www/_template/getting-started.md | 86 ++++++++++++++++---------------- 1 file changed, 42 insertions(+), 44 deletions(-) diff --git a/www/_template/getting-started.md b/www/_template/getting-started.md index 3215b30dd4..992daab1f3 100644 --- a/www/_template/getting-started.md +++ b/www/_template/getting-started.md @@ -3,31 +3,29 @@ layout: layouts/main.njk title: Get Started --- -![webpack vs. snowpack diagram](/img/snowpack-unbundled-example-3.png) +![Webpack vs. Snowpack diagram](/img/snowpack-unbundled-example-3.png) -This guide will show you how to set up Snowpack from scratch in a Node.js project. Along the way you'll learn key concepts of Snowpack and unbundled development - -> 💡 Tip: For specific frameworks like React and Svelte we have framework guides. Check out our full list of guides here (TODO: INsert link). +This guide shows you how to set up Snowpack from scratch in a Node.js project. Along the way you'll learn key concepts of Snowpack and unbundled development In this guide you'll learn -- Unbundled development: Saving time by building only the files changed during development instead of bundling your entire codebase. +- Unbundled development: saving time by building only the files changed during development instead of bundling your entire codebase. - ESM and Snowpack: Snowpack uses JavaScript's native module system (known as [ESM](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import)) to power the single-file builds. -- Snowpack's dev server: An instant dev environment for unbundled development. -- Snowpack's build pipeline: A flexible system where you use a bundler only if you need one. -- Using Node modules/NPM packages: Snowpack does the work of bringing your favorite Node modules into the ESM world. +- Snowpack's dev server: an instant dev environment for unbundled development. +- Snowpack's build pipeline: a flexible system where you use a bundler only if you need one. +- Using Node modules/npm packages: Snowpack does the work of bringing your favorite Node modules into the ESM world. - Using CSS: Snowpack has built-in support for CSS (and CSS Modules, JSX and [more](/features) -- Using plugins: You can extend your build even further with [custom plugins](/plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! +- Using plugins: you can extend your build even further with [custom plugins](/plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! -> 💡 Tip: the project we'll create here is [Create Snowpack App minimalist template](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/). For a list of other examples that available check out the [create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) docs. +> 💡 Tip: the project you'll create here is [Create Snowpack App minimalist template/example](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/). A list other examples is available at the [create-snowpack-app](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli) docs. Prerequisites: Snowpack is a command line tool installed from npm. This guide assumes a basic understanding of Node.js, npm, and how to run commands in the terminal. -Snowpack builds your site for both modern and legacy browsers, but during development you'll need to use a [modern browser](http://caniuse.com/#feat=es6-module). Any recent release of Firefox, Chrome, or Edge will do. This is required to support the modern, bundle-free ESM imports that load your application in the browser. +Snowpack builds your site for both modern and legacy browsers, but during development you'll need to use a [modern browser](http://caniuse.com/#feat=es6-module). Any recent release of Firefox, Chrome, Safari or Edge supports the modern, bundle-free ESM imports that load your application in the browser. ## Install Snowpack -In this step we'll create a new NPM project and install Snowpack. +In this step you'll create a new npm project and install Snowpack. First create an empty directory. You can use any tool of your choice or the command line as shown here: @@ -36,7 +34,7 @@ mkdir my-first-snowpack cd my-first-snowpack ``` -Now enable it as an NPM project with the following command, which will create a package.json. Feel free to just hit enter for all the fields: +Now enable it as an npm project with the following command, which will create a package.json. Feel free to just hit enter for all the fields: ```bash npm init @@ -44,7 +42,7 @@ npm init > 💡 Tip: add the "--use-yarn" or "--use-pnpm" flag to use something other than npm -Now let's install Snowpack to our dev dependencies with this command: +Now install Snowpack to your `dev dependencies` with this command: ``` npm install --save-dev snowpack @@ -52,9 +50,9 @@ npm install --save-dev snowpack > 💡 Tip: Snowpack can also be installed globally via `npm install -g snowpack`. But, we recommend installing locally in every project via `--save-dev`/`--dev`. You can run the Snowpack CLI locally via package.json "scripts", npm's `npx snowpack`, or via `yarn snowpack`. -## Snowpack Dev Server +## Snowpack's development server -In this step we'll add some files so we can showcase Snowpack's dev server. Snowpack's dev server is an instant dev environment for unbundled development. The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. +In this step we'll add some files so we can showcase Snowpack's development server, an instant development environment for unbundled development. The development server only builds a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50 ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. First create an `index.html` in your project with the following contents: @@ -73,7 +71,7 @@ First create an `index.html` in your project with the following contents: ``` -Now let's add the Snowpack dev server to `package.json` under as the `start` script: +Add the Snowpack development server to `package.json` under as the `start` script: ```diff "scripts": { @@ -83,7 +81,7 @@ Now let's add the Snowpack dev server to `package.json` under as the `start` scr ``` -Now you can run this on the command line to start the Snowpack dev server +Run the following on the command line to start the Snowpack development server ``` npm run start @@ -95,13 +93,13 @@ IMAGE: GIF. Side by side of the terminal showing the dev server output. The dev Try changing the index.html and saving while the server is running, the site should refresh and show changes automatically. -## ESM (ES Modules) +## Using ESM (ES Modules) -You're ready to add some ES modules (ESM). Snowpack is designed to support JavaScript's native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! +You're ready to add some ES modules (ESM). JavaScript's native ES Module (ESM) syntax is the magic behind Snowpack's unbundled development. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! All modern browsers support ESM, so Snowpack is able to ship this code directly to the browser during development. This is what makes Snowpack's **unbundled development** workflow possible. -Let's create an example `hello-world.js` that exports a `helloWorld` ESM: +Create a JavaScript file called `hello-world.js` that exports a `helloWorld` ES module: ```js export function helloWorld() { @@ -109,7 +107,7 @@ export function helloWorld() { } ``` -Use your new module by importing it using ESM syntax and running. Create an `index.js` that imports our new module using ESM syntax: +Create an `index.js` that imports your new module using ESM syntax: ```js import { helloWorld } from './hello-world.js'; @@ -128,15 +126,15 @@ Finally, add your `index.js` to `index.html` at the bottom of the `` tag > 💡 Tip: Snowpack detects the files in `index.html` for processing -Check your console on your Snowpack site. You should see "Hello World!". Try making a change to the module. Snowpack will rebuild that module without rebuilding the rest of your code. With Snowpack **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. +Check your console on your Snowpack site. You should see "Hello World!" Try making a change to the module. Snowpack will rebuild that module without rebuilding the rest of your code. Snowpack builds **every file individually and caches it indefinitely.** Your development environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. IMAGE: Gif showing the code next to the project running in the browser. On save the console shows "Hello World!". On edit and save of the `hello-world.js` file to be "Hello everyone!" instead, that instantly shows in the browser console. -## Using NPM Packages +## Using npm Packages -While writing your own JavaScript is great, you'll also probably want to use JavaScript from NPM. NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. +While writing your own JavaScript is great, you'll also probably want to use JavaScript from npm. npm packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. -**Snowpack takes a different approach:** Instead of bundling your entire application for this one requirement, Snowpack processes your dependencies separately. Here's how it works: +**Snowpack takes a different approach:** instead of bundling your entire application for this one requirement, Snowpack processes your dependencies separately. Here's how it works: ``` node_modules/react/**/* -> http://localhost:3000/web_modules/react.js @@ -145,17 +143,17 @@ node_modules/react-dom/**/* -> http://localhost:3000/web_modules/react-dom.js 1. Snowpack scans your website/application for all used npm packages. 2. Snowpack reads these installed dependencies from your `node_modules` directory. -3. Snowpack bundles all of your dependencies separately into single JavaScript files. For example: `react` and `react-dom` are converted to `react.js` and `react-dom.js`, respectively. -4. Each resulting file can be run directly in the browser, and imported via ESM `import` statements. +3. Snowpack bundles all of your dependencies separately into single JavaScript files. For example: `react` and `react-dom` convert to `react.js` and `react-dom.js`, respectively. +4. Each resulting file runs directly in the browser, and imported via ESM `import` statements. 5. Because your dependencies rarely change, Snowpack rarely needs to rebuild them. -After Snowpack builds your dependencies, any package can be imported and run directly in the browser with zero additional bundling or tooling required. This ability to import npm packages natively in the browser (without a bundler) is the foundation that all unbundled development and the rest of Snowpack is built on top of. +After Snowpack builds your dependencies, any package can be imported and run directly in the browser with zero additional bundling or tooling required. This ability to import npm packages natively in the browser (without a bundler) is the foundation that all unbundled development and the rest of Snowpack builds on top of. -Snowpack lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. +Snowpack lets you import npm packages directly in the browser. Even if a package is using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. -> 💡 Tip: When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. +> 💡 Tip: when you start up your development server or run a new build, you may see a message that Snowpack is "installing dependencies." This means that Snowpack is converting your dependencies to run in the browser. -Let's install a package from NPM and use it with the following command: +Install the canavas-confetti package from npm and use it with the following command: ```bash npm install --save canvas-confetti @@ -175,17 +173,17 @@ Now head to `index.html` and add this code to the bottom of the `` tag: ``` -> 💡 Tip: You can also add this code in index.js +> 💡 Tip: you can also add this code in index.js You should now see a nifty confetti effect on your site. IMAGE: Gif showing site loading with a confetti effect -> 💡 Tip: Not all NPM modules may work well in the browser. If it's dependent on Node.js built-in modules you'll need to polyfill Node. Read more about how to do this on our [features page.](/features) +> 💡 Tip: not all NPM modules may work well in the browser. If it's dependent on Node.js built-in modules you'll need to polyfill Node. Read more about how to do this on our [features page.](/features) ## Adding CSS -Snowpack natively supports many file types. CSS and CSS Modules for example. Here we'll add a simple CSS file to showcase this. +Snowpack natively supports many file types. CSS and CSS Modules for example. Here you'll add a simple CSS file. First add the following css as a new `index.css` file: @@ -207,11 +205,11 @@ Image: GIF showing adding the css to `index.html` and saving, showing the visual ## Build for production/deployment -OK you've now built the most amazing website ever (or something like that) and you want to launch it. It's time to use Snowpack build. +OK you've now built the most amazing website ever (or something like that) and you want to launch it. It's time to use `Snowpack build`. -By default, `snowpack build` will build your site using the same unbundled approach as the `dev` command. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. +By default, `snowpack build` builds your site using the same unbundled approach as the `dev` command. Building is tightly integrated with your development setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. -Let's add this to package.json so it's easier to run on the command line: +Add the `snowpack build` comman to package.json so it's easier to run on the command line: ```diff "scripts": { @@ -223,7 +221,7 @@ Let's add this to package.json so it's easier to run on the command line: ``` -Now let's try it out. Run this in your terminal: +Now you can run this in your terminal: ```bash npm run build @@ -235,19 +233,19 @@ IMAGE: GIF terminal running Snowpack build, showing output, then clicking on the ## Bundle for deployment -`snowpack build` is fine for many projects, but you also may still want to bundle to optimize code, especially with large projects. Legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations can all be handled in Snowpack via bundling. In this step we'll install the Webpack plugin and use it to build. +`snowpack build` is fine for many projects, but you also may still want to bundle to optimize code, especially with large projects. Snowpack handles legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations via bundling. In this step you'll install the Webpack plugin and use it to build our project. -Snowpack's **You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. +Snowpack's bundling philosophy is that **you should be able to use a bundler because you want to, and not because you need to.** Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. -Bundlers normally require dozens or even hundreds of lines of configuration, but with Snowpack it's just a one-line plugin with no config required. This is possible because Snowpack builds your application _before_ sending it to the bundler, so the bundler never sees your custom source code (JSX, TS, Svelte, Vue, etc.) and instead only needs to worry about building common HTML, CSS, and JS. +Bundlers normally require dozens or even hundreds of lines of configuration, but with Snowpack it's just a one-line plugin with no configuration required. This is possible because Snowpack builds your application _before_ sending it to the bundler, so the bundler never sees your custom source code (JSX, TS, Svelte, Vue, etc.) and instead only needs to worry about building common HTML, CSS, and JS. -Let's use the Webpack plugin. First install it +First install the Webpack plugin with the following command: ```bash npm install @snowpack/plugin-webpack --save-dev ``` -To tell snowpack to use it, we'll need to create a configuration file. Create a file named `snowpack.config.js` +To tell Snowpack to use it, you'll need to create a configuration file. Create a file named `snowpack.config.js` ```js // Bundlers plugins are pre-configured to work with Snowpack apps. From bae02c4fb6df4c437dfde06c1d9eebc97cf8b149 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Wed, 11 Nov 2020 13:57:47 -0600 Subject: [PATCH 15/33] Plugins refactor (#1582) * merging in plugin page * linking to getting started --- www/_template/assets/app.min.css | 107 ++- www/_template/plugins.md | 149 ---- www/_template/plugins.njk | 166 ++++ www/css/_base.scss | 17 +- www/css/_pluginPage.scss | 94 ++ www/css/app.scss | 3 + www/css/test.scss | 640 ++++++++++++++ www/img/backpack.svg | 1 + www/img/rocket-solid.svg | 1 + www/index.md | 1427 ++++++++++++++++++++++++++++++ 10 files changed, 2444 insertions(+), 161 deletions(-) delete mode 100644 www/_template/plugins.md create mode 100644 www/_template/plugins.njk create mode 100644 www/css/_pluginPage.scss create mode 100644 www/css/test.scss create mode 100644 www/img/backpack.svg create mode 100644 www/img/rocket-solid.svg create mode 100644 www/index.md diff --git a/www/_template/assets/app.min.css b/www/_template/assets/app.min.css index 64ebb869bb..c8e1cea349 100644 --- a/www/_template/assets/app.min.css +++ b/www/_template/assets/app.min.css @@ -1363,18 +1363,21 @@ img.company-logo { } } -.markdown-body { +.markdown-body, +.content { padding: 0 1em; - margin-bottom: 50vh; + margin-bottom: 20vh; margin-left: auto; margin-right: auto; max-width: 1000px; } @media (min-width: 860px) { - .markdown-body { + .markdown-body, +.content { padding: 0 3em; } } + .markdown-body h2 .header-link, .markdown-body h3 .header-link { margin-left: 8px; @@ -1394,16 +1397,19 @@ img.company-logo { } .markdown-body h2 { font-size: 3em; - margin-top: 48px; + margin-top: -12px; + padding-top: 60px; } .markdown-body h3 { - margin-top: 48px; + margin-top: -12px; + padding-top: 60px; } .markdown-body h3:hover .header-link { opacity: 1; } .markdown-body h4 { - margin-top: 24px; + margin-top: -36px; + padding-top: 60px; text-transform: uppercase; text-decoration: none; font-weight: bold; @@ -1643,3 +1649,92 @@ img.company-logo { box-shadow: none; border: 0; } + +.pluginPage { + background-color: red; +} +.pluginPage-count { + margin-bottom: 1.5rem; + color: rgba(0, 0, 0, 0.6); + font-weight: 300; + font-size: 1em; + font-style: italic; + text-align: center; +} +@media (min-width: 600px) { + .pluginPage-count { + font-size: 1.2em; + } +} +.pluginPage-intro { + margin-top: 1rem; + margin-bottom: 1rem; + text-align: center; + line-height: 1.5; +} +.pluginPage-intro a { + color: #2e5e82; +} +.pluginPage-search { + display: flex; + width: 100%; +} +.pluginPage-search-input { + font-size: 1em; + box-sizing: border-box; + padding: 0.25em 0.75em; + flex-shrink: 0; + flex-grow: 1; + border-radius: 4px 0 0 4px; + border-width: 1px 0 1px 1px; + appearance: none; + box-shadow: 0 0 0 2px rgba(46, 94, 130, 0); + transition: box-shadow 150ms linear; +} +.pluginPage-search-input:focus { + border-color: #2e5e82; + box-shadow: 0 0 0 2px #2e5e82; + outline: none; +} +.pluginPage-search-input:focus + .pluginPage-search-submit { + box-shadow: 0 0 0 2px #2e5e82; +} +.pluginPage-search-submit { + padding: 0.5em 1em; + color: white; + font-weight: 700; + font-size: 1em; + font-family: "Overpass", sans-serif; + background-color: #2e5e82; + border-radius: 0 4px 4px 0; + appearance: none; + border: none; + box-shadow: 0 0 0 2px rgba(46, 94, 130, 0); + transition: box-shadow 150ms linear; +} +.pluginPage-subheading { + margin-top: 2rem; + margin-bottom: 1.5rem; + color: #2e5e82; + font-size: 1em; + font-family: "Overpass", sans-serif; + letter-spacing: -0.02em; + text-align: center; +} +@media (min-width: 600px) { + .pluginPage-subheading { + font-size: 1.3em; + } +} +.pluginPage-zero-heading { + margin-top: 1.5rem; + margin-bottom: 1.5rem; + font-weight: 700; + font-size: 1.4em; + text-align: center; +} +@media (min-width: 600px) { + .pluginPage-zero-heading { + font-size: 1.5em; + } +} diff --git a/www/_template/plugins.md b/www/_template/plugins.md deleted file mode 100644 index 470a708d8e..0000000000 --- a/www/_template/plugins.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -layout: layouts/main.njk -title: Plugins ---- - -Snowpack isn't just a build tool for JavaScript, it is a build tool for your entire website. Babel, TypeScript, PostCSS, SVGR and any favorite build tool can be connected directly into Snowpack via 1-line plugins. - -Snowpack plugins can be added to: - -- Customize your build with new language/framework support (Svelte, Vue) -- Customize your build with new build tools (Babel, PostCSS) -- Run CLI commands during build and development (TypeScript, ESLint) -- Create custom transformations, specific to your exact application. - -👉 **[Check out our advanced guide](/plugins) and learn how to create your own plugin.** - -## Official Plugins - -- [@snowpack/plugin-babel](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-babel) -- [@snowpack/plugin-dotenv](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) -- [@snowpack/plugin-postcss](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-postcss) -- [@snowpack/plugin-react-refresh](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-react-refresh) -- [@snowpack/plugin-svelte](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-svelte) -- [@snowpack/plugin-vue](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-vue) -- [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-webpack) - -👉 **[Check out our full list](/plugins) of official plugins.** - -## Community Plugins - -- [snowpack-plugin-mdx](https://www.npmjs.com/package/snowpack-plugin-mdx) -- [snowpack-plugin-stylus](https://www.npmjs.com/package/snowpack-plugin-stylus) -- [snowpack-plugin-import-map](https://github.com/zhoukekestar/snowpack-plugin-import-map) - -👉 **[Find your community plugin on npm.](https://www.npmjs.com/search?q=keywords:snowpack%20plugin)** - -## Connect a Plugin - -To make a plugin available, you have to put it in your project `devDependencies` list (`package.json`) which will install it locally (in your project) and make it available to snowpack. - -For the official snowpack plugins, command would look like: - -```bash -# for npm -npm install --save-dev @snowpack/[plugin-name] -# for yarn -yarn add --dev @snowpack/[plugin-name] -``` - -After that, you can connect the plugin to Snowpack via the `"plugins"` array in your Snowpack config. For example, - -```js -// snowpack.config.json -{ - "plugins": ["@snowpack/plugin-babel"] -} -``` - -This is all you need to add Babel to your application build pipeline. If the plugin supports it, you can also pass **options** to the plugin to configure its behavior: - -```js -// snowpack.config.json -{ - "plugins": [ - ["@snowpack/plugin-babel", { /* ... */}] - ], -} -``` - -NOTE: The **order** of plugins is important, for example, if there are multiple plugins that load/build particular type of file, the first matching will take precedence. If it succeeds in the build task for the file, others will not be called for that particular build task. - -## Connect any Script/CLI - -If you can't find a plugin that fits your needs and don't want to write your own, you can also run CLI commands directly as a part of your build using one of our two utility plugins: `@snowpack/plugin-build-script` & `@snowpack/plugin-run-script`. - -### @snowpack/plugin-build-script - -```js -// snowpack.config.json -// [npm install @snowpack/plugin-build-script] -{ - "plugins": [ - ["@snowpack/plugin-build-script", { "cmd": "postcss", "input": [".css"], "output": [".css"]}] - ], -} -``` - -This plugin allows you to connect any CLI into your build process. Just give it a `cmd` CLI command that can take input from `stdin` and emit the build result via `stdout`. Check out the README for more information. - -### @snowpack/plugin-run-script - -```js -// snowpack.config.json -// [npm install @snowpack/plugin-run-script] -{ - "plugins": [ - ["@snowpack/plugin-run-script", { "cmd": "eleventy", "watch": "$1 --watch" }] - ], -} -``` - -This plugin allows you to run any CLI command as a part of your dev and build workflow. This plugin doesn't affect your build output, but it is useful for connecting developer tooling directly into Snowpack. Use this to add meaningful feedback to your dev console as you type, like TypeScript type-checking and ESLint lint errors. - -## @snowpack/plugin-sass - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-sass"] -``` - -[Sass](https://www.sass-lang.com/) is a stylesheet language that’s compiled to CSS. It allows you to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects. - -To use Sass + PostCSS, check out [this guide](https://zellwk.com/blog/eleventy-snowpack-sass-postcss/). - -## @snowpack/plugin-typescript - -Snowpack includes built-in support to build all TypeScript source files (`.ts` & `.tsx`) in your application. - -For automatic TypeScript type checking during development, add the official [@snowpack/plugin-typescript](https://www.npmjs.com/package/@snowpack/plugin-typescript) plugin to your Snowpack config file. This plugin adds automatic `tsc` type checking results right in the Snowpack dev console. - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-typescript"] -``` - -## @snowpack/plugin-webpack - -```js -// snowpack.config.json -{ - // Optimize your production builds with Webpack - "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] -} -``` - -Snowpack ships an official [webpack plugin](https://www.npmjs.com/package/@snowpack/plugin-webpack) for optimizing your build. Connect the `"@snowpack/plugin-webpack"` plugin into your Snowpack configuration file and then run `snowpack build` to see your optimized, bundled build. - -See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. - -## @snowpack/plugin-babel - -Snowpack already comes with built-in support for building JavaScript, TypeScript, and JSX. However, If you would like to run your build through Babel instead, you can replace our default file builder with the official Snowpack Babel plugin. - -The plugin will automatically read plugins & presets from your local project `babel.config.*` config file, if one exists. - -```js -// snowpack.config.json -"plugins": ["@snowpack/plugin-babel"], -``` diff --git a/www/_template/plugins.njk b/www/_template/plugins.njk new file mode 100644 index 0000000000..c3b7b6748c --- /dev/null +++ b/www/_template/plugins.njk @@ -0,0 +1,166 @@ +--- +layout: layouts/base.njk +permalink: '/plugins/' +--- + + + + + +
    +
    + + + + + + + +

    Snowpack

    +

    + The Snowpack Plugin Catalog +

    +
    +
    +

    Customize your build pipeline with Snowpack plugins

    +

    To learn more about our plugin system, read our + getting started + guide.
    Can't find what you need? Creating your own plugin is easy! +

    +
    + + +
    +

    Popular Snowpack Plugins

    + +
    +
    Loading...
    +
    +
    + + + \ No newline at end of file diff --git a/www/css/_base.scss b/www/css/_base.scss index e4184c861f..1bf5f73f15 100644 --- a/www/css/_base.scss +++ b/www/css/_base.scss @@ -459,9 +459,10 @@ img.company-logo { } } -.markdown-body { +.markdown-body, +.content { padding: 0 1em; - margin-bottom: 50vh; + margin-bottom: 20vh; margin-left: auto; margin-right: auto; max-width: 1000px; @@ -469,7 +470,8 @@ img.company-logo { @media (min-width: $breakpoint-m) { padding: 0 3em; } - +} +.markdown-body { h2, h3 { .header-link { @@ -491,11 +493,13 @@ img.company-logo { h2 { font-size: 3em; - margin-top: 48px; + margin-top: -12px; + padding-top: 60px; } h3 { - margin-top: 48px; + margin-top: -12px; + padding-top: 60px; &:hover .header-link { opacity: 1; @@ -503,7 +507,8 @@ img.company-logo { } h4 { - margin-top: 24px; + margin-top: -36px; + padding-top: 60px; text-transform: uppercase; text-decoration: none; font-weight: bold; diff --git a/www/css/_pluginPage.scss b/www/css/_pluginPage.scss new file mode 100644 index 0000000000..85538aa793 --- /dev/null +++ b/www/css/_pluginPage.scss @@ -0,0 +1,94 @@ +.pluginPage { + background-color: red; + &-count { + margin-bottom: 1.5rem; + color: rgba(black, 0.6); + font-weight: 300; + font-size: 1em; + font-style: italic; + text-align: center; + + @media (min-width: 600px) { + font-size: 1.2em; + } + } + + &-intro { + margin-top: 1rem; + margin-bottom: 1rem; + text-align: center; + line-height: 1.5; + + a { + color: #2e5e82; + } + } + + &-search { + display: flex; + width: 100%; + + &-input { + font-size: 1em; + box-sizing: border-box; + padding: 0.25em 0.75em; + flex-shrink: 0; + flex-grow: 1; + border-radius: 4px 0 0 4px; + border-width: 1px 0 1px 1px; + appearance: none; + box-shadow: 0 0 0 2px rgba(#2e5e82, 0); + transition: box-shadow 150ms linear; + + &:focus { + border-color: #2e5e82; + box-shadow: 0 0 0 2px rgba(#2e5e82, 1); + outline: none; + + + .pluginPage-search-submit { + box-shadow: 0 0 0 2px rgba(#2e5e82, 1); + } + } + } + + &-submit { + padding: 0.5em 1em; + color: white; + font-weight: 700; + font-size: 1em; + font-family: 'Overpass', sans-serif; + background-color: #2e5e82; + border-radius: 0 4px 4px 0; + appearance: none; + border: none; + box-shadow: 0 0 0 2px rgba(#2e5e82, 0); + transition: box-shadow 150ms linear; + } + } + + &-subheading { + margin-top: 2rem; + margin-bottom: 1.5rem; + color: #2e5e82; + font-size: 1em; + font-family: 'Overpass', sans-serif; + letter-spacing: -0.02em; + text-align: center; + + @media (min-width: 600px) { + font-size: 1.3em; + } + } + + &-zero-heading { + margin-top: 1.5rem; + margin-bottom: 1.5rem; + font-weight: 700; + font-size: 1.4em; + text-align: center; + + @media (min-width: 600px) { + font-size: 1.5em; + } + } +} diff --git a/www/css/app.scss b/www/css/app.scss index 11a3ba7e73..f308455686 100644 --- a/www/css/app.scss +++ b/www/css/app.scss @@ -12,3 +12,6 @@ // Guides styles @import '_guides'; + +// Pages +@import '_pluginPage'; diff --git a/www/css/test.scss b/www/css/test.scss new file mode 100644 index 0000000000..798077b308 --- /dev/null +++ b/www/css/test.scss @@ -0,0 +1,640 @@ +// typography +$body: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, + Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, + Segoe UI Symbol, Noto Color Emoji; +$heading: 'Overpass', $body; + +// breakpoints +$breakpoint-m: 860px; + +.markdown-body, +body, +html { + font-family: $body; +} + +* { + position: relative; + box-sizing: border-box; +} + +body { + font-family: $body; +} + +p { + line-height: 1.5; +} + +.header-logo, +.header-snowpack, +.header-snowpack-subtitle, +.markdown-body h1, +.markdown-body h2, +.markdown-body h3, +.pretty-font, +.toc, +.version-number { + font-family: $heading; +} + +.button { + display: inline-block; + zoom: 1; + line-height: normal; + white-space: nowrap; + vertical-align: middle; + text-align: center; + cursor: pointer; + user-select: none; + box-sizing: border-box; + font-family: inherit; + font-size: 100%; + padding: 0.5em 1.5em; + margin-bottom: 1rem; + text-decoration: none; + border-radius: 2px; + color: #fff; + font-size: 22px; + background: linear-gradient(45deg, #24bf62, #267dd6, #b224d0); + font-family: 'Overpass', sans-serif; + font-weight: bold; + box-shadow: 0 1px 3px 0 #2e5e82; + width: 100%; +} + +img.company-logo { + box-shadow: none !important; + border: none !important; + flex: 100%; + height: 56px; +} + +.company-logos { + display: flex; + flex-wrap: wrap; + margin-top: -4px; + margin-bottom: 24px; + + > a { + flex-shrink: 0; + text-decoration: none; + color: #e74c3c; + margin: 0 4px; + padding: 10px; + filter: grayscale(0.1); + opacity: 0.8; + + &:hover { + text-decoration: underline; + font-weight: normal; + filter: grayscale(0); + opacity: 1; + } + } + + > .add-company-button, + > .add-star-button { + display: flex; + align-items: center; + color: #555; + font-weight: normal; + filter: grayscale(0); + opacity: 1; + } + + > .add-company-button { + border-color: #e74c3c; + color: #e74c3c; + } +} + +.container { + margin: auto; +} + +.github-button { + display: none; +} + +.grid-body { + overflow: hidden; + padding-top: 52px; + + @media (min-width: $breakpoint-m) { + background: white; + flex-grow: 1; + min-width: 0; + overflow: auto; + padding-top: 0; + } +} + +.grid-body-header { + line-height: 1.5; + margin: 3rem 0 0; + padding: 0 1em; + + @media (min-width: $breakpoint-m) { + margin: 4rem 0 0; + } + + a { + color: white; + } + + > svg { + margin: auto; + display: block; + opacity: 0.9; + } +} + +.grid-extra-space { + position: relative; + height: 470px; + overflow: hidden; + background: #ffffff; + // background: linear-gradient(to right, #0002, #0000 10px), linear-gradient(to right, #94b1bf00, #94b1bf); url('/img/extra-space-4.jpg') center; + background-size: cover; + background: url('/img/extra-space.png') center; + + video, + img { + position: absolute; + width: 100%; + height: 100%; + object-fit: cover; + } + + .image-attribution { + background: #fff9; + position: absolute; + bottom: 0; + right: 0; + text-align: center; + text-align: right; + z-index: 100; + letter-spacing: 0; + padding: 0.5rem 0.75rem; + font-size: 15px; + border-radius: 4px; + + a { + font-weight: 600; + color: black; + } + } +} + +.grid-list ul { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + list-style: none; + font-family: Overpass; + font-size: 18px; + font-style: italic; +} + +.grid-nav { + display: flex; + align-items: center; + justify-content: space-between; + background: #457396; + background: #2e5e82; + padding: 0.5rem 1rem; + + @media (min-width: $breakpoint-m) { + justify-content: left; + } + + img, + svg { + height: 24px; + width: 24px; + display: inline-block; + color: #fffb; + } + + svg:hover { + color: #fff; + } + + a { + color: white; + text-decoration: none; + line-height: 1; + } + + .grid-nav-link { + line-height: 22px; + height: 22px; + font-weight: bold; + color: white; + margin: 0 0 0 auto; + text-transform: uppercase; + color: #fffb; + border-bottom: 2px solid #fff5; + + @media (min-width: $breakpoint-m) { + margin: 0 12px 0 0; + } + + &:hover { + color: #fff; + border-bottom: 2px solid #fff8; + } + } + + a.version-number { + font-size: 22px; + font-weight: bold; + line-height: 1; + color: white; + margin: 0 12px; + color: #fffb; + + &:hover { + color: #fff; + } + } + + .icon-link { + height: 24px; + margin-left: 8px; + } +} + +.grid-nav-container { + position: fixed; + top: 0; + z-index: 100; + width: 100%; + + @media (min-width: $breakpoint-m) { + position: sticky; + } +} + +.grid-toc { + position: fixed; + top: 44px; + left: 0; + right: 0; + bottom: 0; + width: 100vw; + padding: 0; + flex-shrink: 0; + flex-grow: 0; + overflow: auto; + z-index: 100; + + @media (min-width: $breakpoint-m) { + position: sticky; + top: 52px; + width: 360px; + max-height: calc(100vh - 52px); + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + } +} + +.grid-toc-buttons { + height: 44px; + flex-grow: 1; + background: #457396; + background: #2e5e82; + padding: 0.5rem 0.5rem; + + svg, + img { + height: 28px; + width: 28px; + padding: 4px; + display: inline-block; + color: #fffb; + } + + svg:hover { + color: #fff; + } + + img { + filter: grayscale(90%); + + &:hover { + filter: none; + } + } + + a { + float: right; + color: white; + text-decoration: none; + } + + .header-logo { + float: left; + display: flex; + align-items: center; + font-weight: bold; + font-size: 22px; + line-height: 1; + + svg { + color: #fff; + padding: 0; + margin-left: 2px; + margin-right: 8px; + } + } +} + +.header-link { + padding-left: 2px; +} + +.header-logo { + float: left; + display: flex; + align-items: center; + font-weight: bold; + font-size: 36px; + line-height: 1; + margin: 0 -20px 0 0; + + @media (min-width: $breakpoint-m) { + margin: 0 20px 0 0; + } + + svg { + color: #fff; + padding: 0; + margin-left: 2px; + margin-right: 8px; + height: 31px; + width: 31px; + } +} + +.header-snowpack { + font-size: 4.5rem; + text-align: center; + letter-spacing: -0.045em; + line-height: 1; + font-weight: 900; + max-width: 424px; + margin: 0 auto; + opacity: 0.9; + + @media (min-width: $breakpoint-m) { + font-size: 5.75rem; + max-width: none; + margin: 0 auto; + opacity: 1; + } +} + +.header-snowpack-subtitle { + text-align: center; + font-size: 2.1rem; + font-weight: bold; + line-height: 1; + letter-spacing: -1px; + margin: 0; + max-width: 460px; + margin: auto; + opacity: 0.6; +} + +.highlight, +.highlight-container { + position: relative; + font-weight: bold; +} + +.highlight-container { + display: inline-block; +} + +.highlight-1 { + color: #2ecc71; +} + +.highlight-2 { + color: #be2edd; +} + +.highlight-3 { + color: #0c8cec; +} + +.highlight-red { + color: #2ecc71; +} +.highlight-yellow { + color: #be2edd; +} +.highlight-green { + color: #0c8cec; +} + +.img-banner { + display: block; + background: #f0db4f; + text-align: center; + + img { + height: 74px; + box-shadow: none; + border: none; + + @media (min-width: $breakpoint-m) { + height: 100px; + } + } +} + +.markdown-body, +.content { + padding: 0 1em; + margin-bottom: 20vh; + margin-left: auto; + margin-right: auto; + max-width: 1000px; + + @media (min-width: $breakpoint-m) { + padding: 0 3em; + } +} + +.markdown-body { + h2, + h3 { + .header-link { + margin-left: 8px; + opacity: 1; + transition: opacity 100ms ease-in-out; + + @media (min-width: $breakpoint-m) { + opacity: 0; + } + } + } + + h2 code, + h3 code, + h4 code { + font-size: inherit; + } + + h2 { + font-size: 3em; + margin-top: -12px; + padding-top: 60px; + } + + h3 { + margin-top: -12px; + padding-top: 60px; + + &:hover .header-link { + opacity: 1; + } + } + + h4 { + margin-top: -36px; + padding-top: 60px; + text-transform: uppercase; + text-decoration: none; + font-weight: bold; + letter-spacing: 1px; + } + + iframe, + img { + box-shadow: 0 5px 12px 0 #ccc; + border: 1px solid #aaa; + border-radius: 3px; + } + + pre { + padding: 2rem; + } + + ul { + list-style: initial; + } +} + +.markdown-body h3 .markdown-body .markdown-body ul > li > ul { + list-style: none; + border-left: 3px solid #99d; + padding: 0.5rem 1rem 0.6rem; + margin: 0.5rem 0; + border-left: 6px solid #2e5e82; + background: #258ad622; +} + +.toc { + background: #2e5e82; + min-height: 100%; + padding: 1rem; + + @media (min-width: $breakpoint-m) { + padding: 2rem 3rem 0.25rem; + } + + a { + position: relative; + text-decoration: none; + color: #fffb; + + &::before { + content: '▸'; + position: absolute; + opacity: 0; + left: -19px; + top: -4px; + font-weight: normal; + transition: left 140ms ease-out; + } + + &:hover { + text-decoration: underline; + } + + &.active { + color: #fff; + font-weight: bold; + text-decoration: underline; + + &::before { + opacity: 1; + left: -17px; + } + } + } + + ol { + list-style: none; + line-height: 1.8; + margin-bottom: 0; + + @media (min-width: $breakpoint-m) { + margin-bottom: 3rem; + } + } + + > ol > li { + font-weight: bold; + text-transform: uppercase; + padding-bottom: 3rem; + + @media (min-width: $breakpoint-m) { + padding-bottom: 0; + } + + > a { + color: #fff; + } + + > ol { + padding: 0 1em; + font-weight: normal; + text-transform: none; + } + } +} + +#toc-logo { + display: none; + + @media (min-width: $breakpoint-m) { + display: inline-block; + } +} + +#toc-drawer-button { + display: inline-block; + margin: 0 auto 0 0; + + @media (min-width: $breakpoint-m) { + display: none; + margin: 0 12px 0 0; + } +} + +.search-form { + flex-grow: 1; +} + +@media (max-width: $breakpoint-m - 1) { + .hidden-mobile { + display: none; + } + .version-tag { + display: none; + } +} diff --git a/www/img/backpack.svg b/www/img/backpack.svg new file mode 100644 index 0000000000..e65d196900 --- /dev/null +++ b/www/img/backpack.svg @@ -0,0 +1 @@ + diff --git a/www/img/rocket-solid.svg b/www/img/rocket-solid.svg new file mode 100644 index 0000000000..9d930e7a70 --- /dev/null +++ b/www/img/rocket-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/www/index.md b/www/index.md new file mode 100644 index 0000000000..919d79c1c6 --- /dev/null +++ b/www/index.md @@ -0,0 +1,1427 @@ +--- +layout: layouts/main.njk + +# Using Snowpack? Want to be featured on snowpack.dev? +# Add your project, organization, or company to the end of this list! +usersList: + - ia: + name: The Internet Archive + img: https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Internet_Archive_logo_and_wordmark.svg/1200px-Internet_Archive_logo_and_wordmark.svg.png + url: https://github.com/internetarchive/dweb-archive + - 1688: + name: Alibaba 1688 + img: https://s.cafebazaar.ir/1/icons/com.alibaba.intl.android.apps.poseidon_512x512.png + url: https://www.1688.com + - intel: + name: Intel + img: https://upload.wikimedia.org/wikipedia/commons/4/4e/Intel_logo_%282006%29.svg + url: https://twitter.com/kennethrohde/status/1227273971831332865 + - circlehd.com: + name: CircleHD + img: https://www.circlehd.com/img/logo-sm.svg + url: https://www.circlehd.com/ + - Svelvet: + name: Svelvet + img: https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/240/apple/237/spool-of-thread_1f9f5.png + url: https://github.com/jakedeichert/svelvet + - pika: + name: Pika.dev + img: https://www.pika.dev/static/img/logo5.svg + url: https://www.pika.dev + - Toast: + name: Toast + img: https://www.toast.dev/toast-icon-300.png + url: https://www.toast.dev + - maskable: + name: Maskable.app + img: https://maskable.app/favicon/favicon_196.png + url: https://maskable.app/ + - web-skills: + name: Web Skills + img: https://andreasbm.github.io/web-skills/www/icon.svg + url: https://andreasbm.github.io/web-skills + - swissdev-javascript: + name: SwissDev JavaScript Jobs + img: https://static.swissdevjobs.ch/pictures/swissdev-javascript-jobs.svg + url: https://swissdevjobs.ch/jobs/JavaScript/All + - tradie-training: + name: Tradie Training + img: https://tt.edu.au/images/logo.png + url: https://tt.edu.au + - wemake-services: + name: wemake.services + img: https://avatars0.githubusercontent.com/u/19639014?s=200&v=4 + url: https://github.com/wemake-services + - airhacks.com: + name: airhacks.com + img: https://airhacks.com/logo.svg + url: https://airhacks.com + - tongdun: + name: tongdun + img: https://www.tongdun.cn/static/favicon.ico + url: https://www.tongdun.cn/ + - blessing-skin: + name: Blessing Skin + img: https://blessing.netlify.app/logo.png + url: https://github.com/bs-community + - trpg-engine: + name: TRPG Engine + img: https://trpgdoc.moonrailgun.com/img/trpg_logo.png + url: https://trpgdoc.moonrailgun.com/ + - shein: + name: SHEIN + img: https://sheinsz.ltwebstatic.com/she_dist/images/touch-icon-ipad-144-47ceee2d97.png + url: https://www.shein.com/ +--- +## Overview + +### What is Snowpack? + +Snowpack is a modern frontend build tool for faster web development. It replaces heavier, more complex bundlers like webpack or Parcel in your development workflow. + +Snowpack leverages JavaScript's native module system (known as ESM) to create a first-of-its-kind build system that never builds the same file twice. Snowpack pushes changes instantly to the browser, saving you hours of development time traditionally spent waiting around for your bundler. + +### Key Features + +- Develop faster, with a dev server that starts up in **50ms or less.** +- See changes reflected [instantly in the browser.](/#hot-module-replacement) +- Integrate your favorite bundler for a [production-optimized build.](/#bundle-for-production) +- Enjoy out-of-the-box support for [TypeScript, JSX, CSS Modules and more.](/#features) +- Connect your favorite tools with [third-party plugins.](/#plugins) + +### Who's Using Snowpack? + + + +### How Snowpack Works + +**Snowpack is a modern, lightweight build tool for faster web development.** Traditional JavaScript build tools like webpack and Parcel need to rebuild & rebundle entire chunks of your application every time you save a single file. This rebundling step introduces lag between hitting save on your changes and seeing them reflected in the browser. + +Snowpack serves your application **unbundled during development.** Every file only needs to be built once and then is cached forever. When a file changes, Snowpack rebuilds that single file. There's no time wasted re-bundling every change, just instant updates in the browser (made even faster via [Hot-Module Replacement (HMR)](#hot-module-replacement)). You can read more about this approach in our [Snowpack 2.0 Release Post.](/posts/2020-05-26-snowpack-2-0-release/) + +Snowpack's **unbundled development** still supports the same **bundled builds** that you're used to for production. When you go to build your application for production, you can plug in your favorite bundler via an official Snowpack plugin for Webpack or Rollup (coming soon). With Snowpack already handling your build, there's no complex bundler config required. + +**Snowpack gets you the best of both worlds:** fast, unbundled development with optimized performance in your bundled production builds. + +### Library Support + +
    + +- React +- Preact +- Svelte +- Vue +- lit-html +- lit-element +- Styled Components +- Tailwind CSS +- [and more!](/#recipes) + + +
    + +### Tooling Support + +
    + +- Babel +- TypeScript +- PostCSS +- Sass +- esbuild +- 11ty +- [and more!](/#recipes) + + +
    + +### Browser Support + +**Snowpack builds your site for both modern and legacy browsers. Even IE11 is supported.** You can control and customize this behavior with the ["browserlist" package.json property](https://css-tricks.com/browserlist-good-idea/). + +The only requirement is that _during development_ you use a [modern browser](http://caniuse.com/#feat=es6-module). Any recent release of Firefox, Chrome, or Edge will do. This is required to support the modern, bundle-free ESM imports that load your application in the browser. + +### Community + +Join us on Discord! + +[Join the Pika Discord](https://discord.gg/rS8SnRk) for discussion, questions about Snowpack or related Pika projects, or to show off what you’re working on! +## Get Started + +### Install Snowpack + +```bash +# using npm +npm install --save-dev snowpack + +# using yarn +yarn add --dev snowpack +``` + +Snowpack can also be installed globally via `npm install -g snowpack`. But, we recommend installing locally in every project via `--save-dev`/`--dev`. You can run the Snowpack CLI locally via package.json "scripts", npm's `npx snowpack`, or via `yarn snowpack`. + +### Quick Start + +Here's a short list of what you can do with Snowpack: + +```bash +# Start your dev server, load your site locally +snowpack dev + +# Build your site for production +snowpack build + +# Build your site, but watch the file system and rebuild when files change. +# Great for local development with your own dev server (ex: Rails) +snowpack build --watch + +# See more helpful info +snowpack --help +``` + +### Create Snowpack App (CSA) + +The easiest way to get started with Snowpack is via [Create Snowpack App (CSA)](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app). CSA automatically initializes a starter application for you with a pre-configured, Snowpack-powered dev environment. + +If you've ever used Create React App, this is a lot like that! + +```bash +# using npm +npx create-snowpack-app new-dir --template [SELECT FROM BELOW] [--use-yarn] + +# using yarn +yarn create snowpack-app new-dir --template [SELECT FROM BELOW] [--use-yarn] +``` + +### Official App Templates + +- [@snowpack/app-template-blank](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank) +- [@snowpack/app-template-blank-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-blank-typescript) +- [@snowpack/app-template-minimal](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-minimal) +- [@snowpack/app-template-react](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react) +- [@snowpack/app-template-react-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-react-typescript) +- [@snowpack/app-template-preact](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-preact) +- [@snowpack/app-template-svelte](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-svelte) +- [@snowpack/app-template-vue](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-vue) +- [@snowpack/app-template-lit-element](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element) +- [@snowpack/app-template-lit-element-typescript](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-lit-element-typescript) +- [@snowpack/app-template-11ty](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/app-template-11ty) + +- **[See all community templates](https://github.com/snowpackjs/snowpack/tree/master/create-snowpack-app/cli#featured-community-templates)** + + + +### Migrating an Existing App + +Migrating an existing app to Snowpack is meant to be painless, since Snowpack supports most features and build tools that you're already using today (Babel, PostCSS, etc). If this is your first time using Snowpack you should start with a Create Snowpack App (CSA) template, copy over your "src" & "public" files from your old app, and then run `snowpack dev`, troubleshooting any remaining issues. + +CSA is a good starting point for an existing application because it has a few common tools (like Babel) built in by default to replicate the full feature set of a traditional bundled app. CSA is also meant to be a drop-in replacement for Create React App, so any existing Create React App project should run via CSA with zero changes needed. + +If you run into issues, search the rest of our docs site for information about importing CSS [from JS](#javascript) and [from CSS](#import-css), [asset references](#import-images-%26-other-assets), and more. +## Main Concepts + +### Unbundled Development + +![webpack vs. snowpack diagram](/img/snowpack-unbundled-example-3.png) + +**Unbundled development** is the idea of shipping individual files to the browser during development. Files can still be built with your favorite tools (like Babel, TypeScript, Sass) and then loaded individually in the browser with dependencies thanks to ESM `import` and `export` syntax. Any time you change a file, Snowpack only ever needs to rebuild that single file. + +The alternative is **bundled development.** Almost every popular JavaScript build tool today focuses on bundled development. Running your entire application through a bundler introduces additional work and complexity to your dev workflow that is unnecessary now that ESM is widely supported. Every change -- on every save -- must be rebundled with the rest of your application before your changes can be reflected in your browser. + +Unbundled development has several advantages over the traditional bundled development approach: + +- Single-file builds are fast. +- Single-file builds are deterministic. +- Single-file builds are easier to debug. +- Project size doesn’t affect dev speed. +- Individual files cache better. + +That last point is key: **Every file is built individually and cached indefinitely.** Your dev environment will never build a file more than once and your browser will never download a file twice (until it changes). This is the real power of unbundled development. + +### Using NPM Dependencies + +NPM packages are mainly published using a module syntax (Common.js, or CJS) that can't run on the web without some build processing. Even if you write your application using browser-native ESM `import` and `export` statements that would all run directly in the browser, trying to import any one npm package will force you back into bundled development. + +**Snowpack takes a different approach:** Instead of bundling your entire application for this one requirement, Snowpack processes your dependencies separately. Here's how it works: + +``` +node_modules/react/**/* -> http://localhost:3000/web_modules/react.js +node_modules/react-dom/**/* -> http://localhost:3000/web_modules/react-dom.js +``` + +1. Snowpack scans your website/application for all used npm packages. +2. Snowpack reads these installed dependencies from your `node_modules` directory. +3. Snowpack bundles all of your dependencies separately into single JavaScript files. For example: `react` and `react-dom` are converted to `react.js` and `react-dom.js`, respectively. +4. Each resulting file can be run directly in the browser, and imported via ESM `import` statements. +5. Because your dependencies rarely change, Snowpack rarely needs to rebuild them. + +After Snowpack builds your dependencies, any package can be imported and run directly in the browser with zero additional bundling or tooling required. This ability to import npm packages natively in the browser (without a bundler) is the foundation that all unbundled development and the rest of Snowpack is built on top of. + +```html + + + + +``` + +### Snowpack's Dev Server + +![dev command output example](/img/snowpack-dev-startup-2.png) + +`snowpack dev` - Snowpack's dev server is an instant dev environment for [unbundled development.](#unbundled-development) The dev server will only build a file when it's requested by the browser. That means that Snowpack can start up instantly (usually in **<50ms**) and scale to infinitely large projects without slowing down. In contrast, it's common to see 30+ second dev startup times when building large apps with a traditional bundler. + +Snowpack supports JSX & TypeScript source code by default. You can extend your build even further with [custom plugins](#plugins) that connect Snowpack with your favorite build tools: TypeScript, Babel, Vue, Svelte, PostCSS, Sass... go wild! + +### Snowpack's Build Pipeline + +![build output example](/img/snowpack-build-example.png) + +`snowpack build` - When you're ready to deploy your application, run the build command to generate a static production build of your site. Building is tightly integrated with your dev setup so that you are guaranteed to get a near-exact copy of the same code that you saw during development. + +### Bundle for Production + +**You should be able to use a bundler because you want to, and not because you need to.** That was the original concept that Snowpack was designed to address. Snowpack treats bundling as an optional production optimization, which means you're free to skip over the extra complexity of bundling until you need it. + +By default, `snowpack build` will build your site using the same unbundled approach as the `dev` command. This is fine for most projects, but you also may still want to bundle for production. Legacy browser support, code minification, code-splitting, tree-shaking, dead code elimination, and other performance optimizations can all be handled in Snowpack via bundling. + +Bundlers normally require dozens or even hundreds of lines of configuration, but with Snowpack it's just a one-line plugin with no config required. This is possible because Snowpack builds your application _before_ sending it to the bundler, so the bundler never sees your custom source code (JSX, TS, Svelte, Vue, etc.) and instead only needs to worry about building common HTML, CSS, and JS. + +```js +// Bundlers plugins are pre-configured to work with Snowpack apps. +// No config required! +{ + "plugins": [["@snowpack/plugin-webpack"]] +} +``` + +See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. +## JavaScript + +### ES Modules (ESM) + +Snowpack was designed to support JavaScript's native ES Module (ESM) syntax. ESM lets you define explicit imports & exports that browsers and build tools can better understand and optimize for. If you're familiar with the `import` and `export` keywords in JavaScript, then you already know ESM! + +```js +// ESM Example - src/user.js +export function getUser() { + /* ... */ +} + +// src/index.js +import {getUser} from './user.js'; +``` + +All modern browsers support ESM, so Snowpack is able to ship this code directly to the browser during development. This is what makes Snowpack's **unbundled development** workflow possible. + +Snowpack also lets you import non-JavaScript files directly in your application. Snowpack handles all this for you automatically so there's nothing to configure, using the following logic: + +### Import NPM Packages + +```js +// Returns the React & React-DOM npm packages +import React from 'react'; +import ReactDOM from 'react-dom'; +``` + +Snowpack lets you import npm packages directly in the browser. Even if a package was published using a legacy format, Snowpack will up-convert the package to ESM before serving it to the browser. + +When you start up your dev server or run a new build, you may see a message that Snowpack is "installing dependencies". This means that Snowpack is converting your dependencies to run in the browser. + +### Import JSON + +```js +// Returns the JSON object via the default import +import json from './data.json'; +``` + +Snowpack supports importing JSON files, which return the full JSON object in the default import. + +### Import CSS + +```js +// Loads './style.css' onto the page +import './style.css'; +``` + +Snowpack supports basic CSS imports inside of your JavaScript files. When you import a CSS file via the `import` keyword, Snowpack will automatically apply those styles to the page. This works for CSS and compile-to-CSS languages like Sass & Less. + +If you prefer, Snowpack also supports any popular CSS-in-JS library for styling. + +### Import CSS Modules + +```css +/* src/style.module.css */ +.error { + background-color: red; +} +``` + +```js +// 1. Converts './style.module.css' classnames to unique, scoped values. +// 2. Returns an object mapping the original classnames to their final, scoped value. +import styles from './style.module.css'; + +// This example uses JSX, but you can use CSS Modules with any framework. +return
    Your Error Message
    ; +``` + +Snowpack supports CSS Modules using the `[name].module.css` naming convention. CSS Modules work just like normal CSS imports, but with a special default `styles` export that maps your original classnames to unique identifiers. + +### Import Images & Other Assets + +```jsx +import img from './image.png'; // img === '/src/image.png' +import svg from './image.svg'; // svg === '/src/image.svg' + +// This example uses JSX, but you can use these references with any framework. +; +``` + +All other assets not explicitly mentioned above can be imported via ESM `import` and will return a URL reference to the final built asset. This can be useful for referencing non-JS assets by URL, like creating an image element with a `src` attribute pointing to that image. + +#### Coming Soon: Native Reference URLs + +Webpack 5.0 released support for native reference URLs to replace the original, fake ESM file import. If you are using a bundler that supports this (or, not using a bundler at all) we recommend updating your non-JS URL reference imports to use this more standard pattern. Once Rollup adds support as well, we will move to promote this to our recommended style. + +```jsx +const img = new URL('./image.png', import.meta.url); // img === '/src/image.png' +const svg = new URL('./image.svg', import.meta.url); // svg === '/src/image.svg' + +// This example uses JSX, but you can use these references with any framework. +; +``` + +## Features + +Snowpack ships with built-in support for the following file types, no configuration required: + +- JavaScript (`.js`, `.mjs`) +- TypeScript (`.ts`, `.tsx`) +- JSX (`.jsx`, `.tsx`) +- CSS (`.css`) +- CSS Modules (`.module.css`) +- Images (`.svg`, `.jpg`, `.png`, etc.) + +To customize build behavior and support new languages (`.scss`, `.svelte`, `.vue`), keep reading. + +### Import Aliases + +```js +// Instead of this: +import Button from `../../../../components/Button`; + +// You can do this: +import Button from `@app/components/Button`; +``` + +Snowpack supports setting custom import aliases for your project via the top-level `alias` property. This can be used to define an alias for either a local source directory (like aliasing `@app` to `./src`) or a package (like aliasing `react` to `preact/compat`). See the full documentation for `alias` below. + +**TypeScript Users:** You'll need to configure your `tsconfig.json` `paths` to get proper types from top-level imports. Learn more about ["path mappings"](https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping). + +```js +// tsconfig.json +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + // Define either ONE of these... + // 1. General support: matches everything relative to the project directory + "*": ["*"], + // 2. Explicit support: match only your mounted directories (Recommended!) + "src/*": ["src/*"], + "public/*": ["public/*"], + } + } +} +``` + +### Environment Variables + +```js +// `import.meta.env` - Read process.env variables in your web app +fetch(`${import.meta.env.SNOWPACK_PUBLIC_API_URL}/users`).then(...) + +// Supports destructuring as well: +const {SNOWPACK_PUBLIC_API_URL} = import.meta.env; +fetch(`${SNOWPACK_PUBLIC_API_URL}/users`).then(...) + +// Instead of `import.meta.env.NODE_ENV` use `import.meta.env.MODE` +if (import.meta.env.MODE === 'development') { + // ... +``` + +You can read environment variables directly in your web application via `import.meta.env`. If you've ever used `process.env` in Create React App or any Webpack application, this behaves exactly the same. + +For your safety, Snowpack only supports environment variables that begin with `SNOWPACK_PUBLIC_*`. We do this because everything in your web application is sent to the browser, and we don't want you to accidentally share sensitive keys/env variables with your public web application. Prefixing your frontend web env variables with `SNOWPACK_PUBLIC_` is a good reminder that they will be shared with the world. + +`import.meta.env.MODE` and `import.meta.env.NODE_ENV` are also both set to the current `process.env.NODE_ENV` value, so that you can change app behavior based on dev vs. build. The env value is set to `development` during `snowpack dev` and `production` during `snowpack build`. Use this in your application instead of `process.env.NODE_ENV`. + +You can use environment variables in HTML files. All occurrences of `%SNOWPACK_PUBLIC_*%`, `%PUBLIC_URL%`, and `%MODE%` will be replaced at build time. + +**Remember:** that these env variables are statically injected into your application for everyone at **build time**, and not runtime. + +#### `.env` File Support + +```js +// snowpack.config.json +{ + "plugins": ["@snowpack/plugin-dotenv"] +} +``` + +Add the `@snowpack/plugin-dotenv` plugin to your dev environment to automatically load environment variables from your project `.env` files. Visit the [plugin README](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) to learn more. + +### Hot Module Replacement + +Hot Module Replacement (HMR) is the ability to update your web app during development without refreshing the page. Imagine changing some CSS, hitting save, and then instantly seeing your change reflected on the page without a refresh. That's HMR. + +Snowpack supports full HMR out-of-the-box for the following served files: + +- CSS +- CSS Modules +- JSON + +Popular frameworks can also be set up for HMR. **[Create Snowpack App (CSA)](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app) ships with HMR enabled by default for all of the following frameworks.** If you're not using CSA, you can setup HMR in your application with a simple plugin or a few lines of code: + +- Preact: [@prefresh/snowpack](https://www.npmjs.com/package/@prefresh/snowpack) +- React: [@snowpack/plugin-react-refresh](https://www.npmjs.com/package/@snowpack/plugin-react-refresh) +- Svelte: [A few lines of code](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-svelte/src/index.js#L9-L16) +- Vue: [A few lines of code](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-vue/src/index.js#L7-L14) + +For more advanced, bare-metal HMR integrations, Snowpack created [ESM-HMR](https://github.com/snowpackjs/esm-hot-module-replacement-spec), a standard HMR API for any ESM-based dev environment. Any HMR integration built for ESM-HMR will run on Snowpack and any other ESM-HMR-enabled dev server. To use the HMR API directly (via `import.meta.hot`) check out [the ESM-HMR spec](https://github.com/snowpackjs/esm-hot-module-replacement-spec) to learn more. + +```js +if (import.meta.hot) { + import.meta.hot.accept(({module}) => { + // Accept the module, apply it to your application. + }); + import.meta.hot.dispose(() => { + // Cleanup any side-effects. Optional. + }); +} +``` + +- 👉 **[Check out the full ESM-HMR spec.](https://github.com/snowpackjs/esm-hot-module-replacement-spec)** + +### Dev Request Proxy + +```js +// snowpack.config.json +// Example: Proxy "/api/pokemon/ditto" -> "https://pokeapi.co/api/v2/pokemon/ditto" +{ + "proxy": { + "/api": "https://pokeapi.co/api/v2", + } +} +``` + +Snowpack can proxy requests from the dev server to external URLs and APIs. Making API requests directly the dev server can help you mimic your production environment during development. + +See the [config.proxy API](#config.proxy) section for more information and full set of configuration options. + +### HTTPS/HTTP2 + +``` +npm start -- --secure +``` + +Snowpack provides an easy way to use a local HTTPS server during development through the use of the `--secure` flag. When enabled, Snowpack will look for a `snowpack.key` and `snowpack.crt` file in the root directory and use that to create an HTTPS server with HTTP2 support enabled. + +#### Generating SSL Certificates + +You can automatically generate credentials for your project via either: + +- [devcert (no install required)](https://github.com/davewasmer/devcert-cli): `npx devcert-cli generate localhost` +- [mkcert (install required)](https://github.com/FiloSottile/mkcert): `mkcert -install && mkcert -key-file snowpack.key -cert-file snowpack.crt localhost` + +In most situations you should add personally generated certificate files (`snowpack.key` and `snowpack.crt`) to your `.gitignore` file. + +### Legacy Browser Support + +You can customize the set of browsers you'd like to support via the `package.json` "browserslist" property, going all the way back to IE11. This will be picked up when you run `snowpack build` to build for production. + +```js +/* package.json */ +"browserslist": ">0.75%, not ie 11, not UCAndroid >0, not OperaMini all", +``` + +If you're worried about legacy browsers, you should also add a bundler to your production build. Check out our [section on bundling for production](#bundle-for-production) for more info. + +Note: During development (`snowpack dev`) we perform no transpilation for older browsers. Make sure that you're using a modern browser during development. + +### Node.js Polyfills + +If you depend on packages that depend on Node.js built-in modules (`"fs"`, `"path"`, `"url"`, etc.) you can run Snowpack with `--polyfill-node` (or `installOptions.polyfillNode: true` in your config file). This will automatically polyfill any Node.js dependencies as much as possible for the browser. You can see the full list of supported polyfills here: https://github.com/ionic-team/rollup-plugin-node-polyfills + +If you'd like to customize this polyfill behavior, skip the `--polyfill-node` flag and instead provide your own Rollup plugin for the installer: + +```js +// Example: If `--polyfill-node` doesn't support your use-case, you can provide your own custom Node.js polyfill behavior +module.exports = { + installOptions: { + polyfillNode: false, + rollup: { + plugins: [require('rollup-plugin-node-polyfills')({crypto: true, ...})], + }, + }, +}; +``` + +### CSS Imports (@import) + +```css +/* Import a local CSS file */ +@import './style1.css'; +/* Import a local Sass file (Sass build plugin still needed to compile file contents) */ +@import './style2.scss'; +/* Import a package CSS file */ +@import 'bootstrap/dist/css/bootstrap.css'; +``` + +Snowpack supports [native CSS "@import" behavior](https://developer.mozilla.org/en-US/docs/Web/CSS/@import) with additional support for importing CSS from within packages. + +**Note:** The actual CSS spec dictates that a "bare" import specifier like `@import "package/style.css"` should be treated as a relative path, equivalent to `@import "./package/style.css"`. We intentionally break from the spec to match the same package import behavior as JavaScript imports. If you prefer the strictly native behavior with no package resolution support, use the form `@import url("package/style.css")` instead. Snowpack will not resolve `url()` imports and will leave them as-is in the final build. + +**Note for webpack users:** If you're migrating an existing app to snowpack, note that `@import '~package/...'` (URL starting with a tilde) is a syntax specific to webpack. With Snowpack you remove the `~` from your `@import`s. + +### Server Side Rendering (SSR) + +SSR for Snowpack is supported but fairly new and experimental. This documentation will be updated as we finalize support over the next few minor versions. + +```js +// New in Snowpack v2.15.0 - JS API Example +import {startDevServer} from 'snowpack'; +const server = await startDevServer({ ... }); +``` + +These frameworks have known experiments / examples of using SSR + Snowpack: + +- React (Example): https://github.com/matthoffner/snowpack-react-ssr +- Svelte/Sapper (Experiment): https://github.com/Rich-Harris/snowpack-svelte-ssr +- [Join our Discord](https://discord.gg/rS8SnRk) if you're interested in getting involved! + +### Optimized Builds + +By default, Snowpack doesn't optimize your code for production. But, there are several plugins available to optimize your final build, including minification (reducing file sizes) and even bundling (combining files together to reduce the number of requests needed). + +**Connect the `@snowpack/plugin-optimize` plugin to optimize your build.** By default this will minify your built files for faster loading. It can also be configured to add `` elements that will improve the loading speed of unbundled sites. _Note: this plugin replaces `buildOptions.minify`._ + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-optimize] +{ + "plugins": [ + ["@snowpack/plugin-optimize", {/* ... */}] + ] +} +``` + +Note that `@snowpack/plugin-optimize` will optimize your build, but won't bundle files together. + +**If you'd like a bundled build, use `@snowpack/plugin-webpack` instead.** Connect the `"@snowpack/plugin-webpack"` plugin in your Snowpack configuration file and then run `snowpack build` to see your optimized, _bundled_ build. + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-webpack] +{ + "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] +} +``` + +### Testing + +Snowpack supports any popular JavaScript testing framework that you're already familiar with. Mocha, Jest, Jasmine, AVA and Cypress are all supported in Snowpack applications. + +We currently recommend [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) (WTR) for testing in Snowpack projects. When benchmarked it performed faster than Jest (our previous recommendation) while also providing an environment for testing that more closely matches the actual browser that your project runs in. Most importantly, WTR runs the same Snowpack build pipeline that you've already configured for your project, so there's no extra build configuration needed to run your tests. Jest (and many others) ask you to configure a totally secondary build pipeline for your tests, which reduces test confidence while adding 100s of extra dependencies to your project. + +To use [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) in your project, [follow the instructions here](https://modern-web.dev/docs/test-runner/overview/) and make sure that you add the Snowpack plugin to your config file: + +```js +// web-test-runner.config.js +module.exports = { + plugins: [require('@snowpack/web-test-runner-plugin')()], +}; +``` + +[See an example setup](https://github.com/snowpackjs/snowpack/blob/master/create-snowpack-app/app-template-react) in on of our Create Snowpack App starter templates. +## Plugins + +Snowpack isn't just a build tool for JavaScript, it is a build tool for your entire website. Babel, TypeScript, PostCSS, SVGR and any favorite build tool can be connected directly into Snowpack via 1-line plugins. + +Snowpack plugins can be added to: + +- Customize your build with new language/framework support (Svelte, Vue) +- Customize your build with new build tools (Babel, PostCSS) +- Run CLI commands during build and development (TypeScript, ESLint) +- Create custom transformations, specific to your exact application. + +👉 **[Check out our advanced guide](/plugins) and learn how to create your own plugin.** + +### Connect a Plugin + +To make a plugin available, you have to put it in your project `devDependencies` list (`package.json`) which will install it locally (in your project) and make it available to snowpack. + +For the official snowpack plugins, command would look like: + +```bash +# for npm +npm install --save-dev @snowpack/[plugin-name] +# for yarn +yarn add --dev @snowpack/[plugin-name] +``` + +After that, you can connect the plugin to Snowpack via the `"plugins"` array in your Snowpack config. For example, + +```js +// snowpack.config.json +{ + "plugins": ["@snowpack/plugin-babel"] +} +``` + +This is all you need to add Babel to your application build pipeline. If the plugin supports it, you can also pass **options** to the plugin to configure its behavior: + +```js +// snowpack.config.json +{ + "plugins": [ + ["@snowpack/plugin-babel", { /* ... */}] + ], +} +``` + +NOTE: The **order** of plugins is important, for example, if there are multiple plugins that load/build particular type of file, the first matching will take precedence. If it succeeds in the build task for the file, others will not be called for that particular build task. + +### Connect any Script/CLI + +If you can't find a plugin that fits your needs and don't want to write your own, you can also run CLI commands directly as a part of your build using one of our two utility plugins: `@snowpack/plugin-build-script` & `@snowpack/plugin-run-script`. + +#### @snowpack/plugin-build-script + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-build-script] +{ + "plugins": [ + ["@snowpack/plugin-build-script", { "cmd": "postcss", "input": [".css"], "output": [".css"]}] + ], +} +``` + +This plugin allows you to connect any CLI into your build process. Just give it a `cmd` CLI command that can take input from `stdin` and emit the build result via `stdout`. Check out the README for more information. + +#### @snowpack/plugin-run-script + +```js +// snowpack.config.json +// [npm install @snowpack/plugin-run-script] +{ + "plugins": [ + ["@snowpack/plugin-run-script", { "cmd": "eleventy", "watch": "$1 --watch" }] + ], +} +``` + +This plugin allows you to run any CLI command as a part of your dev and build workflow. This plugin doesn't affect your build output, but it is useful for connecting developer tooling directly into Snowpack. Use this to add meaningful feedback to your dev console as you type, like TypeScript type-checking and ESLint lint errors. + +### Official Plugins + +- [@snowpack/plugin-babel](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-babel) +- [@snowpack/plugin-dotenv](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-dotenv) +- [@snowpack/plugin-postcss](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-postcss) +- [@snowpack/plugin-react-refresh](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-react-refresh) +- [@snowpack/plugin-svelte](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-svelte) +- [@snowpack/plugin-svelte-typescript](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-svelte-typescript) +- [@snowpack/plugin-vue](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-vue) +- [@snowpack/plugin-webpack](https://github.com/snowpackjs/snowpack/tree/master/plugins/plugin-webpack) + +👉 **[Check out our full list](/plugins) of official plugins.** + +### Community Plugins + +- [snowpack-plugin-mdx](https://www.npmjs.com/package/snowpack-plugin-mdx) +- [snowpack-plugin-stylus](https://www.npmjs.com/package/snowpack-plugin-stylus) +- [snowpack-plugin-import-map](https://github.com/zhoukekestar/snowpack-plugin-import-map) + +👉 **[Find your community plugin on npm.](https://www.npmjs.com/search?q=keywords:snowpack%20plugin)** +## Recipes + +Below are a collection of guides for using different web frameworks and build tools with Snowpack. If you'd like to contribute a new recipe, feel free to edit the docs to add your own. + +### Supported Libraries + +All of the following frameworks have been tested and guaranteed to work in Snowpack without issues. If you encounter an issue using any of the following, please file an issue. + +- React +- Preact +- JSX +- HTM +- lit-html +- Vue (see below) +- Svelte (see below) +- Tailwind CSS (see below) +- Sass (see below) +- and many more! +- Literally... every library should work with Snowpack! + +Some libraries use compile-to-JS file formats and do require a special build script or plugin. See the guide below for examples. + +### JSX + +Snowpack has built-in support to handle `.jsx` & `.tsx` source files in your application. + +**Note: Snowpack's default build does not support JSX in `.js`/`.ts` files.** If you can't use the `.jsx`/`.tsx` file extension, you can use [Babel](#babel) to build your application instead. + +### TypeScript + +Snowpack includes built-in support to build all TypeScript source files (`.ts` & `.tsx`) in your application. + +For automatic TypeScript type checking during development, add the official [@snowpack/plugin-typescript](https://www.npmjs.com/package/@snowpack/plugin-typescript) plugin to your Snowpack config file. This plugin adds automatic `tsc` type checking results right in the Snowpack dev console. + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-typescript"] +``` + +### Babel + +Snowpack already comes with built-in support for building JavaScript, TypeScript, and JSX. However, If you would like to run your build through Babel instead, you can replace our default file builder with the official Snowpack Babel plugin. + +The plugin will automatically read plugins & presets from your local project `babel.config.*` config file, if one exists. + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-babel"], +``` + +### Preact + +You can import and use Preact without any custom configuration needed. + +**To use `preact/compat`:** (the Preact+React compatability layer) alias the "compat" package to React in your install options: + +```js +// Example: Lets you import "react" in your application, but uses preact internally +// snowpack.config.json + "alias": { + "react": "preact/compat", + "react-dom": "preact/compat" + } +``` + +### Vue + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-vue"] +``` + +### Svelte + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-svelte"] +``` + +### PostCSS + +```js +// snowpack.config.json +"plugins": [ + ["@snowpack/plugin-build-script", {"cmd": "postcss", "input": [".css"], "output": [".css"]}] +] +``` + +The [`postcss-cli`](https://github.com/postcss/postcss-cli) package must be installed manually. You can configure PostCSS with a `postcss.config.js` file in your current working directory. + +### Tailwind CSS + +You can add [Tailwind](https://tailwindcss.com) to any project via native CSS `@import`: + +```css +/* index.css */ +@import 'tailwindcss/dist/base.css'; +@import 'tailwindcss/dist/components.css'; +@import 'tailwindcss/dist/utilities.css'; +``` + +#### Using Tailwind with PostCSS + +If you are using PostCSS in your project ([see above](#postcss)) then you can just add Tailwind as a plugin to your `postcss.config.js`: + +```js +// postcss.config.js +// Taken from: https://tailwindcss.com/docs/installation#using-tailwind-with-postcss +module.exports = { + plugins: [ + // ... + require('tailwindcss'), + require('autoprefixer'), + // ... + ], +}; +``` + +Once you have added the Tailwind PostCSS plugin, you can replace your native CSS `dist` imports with Tailwind's more powerful `base`, `components`, and `utilities` imports: + +```diff +/* index.css */ +- @import 'tailwindcss/dist/base.css'; +- @import 'tailwindcss/dist/components.css'; +- @import 'tailwindcss/dist/utilities.css'; ++ @import 'tailwindcss/base'; ++ @import 'tailwindcss/components'; ++ @import 'tailwindcss/utilities'; +``` + +Follow the official [Tailwind CSS Docs](https://tailwindcss.com/docs/installation/#using-tailwind-with-postcss) for more information. + +### Sass + +```js +// snowpack.config.json +"plugins": ["@snowpack/plugin-sass"] +``` + +[Sass](https://www.sass-lang.com/) is a stylesheet language that’s compiled to CSS. It allows you to use variables, nested rules, mixins, functions, and more, all with a fully CSS-compatible syntax. Sass helps keep large stylesheets well-organized and makes it easy to share design within and across projects. + +To use Sass + PostCSS, check out [this guide](https://zellwk.com/blog/eleventy-snowpack-sass-postcss/). + +### ESLint + +```js +// snowpack.config.json +"plugins": [ + ["@snowpack/plugin-run-script", { + "cmd": "eslint \"src/**/*.{js,jsx,ts,tsx}\"", + // Optional: Use npm package "watch" to run on every file change + "watch": "watch \"$1\" src" + }] +] +``` + +### Webpack + +```js +// snowpack.config.json +{ + // Optimize your production builds with Webpack + "plugins": [["@snowpack/plugin-webpack", {/* ... */}]] +} +``` + +Snowpack ships an official [webpack plugin](https://www.npmjs.com/package/@snowpack/plugin-webpack) for optimizing your build. Connect the `"@snowpack/plugin-webpack"` plugin into your Snowpack configuration file and then run `snowpack build` to see your optimized, bundled build. + +See ["Optimized Builds"](/#optimized-builds) for more information about connecting bundled (or unbundled) optimization plugins for your production builds. + +### Workbox + +The [Workbox CLI](https://developers.google.com/web/tools/workbox/modules/workbox-cli) integrates well with Snowpack. Run the wizard to bootstrap your first configuration file, and then run `workbox generateSW` to generate your service worker. + +Remember that Workbox expects to be run every time you deploy, as a part of a production build process. If you don't have one yet, create package.json [`"deploy"` and/or `"build"` scripts](https://michael-kuehnel.de/tooling/2018/03/22/helpers-and-tips-for-npm-run-scripts.html) to automate your production build process. + +### @web/test-runner + +[@web/test-runner](https://www.npmjs.com/package/@web/test-runner) is our recommended test runner for Snowpack projects. [See our section on testing](/#testing) for detailed instructions on how to get started with @web/test-runner. + +### Jest + +> Update (October 11, 2020): **We now recommend [@web/test-runner](https://www.npmjs.com/package/@web/test-runner) as our test runner of choice for Snowpack projects.** [See our section on testing](/#testing) for more background behind the change. + +[Jest](https://jestjs.io/) is a popular Node.js test runner for Node.js & web projects. Jest can be used with any frontend project as long as you configure how Jest should build your frontend files to run on Node.js. Many projects will try to manage this configuration for you, since it can get complicated. + +Snowpack ships pre-built Jest configuration files for several popular frameworks. If you need to use Jest for any reason,consider extending one of these packages: + +- React: [@snowpack/app-scripts-react](https://www.npmjs.com/package/@snowpack/app-scripts-react) +- Preact: [@snowpack/app-scripts-preact](https://www.npmjs.com/package/@snowpack/app-scripts-preact) +- Svelte: [@snowpack/app-scripts-svelte](https://www.npmjs.com/package/@snowpack/app-scripts-svelte) + +You can use these packages in your project like so: + +```js +// jest.config.js +// Example: extending a pre-built Jest configuration file +module.exports = { + ...require('@snowpack/app-scripts-preact/jest.config.js')(), +}; +``` + +### Server Side Rendering (SSR) + +To connect your own server to `snowpack dev` for SSR, there are a few things that you'll need to set up. Make sure that you include any Snowpack-built resources via script tags in your server's HTML response: + +```html + + +``` + +And make sure that your HTML response also includes code to configure HMR to talk to Snowpack's dev server: + +```html + + +``` + +### Leaving Snowpack + +Snowpack is designed for zero lock-in. If you ever feel the need to add a traditional application bundler to your stack (for whatever reason!) you can do so in seconds. + +Any application built with Snowpack should Just Work™️ when passed through Webpack/Rollup/Parcel. If you are already importing packages by name in your source code (ex: `import React from 'react'`) then you should be able to migrate to any popular bundler without issue. + +If you are importing packages by full URL (ex: `import React from '/web_modules/react.js'`), then a simple Find & Replace should help you re-write them to the plain package name imports that most bundlers expect. +## Troubleshooting + +### No such file or directory + +``` +ENOENT: no such file or directory, open …/node_modules/csstype/index.js +``` + +This error message would sometimes occur in older versions of Snowpack. + +**To solve this issue:** Upgrade to Snowpack `v2.6.0` or higher. If you continue to see this unexpected error in newer versions of Snowpack, please file an issue. + +### Package exists but package.json "exports" does not include entry + +Node.js recently added support for a package.json "exports" entry that defines which files you can and cannot import from within a package. Preact, for example, defines an "exports" map that allows you to to import "preact/hooks" but not "preact/some/custom/file-path.js". This allows packages to control their "public" interface. + +If you see this error message, that means that you've imported a file path not allowed in the export map. If you believe this to be an error, reach out to the package author to request the file be added to their export map. + +### Uncaught SyntaxError: The requested module '/web_modules/XXXXXX.js' does not provide an export named 'YYYYYY' + +#### Legacy Common.js Packages + +This is usually seen when importing a named export from a package written in the older Common.js format. Snowpack will automatically scan legacy Common.js packages to detect its named exports, but sometimes these exports can't be detected statically. + +**To solve this issue:** Add a ["namedExports"](#config.installoptions) entry in your Snowpack config file. This tells Snowpack to use a more-powerful runtime scanner on this legacy Common.js package to detect it's exports at runtime. + +```json +// snowpack.config.json +// Example: add support for `import { Terminal } from 'xterm';` +"installOptions": { + "namedExports": ["xterm"] +} +``` + +#### TypeScript imports + +This could occur if you're attempting to import a named interface or other type from another compiled TypeScript file. + +**To solve this issue:** Make sure to use `import type { MyInterfaceName }` instead. + +### Installing Non-JS Packages + +When installing packages from npm, you may encounter some file formats that can only run with additional parsing/processing. First check to see if there is a [Snowpack plugin for the type of file](#plugins). + +Because our internal installer is powered by Rollup, you can also add Rollup plugins to your [Snowpack config](#configuration) to handle these special, rare files: + +```js +/* snowpack.config.js */ +module.exports = { + rollup: { + plugins: [require('rollup-plugin-sass')()], + }, +}; +``` + +Refer to [Rollup’s documentation on plugins](https://rollupjs.org/guide/en/#using-plugins) for more information. +## API Reference + +### Config Files + +Snowpack's behavior can be configured by CLI flags, a custom Snowpack config file, or both. [See the api reference below for the full list of supported options](#api-reference). + +Snowpack supports configuration files in multiple formats, sorted by priority order: + +1. `--config [path]`: If provided. +1. `package.json`: A namespaced config object (`"snowpack": {...}`). +1. `snowpack.config.cjs`: (`module.exports = {...}`) for projects using `"type": "module"`. +1. `snowpack.config.js`: (`module.exports = {...}`). +1. `snowpack.config.ts`\*: (`export default {...}`). +1. `snowpack.config.json`: (`{...}`). + +_(\* Note: `snowpack.config.ts` support is still experimental! It currently involves bundling your config file and all imported files into a temporary JS config file that can be loaded by Node.js. Your mileage may vary.)_ + +### CLI Flags + +```bash +# Show helpful info +$ snowpack --help + +# Show additional debugging logs +$ snowpack --verbose + +# {installOptions: {dest: 'CUSTOM_DIR/'}} +$ snowpack install --dest CUSTOM_DIR/ + +# {devOptions: {bundle: true}} +$ snowpack dev --bundle + +# {devOptions: {bundle: false}} +$ snowpack dev --no-bundle + +# {buildOptions: {clean: true}} +$ snowpack build --clean +``` + +**CLI flags will be merged with (and take priority over) your config file values.** Every config value outlined below can also be passed as a CLI flag. Additionally, Snowpack also supports the following flags: + +- **`--config [path]`** Set the path to your project config file. +- **`--help`** Show this help. +- **`--version`** Show the current version. +- **`--reload`** Clear the local cache. Useful for troubleshooting installer issues. + +### Configuration + +Example: + +```js +{ + "install": [ + "htm", + "preact", + "preact/hooks", // A package within a package + "unistore/full/preact.es.js", // An ESM file within a package (supports globs) + "bulma/css/bulma.css" // A non-JS static asset (supports globs) + ], + "plugins": [ /* ... */ ], + "installOptions": { /* ... */ }, + "devOptions": { /* ... */ }, + "buildOptions": { /* ... */ }, + "proxy": { /* ... */ }, + "mount": { /* ... */ }, + "alias": { /* ... */ } +} +``` + +#### `config` + +`object` (options) + +See the configuration section for information on file formats and command line usage. + +Example: + +```js +{ + mount: { + public: '/', + src: '/_dist_', + }, + plugins: ['@snowpack/plugin-babel', '@snowpack/plugin-dotenv'], + devOptions: {}, + installOptions: { + installTypes: isTS, + }, +} +``` + +Options: + +- **`extends`** | `string` + - Inherit from a separate "base" config. Can be a relative file path, an npm package, or a file within an npm package. Your configuration will be merged on top of the extended base config. +- **`exclude`** | `string[]` + - Exclude any files from scanning, building, etc. Defaults to exclude common test file locations: `['**/node_modules/**/*', '**/__tests__/*', '**/*.@(spec|test).@(js|mjs)']` + - Useful for excluding tests and other unnecessary files from the final build. Supports glob pattern matching. +- **`install`** | `string[]` + - Known dependencies to install with Snowpack. Useful for installing packages manually and any dependencies that couldn't be detected by our automatic import scanner (ex: package CSS files). +- **`mount.*`** + - Mount local directories to custom URLs in your built application. +- **`alias.*`** + - Configure import aliases for directories and packages. See the section below for all options. +- **`proxy.*`** + - Configure the dev server to proxy requests. See the section below for all options. +- **`plugins`** + - Extend Snowpack with third-party tools and plugins. See the section below for more info. +- **`installOptions.*`** + - Configure how npm packages are installed. See the section below for all options. +- **`devOptions.*`** + - Configure your dev server. See the section below for all options. +- **`buildOptions.*`** + - Configure your build. See the section below for all options. +- **`testOptions.*`** + - Configure your tests. See the section below for all options. + +#### `config.installOptions` + +`object` (options) + +Settings that determine how Snowpack handles installing modules. + +Example: + +```js +installOptions: { + installTypes: isTS, +} +``` + +Options: + +- **`installOptions.dest`** | `string` + - _Default:`"web_modules"`_ + - Configure the install directory. +- **`installOptions.sourceMap`** | `boolean` + - Emit source maps for installed packages. +- **`installOptions.env`** | `{[ENV_NAME: string]: (string | true)}` + - Sets a `process.env.` environment variable inside the installed dependencies. If set to true (ex: `{NODE_ENV: true}` or `--env NODE_ENV`) this will inherit from your current shell environment variable. Otherwise, set to a string (ex: `{NODE_ENV: 'production'}` or `--env NODE_ENV=production`) to set the exact value manually. +- **`installOptions.treeshake`** | `boolean` + - _Default:`false`, or `true` when run with `snowpack build`_ + - Treeshake your dependencies to optimize your installed files. Snowpack will scan your application to detect which exact imports are used from each package, and then will remove any unused imports from the final install via dead-code elimination (aka tree shaking). +- **`installOptions.installTypes`** | `boolean` + - Install TypeScript type declarations with your packages. Requires changes to your [tsconfig.json](#typescript) to pick up these types. +- **`installOptions.namedExports`** | `string[]` + - _NOTE(v2.13.0): Snowpack now automatically supports named exports for most Common.js packages. This configuration remains for any package that Snowpack can't handle automatically. In most cases, this should no longer be needed._ + - Import CJS packages using named exports (Example: `import {useTable} from 'react-table'`). + - Example: `"namedExports": ["react-table"]` +- **`installOptions.externalPackage`** | `string[]` + - _NOTE: This is an advanced feature, and may not do what you want! Bare imports are not supported in any major browser, so an ignored import will usually fail when sent directly to the browser._ + - Mark some imports as external. Snowpack won't install them and will ignore them when resolving imports. + - Example: `"externalPackage": ["fs"]` +- **`installOptions.packageLookupFields`** | `string[]` + - Set custom lookup fields for dependency `package.json` file entrypoints, in addition to the defaults like "module", "main", etc. Useful for package ecosystems like Svelte where dependencies aren't shipped as traditional JavaScript. + - Example: `"packageLookupFields": ["svelte"]` +- **`installOptions.rollup`** | `Object` + - Snowpack uses Rollup internally to install your packages. This `rollup` config option gives you deeper control over the internal rollup configuration that we use. + - **`installOptions.rollup.plugins`** - Specify [Custom Rollup plugins](#installing-non-js-packages) if you are dealing with non-standard files. + - **`installOptions.rollup.dedupe`** - If needed, deduplicate multiple versions/copies of a packages to a single one. This helps prevent issues with some packages when multiple versions are installed from your node_modules tree. See [rollup-plugin-node-resolve](https://github.com/rollup/plugins/tree/master/packages/node-resolve#usage) for more documentation. + - **`installOptions.rollup.context`** - Specify top-level `this` value. Useful to silence install errors caused by legacy common.js packages that reference a top-level this variable, which does not exist in a pure ESM environment. Note that the `'THIS_IS_UNDEFINED'` warning (`The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten`) is silenced by default, unless `--verbose` is used. + +#### `config.devOptions` + +`object` (options) + +Settings that determine how the Snowpack dev environment behaves. + +Example: + +```js +devOptions: { + port: 4000, + open: "none", +} +``` + +Options: + +- **`devOptions.port`** | `number` | Default: `8080` + - The port number to run the dev server on. +- **`devOptions.bundle`** | `boolean` + - Create an optimized, bundled build for production. + - You must have [Parcel](https://parceljs.org/) as a dev dependency in your project. + - If undefined, this option will be enabled if the `parcel` package is found. +- **`devOptions.fallback`** | `string` | Default: `"index.html"` + - When using the Single-Page Application (SPA) pattern, this is the HTML "shell" file that gets served for every (non-resource) user route. Make sure that you configure your production servers to serve this as well. +- **`devOptions.open`** | `string` | Default: `"default"` + - Opens the dev server in a new browser tab. If Chrome is available on macOS, an attempt will be made to reuse an existing browser tab. Any installed browser may also be specified. E.g., "chrome", "firefox", "brave". Set "none" to disable. +- **`devOptions.output`** | `"stream" | "dashboard"` | Default: `"dashboard"` + - Set the output mode of the `dev` console. + - `"dashboard"` delivers an organized layout of console output and the logs of any connected tools. This is recommended for most users and results in the best logging experience. + - `"stream"` is useful when Snowpack is run in parallel with other commands, where clearing the shell would clear important output of other commands running in the same shell. +- **`devOptions.hostname`** | `string` | Default: `localhost` + - The hostname where the browser tab will be open. +- **`devOptions.hmr`** | `boolean` | Default: `true` + - Toggles whether or not Snowpack dev server should have HMR enabled. +- **`devOptions.hmrErrorOverlay`** | `boolean` | Default: `true` + - When HMR is enabled, toggles whether or not a browser overlay should display javascript errors. +- **`devOptions.secure`** | `boolean` + - Toggles whether or not Snowpack dev server should use HTTPS with HTTP2 enabled. +- **`devOptions.out`** | `string` | Default: `"build"` + - _NOTE:_ Deprecated, see `buildOptions.out`. + - The local directory that we output your final build to. + +#### `config.buildOptions` + +`object` (options) + +Determines how Snowpack processes the final build. + +Example: + +```js +buildOptions: { + sourceMaps: true, + baseUrl: '/home', + metaDir: 'static/snowpack', + webModulesUrl: 'web' +} +``` + +Options: + +- **`buildOptions.out`** | `string` | Default: `"build"` + - The local directory that we output your final build to. +- **`buildOptions.baseUrl`** | `string` | Default: `/` + - In your HTML, replace all instances of `%PUBLIC_URL%` with this (inspired by the same [Create React App](https://create-react-app.dev/docs/using-the-public-folder/) concept). This is useful if your app will be deployed to a subdirectory. _Note: if you have `homepage` in your `package.json`, Snowpack will actually pick up on that, too._ +- **`buildOptions.clean`** | `boolean` | Default: `false` + - Set to `true` if Snowpack should erase the build folder before each build. +- **`buildOptions.metaDir`** | `string` | Default: `__snowpack__` + - By default, Snowpack outputs Snowpack-related metadata such as [HMR](#hot-module-replacement) and [ENV](#environment-variables) info to a folder called `__snowpack__`. You can rename that folder with this option (e.g.: `metaDir: 'static/snowpack'`). +- **`buildOptions.sourceMaps`** | `boolean` | Default: `false` + - **_Experimental:_** Set to `true` to enable source maps +- **`buildOptions.webModulesUrl`** | `string` | Default: `web_modules` + - Rename your web modules directory. + +#### `config.testOptions` + +`object` (options) + +Settings that determine how the Snowpack test environment behaves. + +Example: + +```js +testOptions: { + files: ['my-test-dir/*.test.js']; +} +``` + +Options: + +- **`testOptions.files`** | `string[]` | Default: `["__tests__/**/*", "**/*.@(spec|test).*"]` + - The location of all test files. + - All matching test files are scanned for installable dependencies during development, but excluded from both scanning and building in your final build. + +#### `config.proxy` + +`object` (path: options) + +If desired, `"proxy"` is where you configure the proxy behavior of your dev server. Define different paths that should be proxied, and where they should be proxied to. + +The short form of a full URL string is enough for general use. For advanced configuration, you can use the object format to set all options supported by [http-proxy](https://github.com/http-party/node-http-proxy). + +This configuration has no effect on the final build. + +Example: + +```js +// snowpack.config.json +{ + "proxy": { + // Short form: + "/api/01": "https://pokeapi.co/api/v2/", + // Long form: + "/api/02": { + on: { proxyReq: (p, req, res) => /* Custom event handlers (JS only) */ }, + /* Custom http-proxy options */ + } + } +} +``` + +Options: + +- **`"path".on`** | `object` (string: function) + - `on` is a special Snowpack property for setting event handler functions on proxy server events. See the section on ["Listening for Proxy Events"](https://github.com/http-party/node-http-proxy#listening-for-proxy-events) for a list of all supported events. You must be using a `snowpack.config.js` JavaScript configuration file to set this. +- All options supported by [http-proxy](https://github.com/http-party/node-http-proxy). + +#### `config.mount` + +``` +mount: { + [path: string]: string | {url: string, static: boolean, resolve: boolean} +} +``` + +The `mount` configuration lets you customize which directories should be included in your Snowpack build, and what URL they are mounted to. Given the following example configuration, you could expect the following results: + +```js +// Example: Basic "mount" usage +// snowpack.config.json +{ + "mount": { + "src": "/_dist_", + "public": "/" + } +} +``` + +``` +GET /src/a.js -> 404 NOT FOUND ("./src" is mounted to "/_dist_/*", not "/src/*") +GET /_dist_/a.js -> ./src/a.js +GET /_dist_/b/b.js -> ./src/b/b.js +GET /public/robots.txt -> 404 NOT FOUND ("./public" dir is mounted to "/*", not "/public/*") +GET /robots.txt -> ./public/robots.txt +``` + +By default, Snowpack builds every mounted file by passing it through Snowpack's build pipeline. + +**\*New in Snowpack `v2.15.0`:** You can customize the build behavior for a mounted directory using the expanded object notation: + +- `url` _required_: The URL to mount to, matching the simple form above. +- `static` _optional, default: false_: If true, don't build files in this directory and serve them directly to the browser. +- `resolve` _optional, default: true_: If false, don't resolve JS & CSS imports in your JS, CSS, and HTML files and send every import to the browser, as written. We recommend that you don't disable this unless absolutely necessary, since it prevents Snowpack from handling your imports to things like packages, JSON files, CSS modules, and more. + +```js +// Example: Advanced "mount" usage +// snowpack.config.json +{ + "mount": { + // Same behavior as the "src" example above: + "src": {url: "/_dist_"}, + // Mount "public" to the root URL path ("/*") and serve files with zero transformations: + "public": {url: "/", static: true, resolve: false} + } +} +``` + +#### `config.alias` + +`object` (package: package or path) + +> Note: In an older version of Snowpack, all mounted directories were also available as aliases by default. As of Snowpack 2.7, this is no longer the case and no aliases are defined by default. + +The `alias` config option lets you define an import alias in your application. When aliasing a package, this allows you to import that package by another name in your application. This applies to imports inside of your dependencies as well, essentially replacing all references to the aliased package. + +Aliasing a local directory (any path that starts with "./") creates a shortcut to import that file or directory. While we don't necessarily recommend this pattern, some projects do enjoy using these instead of relative paths: + +```diff +-import '../../../../../Button.js'; ++import '@app/Button.js'; +``` + +Example: + +```js +// snowpack.config.json +{ + alias: { + // Type 1: Package Import Alias + "lodash": "lodash-es", + "react": "preact/compat", + // Type 2: Local Directory Import Alias (relative to cwd) + "components": "./src/components" + "@app": "./src" + } +} +``` +## Assets + +- [Snowpack Logo (PNG, White)](/assets/snowpack-logo-white.png) +- [Snowpack Logo (PNG, Dark)](/assets/snowpack-logo-dark.png) +- [Snowpack Logo (PNG, Black)](/assets/snowpack-logo-black.png) +- [Snowpack Wordmark (PNG, White)](/assets/snowpack-wordmark-white.png) +- [Snowpack Wordmark (PNG, Black)](/assets/snowpack-wordmark-black.png) From 9a6f49563b5dba335a493485cc982aba3f519eef Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Wed, 11 Nov 2020 17:07:45 -0600 Subject: [PATCH 16/33] 1467 --- www/_template/support.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/www/_template/support.md b/www/_template/support.md index 0218706e9c..0671317e77 100644 --- a/www/_template/support.md +++ b/www/_template/support.md @@ -33,6 +33,12 @@ This is usually seen when importing a named export from a package written in the } ``` +#### TypeScript imports + +This could occur if you're attempting to import a named interface or other type from another compiled TypeScript file. + +**To solve this issue:** Make sure to use `import type { MyInterfaceName }` instead. + ## Installing Non-JS Packages When installing packages from npm, you may encounter some file formats that can only run with additional parsing/processing. First check to see if there is a [Snowpack plugin for the type of file](#plugins). From 946abc7665ccc538940f4b4598d864bf20d6219b Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Wed, 11 Nov 2020 17:08:30 -0600 Subject: [PATCH 17/33] #1457 --- www/_template/configuration.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/www/_template/configuration.md b/www/_template/configuration.md index 154cf73b1e..507256ec73 100644 --- a/www/_template/configuration.md +++ b/www/_template/configuration.md @@ -2,6 +2,7 @@ layout: layouts/main.njk title: Configuration --- + ## API Reference ### Config Files @@ -158,6 +159,9 @@ Options: - _NOTE: This is an advanced feature, and may not do what you want! Bare imports are not supported in any major browser, so an ignored import will usually fail when sent directly to the browser._ - Mark some imports as external. Snowpack won't install them and will ignore them when resolving imports. - Example: `"externalPackage": ["fs"]` +- **`installOptions.packageLookupFields`** | `string[]` + - Set custom lookup fields for dependency `package.json` file entrypoints, in addition to the defaults like "module", "main", etc. Useful for package ecosystems like Svelte where dependencies aren't shipped as traditional JavaScript. + - Example: `"packageLookupFields": ["svelte"]` - **`installOptions.rollup`** | `Object` - Snowpack uses Rollup internally to install your packages. This `rollup` config option gives you deeper control over the internal rollup configuration that we use. - **`installOptions.rollup.plugins`** - Specify [Custom Rollup plugins](#installing-non-js-packages) if you are dealing with non-standard files. From e1d6bd29e735b5d4406e5d4b28da1610ffa1084e Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Wed, 11 Nov 2020 17:09:18 -0600 Subject: [PATCH 18/33] #1451 --- www/_template/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/_template/index.md b/www/_template/index.md index 87fb5ebcce..8916444402 100644 --- a/www/_template/index.md +++ b/www/_template/index.md @@ -147,7 +147,7 @@ The only requirement is that _during development_ you use a [modern browser](htt ## Community -Join us on Discord! +Join us on Discord! [Join the Pika Discord](https://discord.gg/rS8SnRk) for discussion, questions about Snowpack or related Pika projects, or to show off what you’re working on! From c631125d05691ff7fafb223aa5a12670e32a28a0 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Wed, 11 Nov 2020 17:10:34 -0600 Subject: [PATCH 19/33] #1445 --- www/_template/index.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/www/_template/index.md b/www/_template/index.md index 8916444402..afa86e49a4 100644 --- a/www/_template/index.md +++ b/www/_template/index.md @@ -65,6 +65,14 @@ usersList: name: Blessing Skin img: https://blessing.netlify.app/logo.png url: https://github.com/bs-community + - trpg-engine: + name: TRPG Engine + img: https://trpgdoc.moonrailgun.com/img/trpg_logo.png + url: https://trpgdoc.moonrailgun.com/ + - shein: + name: SHEIN + img: https://sheinsz.ltwebstatic.com/she_dist/images/touch-icon-ipad-144-47ceee2d97.png + url: https://www.shein.com/ --- ## What is Snowpack? From 1f9bf04b87aa2628123551bc7b2558b72cdc2190 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Wed, 11 Nov 2020 17:14:26 -0600 Subject: [PATCH 20/33] #1432 --- www/_template/configuration.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/www/_template/configuration.md b/www/_template/configuration.md index 507256ec73..c7c8aaf043 100644 --- a/www/_template/configuration.md +++ b/www/_template/configuration.md @@ -148,9 +148,6 @@ Options: - Treeshake your dependencies to optimize your installed files. Snowpack will scan your application to detect which exact imports are used from each package, and then will remove any unused imports from the final install via dead-code elimination (aka tree shaking). - **`installOptions.installTypes`** | `boolean` - Install TypeScript type declarations with your packages. Requires changes to your [tsconfig.json](#typescript) to pick up these types. -- **`installOptions.alias`** | `{[mapFromPackageName: string]: string}` - - Alias an installed package name. This applies to imports within your application and within your installed dependency graph. - - Example: `"alias": {"react": "preact/compat", "react-dom": "preact/compat"}` - **`installOptions.namedExports`** | `string[]` - _NOTE(v2.13.0): Snowpack now automatically supports named exports for most Common.js packages. This configuration remains for any package that Snowpack can't handle automatically. In most cases, this should no longer be needed._ - Import CJS packages using named exports (Example: `import {useTable} from 'react-table'`). From ebae11a90df9e181599a7b3f7ce4b8a026f23d22 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Wed, 11 Nov 2020 17:17:23 -0600 Subject: [PATCH 21/33] 1457 --- www/_template/features.md | 16 ++++++++++++++++ www/_template/guides/ssr.md | 23 ----------------------- 2 files changed, 16 insertions(+), 23 deletions(-) delete mode 100644 www/_template/guides/ssr.md diff --git a/www/_template/features.md b/www/_template/features.md index 5889ca0e31..5cfbda05b9 100644 --- a/www/_template/features.md +++ b/www/_template/features.md @@ -306,6 +306,22 @@ These frameworks have known experiments / examples of using SSR + Snowpack: - Svelte/Sapper (Experiment): https://github.com/Rich-Harris/snowpack-svelte-ssr - [Join our Discord](https://discord.gg/rS8SnRk) if you're interested in getting involved! +To connect your own server to `snowpack dev` for SSR, there are a few things that you'll need to set up. Make sure that you include any Snowpack-built resources via script tags in your server's HTML response: + +```html + + +``` + +And make sure that your HTML response also includes code to configure HMR to talk to Snowpack's dev server: + +```html + + +``` + ## Optimized Builds By default, Snowpack doesn't optimize your code for production. But, there are several plugins available to optimize your final build, including minification (reducing file sizes) and even bundling (combining files together to reduce the number of requests needed). diff --git a/www/_template/guides/ssr.md b/www/_template/guides/ssr.md deleted file mode 100644 index b4b594ecf9..0000000000 --- a/www/_template/guides/ssr.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -layout: layouts/main.njk -title: SSR -tags: guides ---- - -### Server Side Rendering (SSR) - -To connect your own server to `snowpack dev` for SSR, there are a few things that you'll need to set up. Make sure that you include any Snowpack-built resources via script tags in your server's HTML response: - -```html - - -``` - -And make sure that your HTML response also includes code to configure HMR to talk to Snowpack's dev server: - -```html - - -``` From 1c699deb7f87261205806e616be9aaaebd9e8a99 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Wed, 11 Nov 2020 20:04:47 -0600 Subject: [PATCH 22/33] #1515 --- www/_includes/layouts/menu.njk | 21 +-------------------- www/_template/guides.md | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 www/_template/guides.md diff --git a/www/_includes/layouts/menu.njk b/www/_includes/layouts/menu.njk index 53fd8d604b..d8e6d365e2 100644 --- a/www/_includes/layouts/menu.njk +++ b/www/_includes/layouts/menu.njk @@ -6,11 +6,6 @@
  • Getting Started -
      -
    1. - Create Snowpack App -
    2. -
  • @@ -18,21 +13,7 @@
  • - Guides -
      - {%- for guide in collections.guides -%} -
    1. - - {%if guide.data.sidebarTitle %} - {{ guide.data.sidebarTitle }} - {% else %} - {{ guide.data.title }} - {% endif %} - -
    2. - {%- endfor -%} - -
    + Guides
  • diff --git a/www/_template/guides.md b/www/_template/guides.md new file mode 100644 index 0000000000..7e54f3fe2e --- /dev/null +++ b/www/_template/guides.md @@ -0,0 +1,22 @@ +--- +layout: layouts/main.njk +--- + +## Guides + +Snowpack Guides are deep dives into popular Snowpack topics. + +- [React](/guides/react) +- [Create a Plugin](/guides/plugins) + +Stubs (guides under construction) + +- [Vue](/guides/vue) +- [Preact](/guides/preact) +- [Svelte](/guides/svelte) +- [Testing](/guides/testing) +- [Workbox](/guides/workbox) + +### Community guides + +PRs that add a link to this list are welcome! From 8d842452eecf8dfb77ad47c831ed08cd793e5214 Mon Sep 17 00:00:00 2001 From: Melissa McEwen Date: Wed, 11 Nov 2020 20:10:39 -0600 Subject: [PATCH 23/33] fixing menu --- www/_includes/layouts/menu.njk | 3 --- 1 file changed, 3 deletions(-) diff --git a/www/_includes/layouts/menu.njk b/www/_includes/layouts/menu.njk index d8e6d365e2..98ef6937ef 100644 --- a/www/_includes/layouts/menu.njk +++ b/www/_includes/layouts/menu.njk @@ -1,9 +1,6 @@ diff --git a/www/_includes/layouts/menu.njk b/www/_includes/layouts/menu.njk index 98ef6937ef..baeb36245b 100644 --- a/www/_includes/layouts/menu.njk +++ b/www/_includes/layouts/menu.njk @@ -1,6 +1,10 @@ diff --git a/www/_template/about.md b/www/_template/about.md new file mode 100644 index 0000000000..f9217309fd --- /dev/null +++ b/www/_template/about.md @@ -0,0 +1,36 @@ +--- +layout: layouts/main.njk +title: About Snowpack +--- + +## What is Snowpack? + +Snowpack is a modern frontend build tool for faster web development. It replaces heavier, more complex bundlers like webpack or Parcel in your development workflow. + +Snowpack leverages JavaScript's native module system (known as ESM) to create a first-of-its-kind build system that never builds the same file twice. Snowpack pushes changes instantly to the browser, saving you hours of development time traditionally spent waiting around for your bundler. + +## Key Features + +- Develop faster, with a dev server that starts up in **50ms or less.** +- See changes reflected [instantly in the browser.](/#hot-module-replacement) +- Integrate your favorite bundler for a [production-optimized build.](/#bundle-for-production) +- Enjoy out-of-the-box support for [TypeScript, JSX, CSS Modules and more.](/#features) +- Connect your favorite tools with [third-party plugins.](/#plugins) + +## How Snowpack Works + +**Snowpack is a modern, lightweight build tool for faster web development.** Traditional JavaScript build tools like webpack and Parcel need to rebuild & rebundle entire chunks of your application every time you save a single file. This rebundling step introduces lag between hitting save on your changes and seeing them reflected in the browser. + +Snowpack serves your application **unbundled during development.** Every file only needs to be built once and then is cached forever. When a file changes, Snowpack rebuilds that single file. There's no time wasted re-bundling every change, just instant updates in the browser (made even faster via [Hot-Module Replacement (HMR)](#hot-module-replacement)). You can read more about this approach in our [Snowpack 2.0 Release Post.](/posts/2020-05-26-snowpack-2-0-release/) + +Snowpack's **unbundled development** still supports the same **bundled builds** that you're used to for production. When you go to build your application for production, you can plug in your favorite bundler via an official Snowpack plugin for Webpack or Rollup (coming soon). With Snowpack already handling your build, there's no complex bundler config required. + +**Snowpack gets you the best of both worlds:** fast, unbundled development with optimized performance in your bundled production builds. + +## Assets + +- [Snowpack Logo (PNG, White)](/assets/snowpack-logo-white.png) +- [Snowpack Logo (PNG, Dark)](/assets/snowpack-logo-dark.png) +- [Snowpack Logo (PNG, Black)](/assets/snowpack-logo-black.png) +- [Snowpack Wordmark (PNG, White)](/assets/snowpack-wordmark-white.png) +- [Snowpack Wordmark (PNG, Black)](/assets/snowpack-wordmark-black.png) diff --git a/www/_template/community.md b/www/_template/community.md new file mode 100644 index 0000000000..68155d5d11 --- /dev/null +++ b/www/_template/community.md @@ -0,0 +1,98 @@ +--- +layout: layouts/main.njk +title: Snowpack Community + +# Using Snowpack? Want to be featured on snowpack.dev? +# Add your project, organization, or company to the end of this list! +usersList: + - ia: + name: The Internet Archive + img: https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Internet_Archive_logo_and_wordmark.svg/1200px-Internet_Archive_logo_and_wordmark.svg.png + url: https://github.com/internetarchive/dweb-archive + - 1688: + name: Alibaba 1688 + img: https://s.cafebazaar.ir/1/icons/com.alibaba.intl.android.apps.poseidon_512x512.png + url: https://www.1688.com + - intel: + name: Intel + img: https://upload.wikimedia.org/wikipedia/commons/4/4e/Intel_logo_%282006%29.svg + url: https://twitter.com/kennethrohde/status/1227273971831332865 + - circlehd.com: + name: CircleHD + img: https://www.circlehd.com/img/logo-sm.svg + url: https://www.circlehd.com/ + - Svelvet: + name: Svelvet + img: https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/240/apple/237/spool-of-thread_1f9f5.png + url: https://github.com/jakedeichert/svelvet + - pika: + name: Pika.dev + img: https://www.pika.dev/static/img/logo5.svg + url: https://www.pika.dev + - Toast: + name: Toast + img: https://www.toast.dev/toast-icon-300.png + url: https://www.toast.dev + - maskable: + name: Maskable.app + img: https://maskable.app/favicon/favicon_196.png + url: https://maskable.app/ + - web-skills: + name: Web Skills + img: https://andreasbm.github.io/web-skills/www/icon.svg + url: https://andreasbm.github.io/web-skills + - swissdev-javascript: + name: SwissDev JavaScript Jobs + img: https://static.swissdevjobs.ch/pictures/swissdev-javascript-jobs.svg + url: https://swissdevjobs.ch/jobs/JavaScript/All + - tradie-training: + name: Tradie Training + img: https://tt.edu.au/images/logo.png + url: https://tt.edu.au + - wemake-services: + name: wemake.services + img: https://avatars0.githubusercontent.com/u/19639014?s=200&v=4 + url: https://github.com/wemake-services + - airhacks.com: + name: airhacks.com + img: https://airhacks.com/logo.svg + url: https://airhacks.com + - tongdun: + name: tongdun + img: https://www.tongdun.cn/static/favicon.ico + url: https://www.tongdun.cn/ + - blessing-skin: + name: Blessing Skin + img: https://blessing.netlify.app/logo.png + url: https://github.com/bs-community + - trpg-engine: + name: TRPG Engine + img: https://trpgdoc.moonrailgun.com/img/trpg_logo.png + url: https://trpgdoc.moonrailgun.com/ + - shein: + name: SHEIN + img: https://sheinsz.ltwebstatic.com/she_dist/images/touch-icon-ipad-144-47ceee2d97.png + url: https://www.shein.com/ +--- + +## Community + +Join us on Discord! + +[Join the Pika Discord](https://discord.gg/rS8SnRk) for discussion, questions about Snowpack or related Pika projects, or to show off what you’re working on! + +## Who's Using Snowpack? + + diff --git a/www/_template/index.md b/www/_template/index.md index 2c126a886b..04fbad771d 100644 --- a/www/_template/index.md +++ b/www/_template/index.md @@ -1,120 +1,8 @@ --- layout: layouts/main.njk home: true - -# Using Snowpack? Want to be featured on snowpack.dev? -# Add your project, organization, or company to the end of this list! -usersList: - - ia: - name: The Internet Archive - img: https://upload.wikimedia.org/wikipedia/commons/thumb/8/84/Internet_Archive_logo_and_wordmark.svg/1200px-Internet_Archive_logo_and_wordmark.svg.png - url: https://github.com/internetarchive/dweb-archive - - 1688: - name: Alibaba 1688 - img: https://s.cafebazaar.ir/1/icons/com.alibaba.intl.android.apps.poseidon_512x512.png - url: https://www.1688.com - - intel: - name: Intel - img: https://upload.wikimedia.org/wikipedia/commons/4/4e/Intel_logo_%282006%29.svg - url: https://twitter.com/kennethrohde/status/1227273971831332865 - - circlehd.com: - name: CircleHD - img: https://www.circlehd.com/img/logo-sm.svg - url: https://www.circlehd.com/ - - Svelvet: - name: Svelvet - img: https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/240/apple/237/spool-of-thread_1f9f5.png - url: https://github.com/jakedeichert/svelvet - - pika: - name: Pika.dev - img: https://www.pika.dev/static/img/logo5.svg - url: https://www.pika.dev - - Toast: - name: Toast - img: https://www.toast.dev/toast-icon-300.png - url: https://www.toast.dev - - maskable: - name: Maskable.app - img: https://maskable.app/favicon/favicon_196.png - url: https://maskable.app/ - - web-skills: - name: Web Skills - img: https://andreasbm.github.io/web-skills/www/icon.svg - url: https://andreasbm.github.io/web-skills - - swissdev-javascript: - name: SwissDev JavaScript Jobs - img: https://static.swissdevjobs.ch/pictures/swissdev-javascript-jobs.svg - url: https://swissdevjobs.ch/jobs/JavaScript/All - - tradie-training: - name: Tradie Training - img: https://tt.edu.au/images/logo.png - url: https://tt.edu.au - - wemake-services: - name: wemake.services - img: https://avatars0.githubusercontent.com/u/19639014?s=200&v=4 - url: https://github.com/wemake-services - - airhacks.com: - name: airhacks.com - img: https://airhacks.com/logo.svg - url: https://airhacks.com - - tongdun: - name: tongdun - img: https://www.tongdun.cn/static/favicon.ico - url: https://www.tongdun.cn/ - - blessing-skin: - name: Blessing Skin - img: https://blessing.netlify.app/logo.png - url: https://github.com/bs-community - - trpg-engine: - name: TRPG Engine - img: https://trpgdoc.moonrailgun.com/img/trpg_logo.png - url: https://trpgdoc.moonrailgun.com/ - - shein: - name: SHEIN - img: https://sheinsz.ltwebstatic.com/she_dist/images/touch-icon-ipad-144-47ceee2d97.png - url: https://www.shein.com/ --- -## What is Snowpack? - -Snowpack is a modern frontend build tool for faster web development. It replaces heavier, more complex bundlers like webpack or Parcel in your development workflow. - -Snowpack leverages JavaScript's native module system (known as ESM) to create a first-of-its-kind build system that never builds the same file twice. Snowpack pushes changes instantly to the browser, saving you hours of development time traditionally spent waiting around for your bundler. - -## Key Features - -- Develop faster, with a dev server that starts up in **50ms or less.** -- See changes reflected [instantly in the browser.](/#hot-module-replacement) -- Integrate your favorite bundler for a [production-optimized build.](/#bundle-for-production) -- Enjoy out-of-the-box support for [TypeScript, JSX, CSS Modules and more.](/#features) -- Connect your favorite tools with [third-party plugins.](/#plugins) - -## Who's Using Snowpack? - - - -## How Snowpack Works - -**Snowpack is a modern, lightweight build tool for faster web development.** Traditional JavaScript build tools like webpack and Parcel need to rebuild & rebundle entire chunks of your application every time you save a single file. This rebundling step introduces lag between hitting save on your changes and seeing them reflected in the browser. - -Snowpack serves your application **unbundled during development.** Every file only needs to be built once and then is cached forever. When a file changes, Snowpack rebuilds that single file. There's no time wasted re-bundling every change, just instant updates in the browser (made even faster via [Hot-Module Replacement (HMR)](#hot-module-replacement)). You can read more about this approach in our [Snowpack 2.0 Release Post.](/posts/2020-05-26-snowpack-2-0-release/) - -Snowpack's **unbundled development** still supports the same **bundled builds** that you're used to for production. When you go to build your application for production, you can plug in your favorite bundler via an official Snowpack plugin for Webpack or Rollup (coming soon). With Snowpack already handling your build, there's no complex bundler config required. - -**Snowpack gets you the best of both worlds:** fast, unbundled development with optimized performance in your bundled production builds. - ## Library Support
    @@ -152,17 +40,3 @@ Snowpack's **unbundled development** still supports the same **bundled builds** **Snowpack builds your site for both modern and legacy browsers. Even IE11 is supported.** You can control and customize this behavior with the ["browserlist" package.json property](https://css-tricks.com/browserlist-good-idea/). The only requirement is that _during development_ you use a [modern browser](http://caniuse.com/#feat=es6-module). Any recent release of Firefox, Chrome, or Edge will do. This is required to support the modern, bundle-free ESM imports that load your application in the browser. - -## Community - -Join us on Discord! - -[Join the Pika Discord](https://discord.gg/rS8SnRk) for discussion, questions about Snowpack or related Pika projects, or to show off what you’re working on! - -## Assets - -- [Snowpack Logo (PNG, White)](/assets/snowpack-logo-white.png) -- [Snowpack Logo (PNG, Dark)](/assets/snowpack-logo-dark.png) -- [Snowpack Logo (PNG, Black)](/assets/snowpack-logo-black.png) -- [Snowpack Wordmark (PNG, White)](/assets/snowpack-wordmark-white.png) -- [Snowpack Wordmark (PNG, Black)](/assets/snowpack-wordmark-black.png) diff --git a/www/_template/support.md b/www/_template/support.md index 4e22bf9a08..84d412518c 100644 --- a/www/_template/support.md +++ b/www/_template/support.md @@ -3,6 +3,8 @@ layout: layouts/main.njk title: Troubleshooting --- +This page covers troubleshooting several common issues. For further help we have an active [GitHub Discussion forum](https://github.com/snowpackjs/snowpack/discussions)and [Discord](https://discord.gg/snowpack). Developers and community contributors frequently answer questions on both. + ## No such file or directory ```