From a26d0e610457c7942fd79e7abdd78021f9401796 Mon Sep 17 00:00:00 2001 From: Regis Philibert Date: Mon, 20 Jul 2020 10:09:06 -0400 Subject: [PATCH] Add documentation to js.Build (#1175) Fixes #1171 --- content/en/hugo-pipes/babel.md | 6 ++-- content/en/hugo-pipes/js.md | 63 ++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 content/en/hugo-pipes/js.md diff --git a/content/en/hugo-pipes/babel.md b/content/en/hugo-pipes/babel.md index e34faec43..5fb5e11e1 100755 --- a/content/en/hugo-pipes/babel.md +++ b/content/en/hugo-pipes/babel.md @@ -9,9 +9,9 @@ keywords: [] menu: docs: parent: "pipes" - weight: 49 -weight: 49 -sections_weight: 49 + weight: 48 +weight: 48 +sections_weight: 48 draft: false --- diff --git a/content/en/hugo-pipes/js.md b/content/en/hugo-pipes/js.md new file mode 100644 index 000000000..b66778eb4 --- /dev/null +++ b/content/en/hugo-pipes/js.md @@ -0,0 +1,63 @@ +--- +title: JavaScript Building +description: Hugo Pipes can process JavaScript files with [ESBuild](https://github.com/evanw/esbuild). +date: 2020-07-20 +publishdate: 2020-07-20 +lastmod: 2020-07-20 +categories: [asset management] +keywords: [] +menu: + docs: + parent: "pipes" + weight: 45 +weight: 45 +sections_weight: 45 +draft: false +--- + +Any JavaScript resource file can be transpiled and "tree shaken" using `js.Build` which takes for argument either a string for the filepath or a dict of options listed below. + +### Options + +targetPath [string] +: If not set, the source path will be used as the base target path. +Note that the target path's extension may change if the target MIME type is different, e.g. when the source is TypeScript. + +minify [bool] +: Let `js.Build` handle the minification. + +target [string] +: The language target. + One of: `es2015`, `es2016`, `es2017`, `es2018`, `es2019`, `es2020` or `esnext`. + Default is `esnext`. + +externals [slice] +: External dependencies. If a dependency should not be included in the bundle (Ex. library loaded from a CDN.), it should be listed here. + +```go-html-template +{{ $externals := slice "react" "react-dom" }} +``` + +defines [map] +: Allow to define a set of string replacement to be performed when building. Should be a map where each key is to be replaced by its value. + +```go-html-template +{{ $defines := dict "process.env.NODE_ENV" `"development"` }} +``` + +### Examples + +```go-html-template +{{ $built := resources.Get "js/index.js" | js.Build "main.js" }} +``` + +Or with options: + +```go-html-template +{{ $externals := slice "react" "react-dom" }} +{{ $defines := dict "process.env.NODE_ENV" `"development"` }} + +{{ $opts := dict "targetPath" "main.js" "externals" $externals "defines" $defines }} +{{ $built := resources.Get "scripts/main.js" | js.Build $opts }} + +```