create-rolldown 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/package.json +5 -3
  2. package/template-react/.editorconfig +15 -0
  3. package/template-react/CHANGELOG.md +20 -0
  4. package/template-react/CONTRIBUTING.md +46 -0
  5. package/template-react/LICENSE +21 -0
  6. package/template-react/README.md +164 -0
  7. package/template-react/package.json +57 -0
  8. package/template-react/playground/index.html +13 -0
  9. package/template-react/playground/public/rolldown.svg +1 -0
  10. package/template-react/playground/src/App.tsx +18 -0
  11. package/template-react/playground/src/index.tsx +10 -0
  12. package/template-react/playground/src/style.css +93 -0
  13. package/template-react/pnpm-lock.yaml +1356 -0
  14. package/template-react/rolldown.config.js +10 -0
  15. package/template-react/src/MyButton.tsx +18 -0
  16. package/template-react/src/index.ts +1 -0
  17. package/template-react/tsconfig.json +18 -0
  18. package/template-react/vite.config.ts +7 -0
  19. package/template-solid/.editorconfig +15 -0
  20. package/template-solid/CHANGELOG.md +20 -0
  21. package/template-solid/CONTRIBUTING.md +46 -0
  22. package/template-solid/LICENSE +21 -0
  23. package/template-solid/README.md +168 -0
  24. package/template-solid/package.json +60 -0
  25. package/template-solid/playground/index.html +13 -0
  26. package/template-solid/playground/public/rolldown.svg +1 -0
  27. package/template-solid/playground/src/App.tsx +18 -0
  28. package/template-solid/playground/src/index.tsx +5 -0
  29. package/template-solid/playground/src/style.css +93 -0
  30. package/template-solid/pnpm-lock.yaml +1565 -0
  31. package/template-solid/rolldown.config.js +12 -0
  32. package/template-solid/src/MyButton.tsx +18 -0
  33. package/template-solid/src/index.ts +1 -0
  34. package/template-solid/tsconfig.json +19 -0
  35. package/template-solid/vite.config.ts +7 -0
  36. package/template-svelte/.editorconfig +15 -0
  37. package/template-svelte/CHANGELOG.md +20 -0
  38. package/template-svelte/CONTRIBUTING.md +46 -0
  39. package/template-svelte/LICENSE +21 -0
  40. package/template-svelte/README.md +161 -0
  41. package/template-svelte/package.json +60 -0
  42. package/template-svelte/playground/index.html +13 -0
  43. package/template-svelte/playground/public/rolldown.svg +1 -0
  44. package/template-svelte/playground/src/App.svelte +30 -0
  45. package/template-svelte/playground/src/index.ts +9 -0
  46. package/template-svelte/playground/src/style.css +93 -0
  47. package/template-svelte/pnpm-lock.yaml +1230 -0
  48. package/template-svelte/rolldown.config.js +23 -0
  49. package/template-svelte/src/MyButton.svelte +15 -0
  50. package/template-svelte/src/index.ts +1 -0
  51. package/template-svelte/tsconfig.json +21 -0
  52. package/template-svelte/vite.config.ts +7 -0
  53. package/template-vanilla/.editorconfig +15 -0
  54. package/template-vanilla/CHANGELOG.md +19 -0
  55. package/template-vanilla/CONTRIBUTING.md +45 -0
  56. package/template-vanilla/LICENSE +21 -0
  57. package/template-vanilla/README.md +124 -0
  58. package/template-vanilla/package.json +47 -0
  59. package/template-vanilla/rolldown.config.js +9 -0
  60. package/template-vanilla/src/index.ts +42 -0
  61. package/template-vanilla/tsconfig.json +17 -0
  62. package/template-vue/.editorconfig +15 -0
  63. package/template-vue/CHANGELOG.md +20 -0
  64. package/template-vue/CONTRIBUTING.md +46 -0
  65. package/template-vue/LICENSE +21 -0
  66. package/template-vue/README.md +165 -0
  67. package/template-vue/package.json +57 -0
  68. package/template-vue/playground/index.html +13 -0
  69. package/template-vue/playground/public/rolldown.svg +1 -0
  70. package/template-vue/playground/src/App.vue +16 -0
  71. package/template-vue/playground/src/index.ts +5 -0
  72. package/template-vue/playground/src/style.css +93 -0
  73. package/template-vue/pnpm-lock.yaml +1140 -0
  74. package/template-vue/rolldown.config.js +12 -0
  75. package/template-vue/src/MyButton.vue +17 -0
  76. package/template-vue/src/index.ts +1 -0
  77. package/template-vue/tsconfig.json +20 -0
  78. package/template-vue/vite.config.ts +7 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-rolldown",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Scaffolding tool for Rolldown projects",
