Files
js/scripts/hotlink/hotlink-init.mjs
T

94 lines
2.3 KiB
JavaScript

// @ts-check
import { banner } from "./banner.mjs";
import { updatePackages } from "./changes.mjs";
import { execute } from "./execute.mjs";
async function script() {
const isLegacy = process.argv[2] === "legacy";
console.log(banner);
console.log("\x1b[34m%s\x1b[0m", "Updating package json files");
updatePackages("hotlink", isLegacy);
console.log("\x1b[34m%s\x1b[0m", "Creating Symlinks");
if (isLegacy) {
await execute([
"cd legacy_packages/react",
"pnpm link",
"cd ../react-core",
"pnpm link",
"cd ../wallets",
"pnpm link",
"cd ../..",
]);
// use react-core and wallets link in react package
await execute([
"cd packages/react",
"pnpm link @thirdweb-dev/react-core",
"pnpm link @thirdweb-dev/wallets",
"cd ../..",
]);
} else {
await execute(["cd packages/thirdweb", "pnpm link", "cd ../../"]);
}
// done
console.log("\x1b[32m%s\x1b[0m", "\nHotlink Complete ✨\n\n");
// how to use hot-linked packages
console.log(
"\x1b[33m%s\x1b[0m",
"Run Below Commands to use Hotlinked pacakges in your project:\n",
);
console.log("\x1b[33m%s\x1b[0m", "pnpm link @thirdweb-dev/react");
console.log("\x1b[33m%s\x1b[0m", "pnpm --force");
console.log("\n");
console.log(
"--------------------------------------------------------------------------------\n",
);
console.log(
"You will also need to configure your build tool to build the linked packages.\n",
);
console.log("For Vite: configure `optimizeDeps` in `vite.config.js`\n");
// hello in blue
console.log(
"\x1b[33m%s\x1b[0m",
`\
optimizeDeps: {
exclude: ['your-pkg-1', 'your-pkg-2'],
}\n\n`,
);
console.log(
"for Next.js configure `transpilePackages` in `next.config.js`\n",
);
console.log(
"\x1b[33m%s\x1b[0m",
`\
const nextConfig = {
transpilePackages: ['your-pkg-1', 'your-pkg-2'],
};\n\n`,
);
console.log(
"--------------------------------------------------------------------------------\n",
);
// how to revert
console.log(
"\x1b[35m%s\x1b[0m",
"Run `pnpm hotlink-revert` to revert hot-linking\n",
);
// clear cache notice
console.log(
"Make sure to clear cache in your project and restart TS server in VSCode before starting dev server in your project\n",
);
}
script();