Skip to content

Commit 3f9f77c

Browse files
authored
Merge pull request #7034 from umbraco/vite-setup
Updated article as package name was throwing "Invalid package.json name" error.
2 parents 48cea2a + c09e330 commit 3f9f77c

File tree

2 files changed

+42
-48
lines changed

2 files changed

+42
-48
lines changed

15/umbraco-cms/SUMMARY.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,8 @@
148148
* [Extend and customize the editing experience](customizing/overview.md)
149149
* [Project Bellissima](customizing/project-bellissima.md)
150150
* [Setup Your Development Environment](customizing/development-flow/README.md)
151-
* [TypeScript setup](customizing/development-flow/typescript-setup.md)
152151
* [Vite Package Setup](customizing/development-flow/vite-package-setup.md)
152+
* [TypeScript setup](customizing/development-flow/typescript-setup.md)
153153
* [Extension Overview](customizing/extending-overview/README.md)
154154
* [Extension Registry](customizing/extending-overview/extension-registry/README.md)
155155
* [Extension Registration](customizing/extending-overview/extension-registry/extension-registry.md)

15/umbraco-cms/customizing/development-flow/vite-package-setup.md

+41-47
Original file line numberDiff line numberDiff line change
@@ -7,73 +7,69 @@ description: Get started with a Vite Package, setup with TypeScript and Lit
77
Umbraco recommends building extensions with a setup using TypeScript and a build tool such as Vite. Umbraco uses the library Lit for building web components which we will use throughout this guide.
88

99
{% hint style="info" %}
10-
This guide is based on our **general recommendations** for working with and building extensions for the Umbraco backoffice.
11-
12-
You can use **any framework or library**, as you are not limited to the mentioned frameworks.
10+
These are general recommendations for working with and building extensions for the Umbraco backoffice. You can use any framework or library of your choice.
1311
{% endhint %}
1412

15-
## Getting Started With Vite
13+
## Before You Begin
1614

17-
Vite comes with a set of good presets to get you quickly up and running with libraries and languages. For example: Lit, Svelte, and Vanilla Web Components with both JavaScript and TypeScript.
15+
Make sure to read the [Setup Your Development Environment](./) article before continuing.
1816

19-
{% hint style="info" %}
20-
Before following this guide, read the [Setup Your Development Environment](./) article.
21-
{% endhint %}
17+
## Create a Vite Package
18+
19+
Vite comes with a set of good presets to get you quickly up and running with libraries and languages. For example: Lit, Svelte, and Vanilla Web Components with both JavaScript and TypeScript.
2220

23-
1. Open a terminal and navigate to the project folder where you want to create your new Vite Package.
24-
2. Run the following command in the folder to create a new Vite Package:
21+
1. Open your terminal and navigate to the folder where you want to create the new Vite package.
22+
2. Run the following command:
2523

2624
```bash
2725
npm create vite@latest
2826
```
2927

30-
This command will set up your new package and ask you to pick a framework and a compiler.
31-
32-
3. Enter `Client` as both the **Project Name** and **Package name** when prompted.
33-
34-
4. Choose **Lit** and **TypeScript** as the framework and language.
28+
This command starts a setup prompt.
3529

36-
{% hint style="info" %}
37-
For this tutorial, it is recommended to use the names given above. However, feel free to choose other names if preferred.
38-
{% endhint %}
30+
For this tutorial, it is recommended to use the names given below. However, feel free to choose other names if preferred.
3931

40-
<figure><img src="../../extending/customize-backoffice/development-flow/images/vite-project-cli.jpg" alt=""><figcaption><p>Create vite command choices</p></figcaption></figure>
32+
3. When prompted:
33+
* Enter **client** as the **Project Name**.
34+
* Enter **client** as the **Package name**.
35+
* Select **Lit** as the framework.
36+
* Select **TypeScript** as the variant.
4137

42-
This creates a new folder called `Client`, sets up our new project, and creates a `package.json` file, which includes the necessary packages. This is where all your source files live.
38+
This creates a new folder called **client** with your project files.
4339