5
5
  "keywords": [
6
6
  "bundler",
@@ -24,9 +24,11 @@
24
24
  "create-rolldown": "index.js"
25
25
  },
26
26
  "files": [
27
+ "dist",
27
28
  "index.js",
28
- "template-*",
29
- "dist"
29
+ "LICENSE",
30
+ "README.md",
31
+ "template-*/**"
30
32
  ],
31
33
  "type": "module",
32
34
  "scripts": {
@@ -0,0 +1,15 @@
1
+ # EditorConfig helps maintain consistent coding styles
2
+ # https://editorconfig.org
3
+
4
+ root = true
5
+
6
+ [*]
7
+ charset = utf-8
8
+ end_of_line = lf
9
+ indent_style = space
10
+ indent_size = 2
11
+ insert_final_newline = true
12
+ trim_trailing_whitespace = true
13
+
14
+ [*.md]
15
+ trim_trailing_whitespace = false
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+
12
+ - Initial release
13
+ - React component library setup with Rolldown
14
+ - Vite playground for development
15
+ - TypeScript support
16
+ - Example MyButton component
17
+
18
+ ---
19
+
20
+ Created with [create-rolldown](https://github.com/sunny-117/create-rolldown)
@@ -0,0 +1,46 @@
1
+ # Contributing
2
+
3
+ Thanks for your interest in contributing to this project! 🎉
4
+
5
+ ## Development Setup
6
+
7
+ 1. Fork and clone the repository
8
+ 2. Install dependencies:
9
+ ```bash
10
+ npm install
11
+ ```
12
+ 3. Start the playground:
13
+ ```bash
14
+ npm run play
15
+ ```
16
+
17
+ ## Making Changes
18
+
19
+ 1. Create a new branch for your feature/fix
20
+ 2. Make your changes in the `src/` directory
21
+ 3. Test your changes in the playground
22
+ 4. Build the library to ensure no errors:
23
+ ```bash
24
+ npm run build
25
+ ```
26
+ 5. Run type checking:
27
+ ```bash
28
+ npm run typecheck
29
+ ```
30
+
31
+ ## Submitting Changes
32
+
33
+ 1. Commit your changes with a clear message
34
+ 2. Push to your fork
35
+ 3. Open a Pull Request with a description of your changes
36
+
37
+ ## Code Style
38
+
39
+ - Follow the existing code style
40
+ - Use TypeScript for type safety
41
+ - Add JSDoc comments for public APIs
42
+ - Keep components simple and focused
43
+
44
+ ---
45
+
46
+ This project was created with [create-rolldown](https://github.com/sunny-117/create-rolldown)
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) [year] [author]
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,164 @@
1
+ # Rolldown React Starter
2
+
3
+ > 🚀 Created with [create-rolldown](https://github.com/sunny-117/create-rolldown) - Fast scaffolding for Rolldown library projects
4
+
5
+ A modern React component library starter powered by Rolldown - the blazingly fast JavaScript bundler written in Rust.
6
+
7
+ ## ✨ Features
8
+
9
+ - ⚡️ **Lightning Fast** - Powered by [Rolldown](https://rolldown.rs), a Rust-based bundler
10
+ - ⚛️ **React 19** - Latest React with full TypeScript support
11
+ - 🎮 **Live Playground** - Vite-powered dev environment with HMR
12
+ - 📦 **NPM Ready** - Pre-configured for publishing React libraries
13
+ - 🔧 **TypeScript First** - Full type safety and IntelliSense
14
+ - 🔄 **Watch Mode** - Instant feedback during library development
15
+ - 💡 **Perfect For** - React components, hooks, utilities, and UI libraries
16
+
17
+ ## 🚀 Quick Start
18
+
19
+ Install dependencies:
20
+
21
+ ```bash
22
+ npm install
23
+ # or
24
+ pnpm install
25
+ # or
26
+ yarn install
27
+ ```
28
+
29
+ ## 📦 Development Workflow
30
+
31
+ ### 🎮 Run the playground (Recommended for development)
32
+
33
+ ```bash
34
+ npm run play
35
+ ```
36
+
37
+ Opens a Vite dev server at `http://localhost:5173` with:
38
+
39
+ - ⚡️ Hot Module Replacement (HMR)
40
+ - 🔄 Instant updates when you edit components
41
+ - 🎨 Live preview of your library
42
+
43
+ **Tip**: Edit `src/MyButton.tsx` and see changes instantly in the playground!
44
+
45
+ ### 📦 Build the library
46
+
47
+ ```bash
48
+ npm run build
49
+ ```
50
+
51
+ Outputs to `dist/` directory with:
52
+
53
+ - `index.js` - ESM bundle
54
+ - `index.d.ts` - TypeScript declarations
55
+
56
+ ### 🔄 Watch mode for library development
57
+
58
+ ```bash
59
+ npm run dev
60
+ ```
61
+
62
+ Automatically rebuilds the library on file changes. Use this when:
63
+
64
+ - Testing your library in another project
65
+ - Preparing for publishing
66
+ - Running alongside the playground
67
+
68
+ ### 🔍 Type checking
69
+
70
+ ```bash
71
+ npm run typecheck
72
+ ```
73
+
74
+ ## 📁 Project Structure
75
+
76
+ ```
77
+ your-library/
78
+ ├── src/ # 📚 Your library source code
79
+ │ ├── index.ts # 📝 Main entry - export your components here
80
+ │ └── MyButton.tsx # 🎨 Example component (replace with yours)
81
+
82
+ ├── playground/ # 🎮 Development playground (Vite)
83
+ │ ├── src/
84
+ │ │ ├── App.tsx # 🎪 Test your components here
85
+ │ │ ├── index.tsx # 🚪 Playground entry point
86
+ │ │ └── style.css # 🎨 Playground styles
87
+ │ ├── index.html # 📄 HTML template
88
+ │ └── public/ # 📁 Static assets
89
+
90
+ ├── dist/ # 📦 Build output (generated)
91
+ │ ├── index.js # ESM bundle
92
+ │ └── index.d.ts # Type declarations
93
+
94
+ ├── rolldown.config.js # ⚙️ Rolldown bundler config
95
+ ├── vite.config.ts # ⚡️ Vite playground config
96
+ ├── tsconfig.json # 🔧 TypeScript config
97
+ └── package.json # 📋 Package metadata
98
+ ```
99
+
100
+ ## 💡 Usage Example
101
+
102
+ After building and publishing, users can import your components:
103
+
104
+ ```tsx
105
+ import { MyButton } from 'your-library-name';
106
+
107
+ function App() {
108
+ return (
109
+ <div>
110
+ <MyButton />
111
+ </div>
112
+ );
113
+ }
114
+ ```
115
+
116
+ ## 📤 Publishing to NPM
117
+
118
+ 1. Update `package.json` with your library details:
119
+ - `name` - Your package name (e.g., `@yourname/react-components`)
120
+ - `version` - Semantic version (start with `0.1.0`)
121
+ - `description` - What your library does
122
+ - `author` - Your name and email
123
+ - `repository` - Your git repository URL
124
+ - `keywords` - Help users find your package
125
+
126
+ 2. Build the library:
127
+
128
+ ```bash
129
+ npm run build
130
+ ```
131
+
132
+ 3. Test the build locally:
133
+
134
+ ```bash
135
+ npm pack
136
+ # Creates a .tgz file you can test in another project
137
+ ```
138
+
139
+ 4. Publish to npm:
140
+ ```bash
141
+ npm publish
142
+ ```
143
+
144
+ The `prepublishOnly` script ensures your library is built before publishing.
145
+
146
+ ## 🎯 Best Practices
147
+
148
+ - **Export Strategy**: Export all public components from `src/index.ts`
149
+ - **Peer Dependencies**: React and ReactDOM are peer dependencies (users provide them)
150
+ - **Tree Shaking**: Use named exports for better tree-shaking
151
+ - **TypeScript**: Add proper types and JSDoc comments
152
+ - **Testing**: Test components in the playground before publishing
153
+ - **Versioning**: Follow [semantic versioning](https://semver.org/)
154
+
155
+ ## 🔗 Learn More
156
+
157
+ - [Rolldown Documentation](https://rolldown.rs)
158
+ - [create-rolldown](https://github.com/sunny-117/create-rolldown)
159
+ - [React Documentation](https://react.dev)
160
+ - [TypeScript Handbook](https://www.typescriptlang.org/docs/)
161
+
162
+ ---
163
+
164
+ Built with ❤️ using create-rolldown
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "rolldown-react-starter",
3
+ "version": "0.0.0",
4
+ "description": "A starter for creating a React library with Rolldown.",
5
+ "keywords": [
6
+ "bundler",
7
+ "component",
8
+ "library",
9
+ "react",
10
+ "rolldown",
11
+ "typescript"
12
+ ],
13
+ "homepage": "https://github.com/author/library#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/author/library/issues"
16
+ },
17
+ "license": "MIT",
18
+ "author": "Author Name <author.name@mail.com>",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/author/library.git"
22
+ },
23
+ "files": [
24
+ "dist"
25
+ ],
26
+ "type": "module",
27
+ "main": "./dist/index.js",
28
+ "module": "./dist/index.js",
29
+ "types": "./dist/index.d.ts",
30
+ "exports": {
31
+ ".": "./dist/index.js",
32
+ "./package.json": "./package.json"
33
+ },
34
+ "publishConfig": {
35
+ "access": "public"
36
+ },
37
+ "scripts": {
38
+ "build": "rolldown -c rolldown.config.js",
39
+ "dev": "rolldown -c rolldown.config.js --watch",
40
+ "play": "vite",
41
+ "typecheck": "tsc --noEmit",
42
+ "prepublishOnly": "pnpm run build"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^25.0.3",
46
+ "@types/react": "^19.2.8",
47
+ "@types/react-dom": "^19.2.3",
48
+ "@vitejs/plugin-react": "^5.1.2",
49
+ "rolldown": "^1.0.0-beta.60",
50
+ "typescript": "^5.9.3",
51
+ "vite": "^7.3.1"
52
+ },
53
+ "peerDependencies": {
54
+ "react": "^19.2.0",
55
+ "react-dom": "^19.2.0"
56
+ }
57
+ }
@@ -0,0 +1,13 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <link rel="icon" type="image/svg+xml" href="/rolldown.svg" />
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
+ <title>Rolldown + React</title>
8
+ </head>
9
+ <body>
10
+ <div id="app"></div>
11
+ <script type="module" src="/src/index.tsx"></script>
12
+ </body>
13
+ </html>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="48" height="46" fill="none" viewBox="0 0 48 46"><path fill="#863bff" d="M25.946 44.938c-.664.845-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.287c-.92 0-1.456-1.04-.92-1.788l7.48-10.471c1.07-1.497 0-3.578-1.842-3.578H1.237c-.92 0-1.456-1.04-.92-1.788L10.013.474c.214-.297.556-.474.92-.474h28.894c.92 0 1.456 1.04.92 1.788l-7.48 10.471c-1.07 1.498 0 3.579 1.842 3.579h11.377c.943 0 1.473 1.088.89 1.83L25.947 44.94z" style="fill:#863bff;fill:color(display-p3 .5252 .23 1);fill-opacity:1"/></svg>
@@ -0,0 +1,18 @@
1
+ import { MyButton } from '../../src';
2
+
3
+ export function App() {
4
+ return (
5
+ <>
6
+ <div>
7
+ <a href="https://rolldown.rs" target="_blank" rel="noopener noreferrer">
8
+ <img src="/rolldown.svg" class="logo" alt="Rolldown logo" />
9
+ </a>
10
+ </div>
11
+ <h1>Rolldown + React</h1>
12
+ <div class="card">
13
+ <MyButton />
14
+ </div>
15
+ <p class="read-the-docs">Click on the Rolldown logo to learn more</p>
16
+ </>
17
+ );
18
+ }
@@ -0,0 +1,10 @@
1
+ import { StrictMode } from 'react';
2
+ import { createRoot } from 'react-dom/client';
3
+ import { App } from './App.tsx';
4
+ import './style.css';
5
+
6
+ createRoot(document.querySelector('#app')!).render(
7
+ <StrictMode>
8
+ <App />
9
+ </StrictMode>
10
+ );
@@ -0,0 +1,93 @@
1
+ :root {
2
+ font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
3
+ line-height: 1.5;
4
+ font-weight: 400;
5
+
6
+ color-scheme: light dark;
7
+ color: rgba(255, 255, 255, 0.87);
8
+ background-color: #242424;
9
+
10
+ font-synthesis: none;
11
+ text-rendering: optimizeLegibility;
12
+ -webkit-font-smoothing: antialiased;
13
+ -moz-osx-font-smoothing: grayscale;
14
+ }
15
+
16
+ a {
17
+ font-weight: 500;
18
+ color: #646cff;
19
+ text-decoration: inherit;
20
+ }
21
+ a:hover {
22
+ color: #535bf2;
23
+ }
24
+
25
+ body {
26
+ margin: 0;
27
+ display: flex;
28
+ place-items: center;
29
+ min-width: 320px;
30
+ min-height: 100vh;
31
+ }
32
+
33
+ h1 {
34
+ font-size: 3.2em;
35
+ line-height: 1.1;
36
+ }
37
+
38
+ button {
39
+ border-radius: 8px;
40
+ border: 1px solid transparent;
41
+ padding: 0.6em 1.2em;
42
+ font-size: 1em;
43
+ font-weight: 500;
44
+ font-family: inherit;
45
+ background-color: #1a1a1a;
46
+ cursor: pointer;
47
+ transition: border-color 0.25s;
48
+ }
49
+ button:hover {
50
+ border-color: #646cff;
51
+ }
52
+ button:focus,
53
+ button:focus-visible {
54
+ outline: 4px auto -webkit-focus-ring-color;
55
+ }
56
+
57
+ .logo {
58
+ height: 6em;
59
+ padding: 1.5em;
60
+ will-change: filter;
61
+ transition: filter 300ms;
62
+ }
63
+ .logo:hover {
64
+ filter: drop-shadow(0 0 2em #646cffaa);
65
+ }
66
+
67
+ .card {
68
+ padding: 2em;
69
+ }
70
+
71
+ #app {
72
+ max-width: 1280px;
73
+ margin: 0 auto;
74
+ padding: 2rem;
75
+ text-align: center;
76
+ }
77
+
78
+ .read-the-docs {
79
+ color: #888;
80
+ }
81
+
82
+ @media (prefers-color-scheme: light) {
83
+ :root {
84
+ color: #213547;
85
+ background-color: #ffffff;
86
+ }
87
+ a:hover {
88
+ color: #747bff;
89
+ }
90
+ button {
91
+ background-color: #f9f9f9;
92
+ }
93
+ }