A plugin that implementing importmaps for jekyll
Heavily borrowed from the importmap-rails gem (a lot of parts copied), minus the rails parts and simplified to make a lot easier to understand.
Add to Gemfile via bundler
bundle add jekyll-importmap
Add to your _config.yml
plugins:
- jekyll-importmap
Add to your layout
<html>
<head>
{% importmap %}
</head>
...
Create your importmap.rb file in the root directory
pin 'application', to: 'assets/js/application.js', preload: true
During development you must set a url to use as an override instead of using url and baseurl
importmap:
devurl: 'https://127.0.0.1:4000/jekyll-importmap'
When committing to production comment it out!
# importmap:
# devurl: 'https://127.0.0.1:4000/jekyll-importmap'
Uses the exact same syntax as the importmap-rails gem.
This plugin creates a javascript importmap and also an import statement that looks for a module called application.
Make sure that you have added this to your importmap. This is the entry point of your application and you can import everything from here.
pin 'application', to: 'assets/js/application.js', preload: true
And don't forget to specify to and under when using pin_all_from
pin_all_from "assets/js/controllers", to: "assets/js/controllers", under: "controllers"
pin 'application', to: 'assets/js/application.js', preload: true
pin "@hotwired/stimulus", to: "https://ga.jspm.io/npm:@hotwired/[email protected]/dist/stimulus.js", preload: true
pin "@hotwired/stimulus-loading", to: "assets/js/stimulus-loading.js", preload: true
pin_all_from "assets/js/controllers", to: "assets/js/controllers", under: "controllers"
pin "flatpickr", to: "https://ga.jspm.io/npm:[email protected]/dist/esm/index.js"
pin "stimulus-flatpickr", to: "https://ga.jspm.io/npm:[email protected]/dist/index.m.js"
import 'controllers'
import { Application } from "@hotwired/stimulus"
import { eagerLoadControllersFrom } from "@hotwired/stimulus-loading"
import Flatpickr from 'stimulus-flatpickr'
const application = Application.start()
application.register('flatpickr', Flatpickr)
// Configure Stimulus development experience
application.debug = false
window.Stimulus = application
eagerLoadControllersFrom("controllers", application)
import { Controller } from "@hotwired/stimulus"
import Flatpickr from 'stimulus-flatpickr'
// Connects to data-controller="flatpickr"
export default class extends Flatpickr {
connect() {
this.config = {
plugins: [],
enableTime: true,
}
super.connect()
}
}
// content from https://github.com/hotwired/stimulus-rails/blob/ae4b675473b71fdf01530c8a6a3bb277d3388ee2/app/assets/javascripts/stimulus-loading.js
<div data-controller="flatpickr"></div>
You're actively encouraged to create issues and pull requests.