mirror of
https://github.com/vector-im/hydrogen-web.git
synced 2024-12-22 19:14:52 +01:00
Make the SDK friendly to locally link and develop on
Fix https://github.com/vector-im/hydrogen-web/issues/686 Fix https://github.com/vector-im/hydrogen-web/issues/682 Instead of deleting the whole `target/` directory, leave it alone so the symlink driving the `npm link`/`yarn link` stays in tact. Leave Vite builds in their build directories (`/lib-build`/`/asset-build`) so you can `vite build --watch` to build on local changes and still have a consisent place to reference in the `package.json` `exports`. Previously, everything relied on `build.sh` which does a bunch of moving and renaming and made it hard to rebuild on changes. Add back support for CommonJS (adding the `package.json` `exports`). The last piece is making sure the `?url` imports (`import workerPath from 'hydrogen-view-sdk/main.js?url';`) work still. It looks like this may have just been solved via https://github.com/vitejs/vite/issues/6725 -> https://github.com/vitejs/vite/pull/7073 (literally 2 days ago) and we just need to wait for the next Vite release 🎉
This commit is contained in:
parent
460780d602
commit
cd007b40e1
@ -2,6 +2,17 @@
|
|||||||
"name": "hydrogen-view-sdk",
|
"name": "hydrogen-view-sdk",
|
||||||
"description": "Embeddable matrix client library, including view components",
|
"description": "Embeddable matrix client library, including view components",
|
||||||
"version": "0.0.5",
|
"version": "0.0.5",
|
||||||
"main": "./hydrogen.es.js",
|
"main": "./hydrogen.cjs.js",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"import": "./lib-build/hydrogen.es.js",
|
||||||
|
"require": "./lib-build/hydrogen.cjs.js"
|
||||||
|
},
|
||||||
|
"./paths/vite": "./paths/vite.js",
|
||||||
|
"./style.css": "./asset-build/assets/index.css",
|
||||||
|
"./main.js": "./asset-build/assets/download-sandbox.html",
|
||||||
|
"./download-sandbox.html": "./asset-build/assets/download-sandbox.html",
|
||||||
|
"./assets/*": "./asset-build/assets/*"
|
||||||
|
},
|
||||||
"type": "module"
|
"type": "module"
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
rm -rf target
|
rm -rf target/*
|
||||||
yarn run vite build -c vite.sdk-assets-config.js
|
yarn run vite build -c vite.sdk-assets-config.js
|
||||||
yarn run vite build -c vite.sdk-lib-config.js
|
yarn run vite build -c vite.sdk-lib-config.js
|
||||||
yarn tsc -p tsconfig-declaration.json
|
yarn tsc -p tsconfig-declaration.json
|
||||||
@ -10,13 +10,7 @@ mkdir target/paths
|
|||||||
cp doc/SDK.md target/README.md
|
cp doc/SDK.md target/README.md
|
||||||
pushd target
|
pushd target
|
||||||
pushd asset-build/assets
|
pushd asset-build/assets
|
||||||
mv main.*.js ../../main.js
|
rm !(main).js *.wasm
|
||||||
mv index.*.css ../../style.css
|
|
||||||
mv download-sandbox.*.html ../../download-sandbox.html
|
|
||||||
rm *.js *.wasm
|
|
||||||
mv ./* ../../
|
|
||||||
popd
|
popd
|
||||||
rm -rf asset-build
|
rm index.html
|
||||||
mv lib-build/* .
|
|
||||||
rm -rf lib-build
|
|
||||||
popd
|
popd
|
||||||
|
@ -3,21 +3,7 @@ const fs = require("fs");
|
|||||||
const appManifest = require("../../package.json");
|
const appManifest = require("../../package.json");
|
||||||
const baseSDKManifest = require("./base-manifest.json");
|
const baseSDKManifest = require("./base-manifest.json");
|
||||||
/*
|
/*
|
||||||
need to leave exports out of base-manifest.json because of #vite-bug,
|
Need to leave typescript type definitions out until the
|
||||||
with the downside that we can't support environments that support
|
|
||||||
both esm and commonjs modules, so we pick just esm.
|
|
||||||
```
|
|
||||||
"exports": {
|
|
||||||
".": {
|
|
||||||
"import": "./hydrogen.es.js",
|
|
||||||
"require": "./hydrogen.cjs.js"
|
|
||||||
},
|
|
||||||
"./paths/vite": "./paths/vite.js",
|
|
||||||
"./style.css": "./style.css"
|
|
||||||
},
|
|
||||||
```
|
|
||||||
|
|
||||||
Also need to leave typescript type definitions out until the
|
|
||||||
typescript conversion is complete and all imports in the d.ts files
|
typescript conversion is complete and all imports in the d.ts files
|
||||||
exists.
|
exists.
|
||||||
```
|
```
|
||||||
|
@ -2,10 +2,29 @@ const path = require("path");
|
|||||||
const mergeOptions = require('merge-options');
|
const mergeOptions = require('merge-options');
|
||||||
const commonOptions = require("./vite.common-config.js");
|
const commonOptions = require("./vite.common-config.js");
|
||||||
|
|
||||||
|
const pathsToExport = [
|
||||||
|
"index.js",
|
||||||
|
"index.css",
|
||||||
|
"download-sandbox.html"
|
||||||
|
];
|
||||||
|
|
||||||
export default mergeOptions(commonOptions, {
|
export default mergeOptions(commonOptions, {
|
||||||
root: "src/",
|
root: "src/",
|
||||||
base: "./",
|
base: "./",
|
||||||
build: {
|
build: {
|
||||||
outDir: "../target/asset-build/",
|
outDir: "../target/asset-build/",
|
||||||
|
rollupOptions: {
|
||||||
|
output: {
|
||||||
|
assetFileNames: (chunkInfo) => {
|
||||||
|
// Get rid of the hash so we can consistently reference these
|
||||||
|
// files in our `package.json` `exports`
|
||||||
|
if(pathsToExport.includes(path.basename(chunkInfo.name))) {
|
||||||
|
return "assets/[name].[ext]";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "assets/[name]-[hash][extname]";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user