4440
{% hint style="info" %}
45-
Alternatively, you can skip the interactive prompts and use this command:
41+
Alternatively, to skip the prompts, use this command:
4642

4743
```typescript
48-
npm create vite@latest Client -- --template lit-ts
44+
npm create vite@latest client -- --template lit-ts
4945
```
5046

51-
This will create a Vite Package with Lit and TypeScript in a folder called **Client**.
5247
{% endhint %}
5348

54-
5. Navigate to the **Client** project folder and install the required packages:
49+
4. Navigate into the new **client** folder and install the packages:
5550

5651
```bash
52+
cd client
5753
npm install
5854
```
5955

56+
{% hint style="warning" %}
6057
Before proceeding, ensure that you install the version of the Backoffice package compatible with your Umbraco installation. You can find the appropriate version on the [@umbraco-cms/backoffice npm page](https://www.npmjs.com/package/@umbraco-cms/backoffice).
58+
{% endhint %}
6159

62-
6. Install the Backoffice package using the following command:
60+
5. Install the Umbraco Backoffice package:
6361

6462
```bash
6563
npm install -D @umbraco-cms/backoffice
6664
```
6765

68-
{% hint style="info" %}
69-
To avoid installing Umbraco’s sub-dependencies such as TinyMCE and Monaco Editor, you can add the `--legacy-peer-deps` flag:
70-
{% endhint %}
66+
6. To avoid installing additional dependencies such as TinyMCE or Monaco Editor,use the `--legacy-peer-deps` flag:
7167

7268
```bash
7369
npm install --legacy-peer-deps -D @umbraco-cms/backoffice
7470
```
7571

76-
Using this flag will disable Intellisense for external references.
72+
This disables IntelliSense for external references but keeps the install lean.
7773

7874
7. Open the `tsconfig.json` file.
7975
8. Add the array `types` inside `compilerOptions`, with the entry of `@umbraco-cms/backoffice/extension-types`:
@@ -89,7 +85,7 @@ Using this flag will disable Intellisense for external references.
8985
}
9086
```
9187

92-
9. Create a new file called `vite.config.ts` in the folder and insert the following code:
88+
9. Create a new `vite.config.ts` file in the **client** folder:
9389

9490
{% code title="vite.config.ts" lineNumbers="true" %}
9591
```ts
@@ -101,44 +97,42 @@ export default defineConfig({
10197
entry: "src/my-element.ts", // your web component source file
10298
formats: ["es"],
10399
},
104-
outDir: "../App_Plugins/Client", // all compiled files will be placed here
100+
outDir: "../App_Plugins/client", // all compiled files will be placed here
105101
emptyOutDir: true,
106102
sourcemap: true,
107103
rollupOptions: {
108104
external: [/^@umbraco/], // ignore the Umbraco Backoffice package in the build
109105
},
110106
},
111-
base: "/App_Plugins/Client/", // the base path of the app in the browser (used for assets)
107+
base: "/App_Plugins/client/", // the base path of the app in the browser (used for assets)
112108
});
113109
```
114110
{% endcode %}
115111

116-
{% hint style="info" %}
117-
The `outDir` parameter specifies where the compiled files are placed. In this example, they are stored in the `App_Plugins/Client` folder. If you are working with a different structure, such as a Razor Class Library (RCL) project, update this path to `wwwroot`.
118-
{% endhint %}
112+
The `outDir` parameter specifies where the compiled files are placed. In this example, they are stored in the `App_Plugins/client` folder. If you are working with a different structure, such as a Razor Class Library (RCL) project, update this path to `wwwroot`.
119113

120114
This alters the Vite default output into a **library mode**, where the output is a JavaScript file with the same name as the `name` attribute in `package.json`. The name is `client.js` if you followed this tutorial with no changes.
121115

122116
The source code that is compiled lives in the `src` folder of your package folder and that is where you can see a `my-element.ts` file. You can confirm that this file is the one specified as our entry on the Vite config file that we recently created.
123117

124-
{% hint style="info" %}
125118
The `build:lib:entry` parameter can accept an array which will allow you to export multiple files during the build. You can read more about [Vite's build options here](https://vitejs.dev/config/build-options.html#build-lib).
126-
{% endhint %}
127119

128-
Build the `ts` file in the `Client` folder so we can use it in our package:
120+
10. Build the `ts` file in the **client** folder:
129121

130122
```bash
131123
npm run build
132124
```
133125

134126
## Watch for changes and build
135127

136-
If you like to continuously work on the package and have each change built, you can add a `watch`script in your `package.json` with `vite build --watch`. The example below indicates where in the structure this change should be implemented:
128+
To continuously work on the package and have each change built, add a `watch`script in your `package.json` with `vite build --watch`.
129+
130+
The example below indicates where in the structure this change should be implemented:
137131

138132
{% code title="package.json" lineNumbers="true" %}
139133
```json
140134
{
141-
"name": "Client",
135+
"name": "client",
142136
...
143137
"scripts": {
144138
"watch": "vite build --watch"
@@ -148,15 +142,15 @@ If you like to continuously work on the package and have each change built, you
148142
```
149143
{% endcode %}
150144

151-
Then in the terminal, you can run `npm run watch`.
145+
Run `npm run watch` in the terminal.
152146

153147
## Umbraco Package declaration
154148

155-
Declare your package to Umbraco via a file called `umbraco-package.json`. This should be added at the root of your package. In this guide, it is inside the `Client/public` folder so that Vite automatically copies it over every time it builds.
149+
Declare your package to Umbraco via a file called `umbraco-package.json`. This should be added at the root of your package. The `umbraco-package.json` file should be located at `/App_Plugins/` or `/App_Plugins/{YourPackageName}` for Umbraco to detect it.
156150

157151
This example declares a Dashboard as part of your Package, using the Vite example element.
158152

159-
{% code title="Client/public/umbraco-package.json" lineNumbers="true" %}
153+
{% code title="client/public/umbraco-package.json" lineNumbers="true" %}
160154
```json
161155
{
162156
"$schema": "../../umbraco-package-schema.json",
@@ -167,7 +161,7 @@ This example declares a Dashboard as part of your Package, using the Vite exampl
167161
"type": "dashboard",
168162
"alias": "My.Dashboard.MyExtension",
169163
"name": "My Dashboard",
170-
"element": "/App_Plugins/Client/client.js",
164+
"element": "/App_Plugins/client/client.js",
171165
"elementName": "my-element",
172166
"meta": {
173167
"label": "My Dashboard",
@@ -194,9 +188,9 @@ Learn more about the abilities of the manifest file in the [Umbraco Package Mani
194188
195189
#### Testing your package
196190
197-
To be able to test your package, you will need to run your site.
191+
To test your package, run your site.
198192
199-
Before you do this, you need to make sure to run `npm run build` to compile your TypeScript files and copy them to the `App_Plugins/Client` folder.
193+
Before doing this, make sure to run `npm run build` to compile your TypeScript files and copy them to the `App_Plugins/client` folder.
200194
201195
{% hint style="warning" %}
202196
If you try to include some of these resources via Visual Studio (VS), then make sure not to include TypeScript files. Otherwise, VS will try to include a few lines on your `.csproj` file to compile the TypeScript code that exists in your project folder. When you run your website, VS will try to compile these files and fail.
@@ -206,7 +200,7 @@ The final result looks like this:
206200
207201
<figure><img src="../../.gitbook/assets/Vite_Package_Setup_Dashboard (1).png" alt=""><figcaption><p>My dashboard</p></figcaption></figure>
208202
209-
Back in the `src/my-element.ts` file, you can update the `styles` property to make any styling changes. You can change the `background-color` of the `button` to white so it is more visible:
203+
In the `src/my-element.ts` file, update the `styles` property to make any styling changes. You can change the `background-color` of the `button` to white so it is more visible:
210204
211205
```css
212206
button {

0 commit comments

Comments
 (0)