mirror of
https://github.com/gohugoio/hugo.git
synced 2024-12-01 18:33:08 -05:00
2.7 KiB
2.7 KiB
date: 2020-11-03 title: "Hugo 0.78.0: Full Hugo Modules Support in js.Build" description: "Resolve JavaScript imports top-down in the layered filesystem, pass parameters from template to JS, new JS intellisense helper, improved JS build errors." categories: ["Releases"]
This release finally brings full Hugo Modules support to js.Build, curtsy of he new plugin API in the really, really fast ESBuild by @evanw.
Some notes on the improvements in this release:
- Now
js.Build
fully supports the virtual union filesystem in Hugo Modules. Any import inside your JavaScript components will resolve starting from the top component mount inside/assets
with a fallback to the traditional "JS way" (node_modules
etc.) - You can now pass configuration data from the templates to your scripts via a new
params
option. - Hugo now writes a
jsconfig.json
file inside/assets
(you can turn it off) with import mappings to help editors such as VS Code with intellisense/navigation, which is especially useful when there is no common root and the source lives inside some temporary directory. - We have also improved the build errors you get from
js.Build
. In server mode you will get a preview of the failing lines and in the console you will get a link to the location.
Read more about this in the documentation, but a short usage example would look like:
In the template:
{{ $js := resources.Get "js/main.js" | js.Build (dict "params" (dict "api" "https://example.org/api" ) }}
And then in a JavaScript component:
import * as params from '@params';
// Will resolve to one of `hello.{js,ts,tsx,jsx}` inside `assets/my/module`.
import { hello } from 'my/module/hello';
var api = params.api;
hello();