Use web resources the pythonic way, import JavaScript modules like you do with Python modules. Specify Javascript modules, HTML, CSS as bare URLs and rewrite on the fly.
(A) Install the desired package, in this example gridchen
pip install gridchen
(B) From HTML/JavaScript
<!DOCTYPE html>
<h1>Hello World</h1>
<script type="module">
import * as utils from "gridchen/utils.js";
const tm = utils.createTransactionManager();
</script>
(C) Register your FastAPI app (see also module whatchamacallit.examples.fastapi_server.py)
from fastapi import FastAPI
from whatchamacallit.fastapi import register
app = FastAPI()
register(app)
or Flask app (see also module whatchamacallit.examples.flask_server.py)
import flask
from whatchamacallit.flask import register
# Important: Do not use the evil static_url_path
app = flask.Flask(__name__, static_folder=None)
register(app)
Ultimately, the import * as utils from "gridchen/utils.js"
must be mapped to its physical location, for example
/C/projects/myproject/venv/Lib/site-packages/gridchen/utils.js
.
This is done in two steps.
The import * as utils from "gridchen/utils.js"
is not valid JavaScript. So at HTML/JavaScript load time the
import is remapped to import * as utils from "/@gridchen/utils.js"
When the server now gets the request for /@gridchen/utils.js
, then it resolves to the package gridchen
and serve its resource utils.js
.
vi setup.py
git commit . -m'bumped version'
git tag x.y.z
git push & git push --tags
python setup.py sdist bdist_wheel
## Publishing
````shell script
python -m twine upload dist/*
Unpkg.com, rollup, webpack, babel, pika, assetgraph, Browserify, gulp, JSPM
- http://dplatz.de/blog/2019/es6-bare-imports.html
- https://jakearchibald.com/2017/es-modules-in-browsers/
- https://medium.com/@dmnsgn/in-2020-go-bundler-free-eb29c1f05fc9
- https://wicg.github.io/import-maps/
- https://medium.com/@dmnsgn/es-modules-in-the-browser-almost-now-3638ffafdc68
- https://github.com/fanstatic/fanstatic
- Packages on PyPI starting with js.