Skip to content
Snippets Groups Projects
Unverified Commit 5ecf502f authored by Lukas Hufnagel's avatar Lukas Hufnagel
Browse files

publish

parents
No related branches found
No related tags found
No related merge requests found
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# D3 TypeScript Template
This is a simple vanilla website template that uses D3.js and TypeScript. It is a good starting point for creating a D3.js project with TypeScript.
It also uses Vite as a build tool and SCSS for styling.
## Getting Started
1. Forking this repository
2. Clone the repository
3. Install dependencies by either running `npm ci` or `yarn`
4. Start the development server by running `npm run dev` or `yarn dev`
You are now ready to start building your D3.js project with TypeScript!
## Building for Production
To build the project for production, run `npm run build` or `yarn build`. The output will be in the `dist` folder.
## Boilerplate
This boilerplate gives a simple example of all the features of this template. You could just remove the files in the subfolders and clean up the `main.ts`.
## Alias
The `@` alias is set to the `src` folder. This makes it easier to import files from the `src` folder.
\ No newline at end of file
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + TS</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
{
"name": "d3-typescript-template",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
},
"devDependencies": {
"@types/d3": "^7.4.3",
"sass": "^1.75.0",
"typescript": "^5.2.2",
"vite": "^5.2.0"
},
"dependencies": {
"d3": "^7.9.0"
}
}
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
\ No newline at end of file
{
"message": "Hello World, D3.js!"
}
\ No newline at end of file
import "@/styles/index.scss";
import {drawSmiley, getMessage} from "@/scripts/welcome.ts";
const app = document.querySelector('#app') as HTMLDivElement;
app.innerHTML = `
<h1>${getMessage()}</h1>
<svg id="smiley"></svg>
`;
drawSmiley();
\ No newline at end of file
import data from "@/data/test.json";
import * as d3 from "d3";
export function getMessage(): string {
return data.message;
}
export function drawSmiley() {
const svg = d3.select("#smiley");
svg.append("circle")
.attr("cx", 50)
.attr("cy", 50)
.attr("r", 40)
.attr("fill", "yellow");
svg.append("circle")
.attr("cx", 30)
.attr("cy", 30)
.attr("r", 5)
.attr("fill", "black");
svg.append("circle")
.attr("cx", 70)
.attr("cy", 30)
.attr("r", 5)
.attr("fill", "black");
svg.append("path")
.attr("d", "M 30 60 Q 50 80 70 60")
.attr("stroke", "black")
.attr("stroke-width", 2)
.attr("fill", "none");
}
\ No newline at end of file
h1 {
font-size: 2em;
color: red;
#smiley {
margin-top: 2rem;
}
}
\ No newline at end of file
/// <reference types="vite/client" />
{
"compilerOptions": {
"target": "ES2020",
"useDefineForClassFields": true,
"module": "ESNext",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"skipLibCheck": true,
/* Bundler mode */
"moduleResolution": "bundler",
"allowImportingTsExtensions": true,
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"paths": {
"@/*": ["src/*"]
},
},
"include": ["src"]
}
import { defineConfig } from "vite";
import path from "path";
export default defineConfig({
resolve: {
alias: {
"@": path.resolve(__dirname, "./src"),
},
},
});
\ No newline at end of file
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment