@degreesign/webapp 1.7.3 → 1.7.5
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.
- package/README.md +251 -125
- package/package.json +45 -20
package/README.md
CHANGED
|
@@ -1,29 +1,78 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
# @degreesign/webapp
|
|
2
|
+
|
|
3
|
+
**Webpack + TypeScript build toolkit for production-ready Progressive Web Apps and Node.js servers — one config generates optimized bundles, SEO meta tags, a PWA manifest, service worker, `sitemap.xml`, `robots.txt`, `.htaccess` and optional JavaScript obfuscation.**
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@degreesign/webapp)
|
|
6
|
+
[](https://www.npmjs.com/package/@degreesign/webapp)
|
|
7
|
+
[](./LICENSE)
|
|
8
|
+
[](https://www.typescriptlang.org/)
|
|
9
|
+
[](https://webpack.js.org/)
|
|
10
|
+
[](https://nodejs.org/)
|
|
11
|
+
|
|
12
|
+
## Table of Contents
|
|
13
|
+
|
|
14
|
+
- [What is @degreesign/webapp?](#what-is-degreesignwebapp)
|
|
15
|
+
- [Why @degreesign/webapp?](#why-degreesignwebapp)
|
|
16
|
+
- [Installation](#installation)
|
|
17
|
+
- [Quick Start](#quick-start)
|
|
18
|
+
- [Build API](#build-api)
|
|
19
|
+
- [File Utilities](#file-utilities)
|
|
20
|
+
- [Types](#types)
|
|
21
|
+
- [Configuration Options](#configuration-options)
|
|
22
|
+
- [FAQ](#faq)
|
|
23
|
+
- [Keywords](#keywords)
|
|
24
|
+
- [License](#license)
|
|
25
|
+
|
|
26
|
+
## What is @degreesign/webapp?
|
|
27
|
+
|
|
28
|
+
`@degreesign/webapp` is a small, dependency-light Webpack and TypeScript configuration toolkit for shipping **Progressive Web Apps (PWAs)** and **Node.js server bundles** from a single `build()` call. Instead of hand-writing hundreds of lines of Webpack config, you pass one typed config object and get a production-ready build: TypeScript compilation, CSS extraction and inlining, asset copying, HTML templating, SEO and Open Graph/Twitter meta tags, `app.json` manifest, auto-registered service worker, sitemap, `robots.txt`, `.htaccess` security policies, bundle analysis and optional code obfuscation. It is a build-time developer tool — it runs in Node.js during your build, not in the browser.
|
|
29
|
+
|
|
30
|
+
## Why @degreesign/webapp?
|
|
31
|
+
|
|
32
|
+
- **One config, whole build** — a single typed object replaces a full `webpack.config.ts` with plugins, loaders and rules.
|
|
33
|
+
- **PWA out of the box** — generates the web app manifest, service worker, icons, orientation and install metadata automatically.
|
|
34
|
+
- **SEO built in** — per-page title, description, canonical URL, Open Graph, Twitter Cards, `robots.txt` and `sitemap.xml`.
|
|
35
|
+
- **TypeScript-first** — ships type definitions and typed configuration (`ConfigBuild`, `Page`, `PreconnectLink`).
|
|
36
|
+
- **Web and server bundling** — build the front-end to `public_html/` and the Node.js back-end to `server_build/` from the same package.
|
|
37
|
+
- **Performance defaults** — Terser minification, CSS minification, tree-shaking, content hashing and a 2 MB asset budget (configurable).
|
|
38
|
+
- **Optional obfuscation** — toggle `obfuscateON` to protect shipped JavaScript with `webpack-obfuscator`.
|
|
39
|
+
- **Secure by default** — emits `.htaccess` with HSTS, `X-Frame-Options`, Referrer-Policy, Permissions-Policy and HTTPS redirects.
|
|
40
|
+
- **Zero framework lock-in** — framework-agnostic; use it with vanilla TypeScript or any framework that compiles to a Webpack entry.
|
|
41
|
+
- **MIT licensed and free forever.**
|
|
42
|
+
|
|
43
|
+
## Installation
|
|
44
|
+
|
|
45
|
+
Requires **Node.js 18 or higher**.
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# npm
|
|
49
|
+
npm install --save-dev @degreesign/webapp webpack webpack-cli typescript ts-loader
|
|
50
|
+
|
|
51
|
+
# yarn
|
|
52
|
+
yarn add --dev @degreesign/webapp webpack webpack-cli typescript ts-loader
|
|
53
|
+
|
|
54
|
+
# pnpm
|
|
55
|
+
pnpm add -D @degreesign/webapp webpack webpack-cli typescript ts-loader
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### CDN
|
|
59
|
+
|
|
60
|
+
The package is a Node.js build tool, so it is normally installed via a package manager. For quick inspection or utilities in a bundler that supports ESM CDNs, load it directly:
|
|
61
|
+
|
|
62
|
+
```html
|
|
63
|
+
<script type="module">
|
|
64
|
+
import { readJSON, writeJSON } from "https://esm.sh/@degreesign/webapp";
|
|
65
|
+
</script>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
> **Note:** the file utilities and `build()` rely on Node.js `fs`/`path`, so CDN usage is only suitable for Node-targeted environments, not the browser runtime.
|
|
69
|
+
|
|
70
|
+
## Quick Start
|
|
71
|
+
|
|
72
|
+
**1. Add build scripts to `package.json`:**
|
|
73
|
+
|
|
24
74
|
```json
|
|
25
75
|
{
|
|
26
|
-
"license": "MIT",
|
|
27
76
|
"scripts": {
|
|
28
77
|
"build": "webpack --config webpack.web.ts",
|
|
29
78
|
"start": "webpack serve --config webpack.web.ts",
|
|
@@ -36,34 +85,8 @@ Add file `package.json` as following
|
|
|
36
85
|
}
|
|
37
86
|
```
|
|
38
87
|
|
|
39
|
-
|
|
40
|
-
WebApp front-end website configuration
|
|
88
|
+
**2. Create `webpack.web.ts` — a complete, copy-paste PWA build:**
|
|
41
89
|
|
|
42
|
-
### Folder Structure
|
|
43
|
-
```
|
|
44
|
-
app_folder/
|
|
45
|
-
├── public_html/ # Output directory for production build
|
|
46
|
-
├── src/ # Source files
|
|
47
|
-
│ ├── assets/ # Static assets
|
|
48
|
-
│ │ ├── images/ # Image assets
|
|
49
|
-
│ │ │ ├── favicon.ico # Favicon
|
|
50
|
-
│ │ │ ├── app_icon.png # App icon for PWA
|
|
51
|
-
│ │ │ └── app_cover_image.webp # Cover image for SEO
|
|
52
|
-
│ ├── code/ # Utility scripts
|
|
53
|
-
│ │ └── utils.ts # Shared TypeScript utilities (optional)
|
|
54
|
-
│ ├── pages/ # Page-specific files
|
|
55
|
-
│ │ ├── home/ # Home page
|
|
56
|
-
│ │ │ ├── home.ts # Home page logic
|
|
57
|
-
│ │ │ └── home.html # Home page template
|
|
58
|
-
│ └── styles.css # Global styles
|
|
59
|
-
├── webpack.web.ts # Webpack configuration
|
|
60
|
-
├── .env # Environment variables
|
|
61
|
-
├── tsconfig.json # TypeScript configuration
|
|
62
|
-
└── package.json # Project metadata and scripts
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Configuration
|
|
66
|
-
Add `webpack.web.ts` file as the core of the webapp build process as following
|
|
67
90
|
```typescript
|
|
68
91
|
import { build } from "@degreesign/webapp";
|
|
69
92
|
|
|
@@ -86,9 +109,9 @@ module.exports = build({
|
|
|
86
109
|
fav_icon: "favicon.ico",
|
|
87
110
|
orientation: "portrait",
|
|
88
111
|
pagesList: [{
|
|
89
|
-
uri:
|
|
90
|
-
name:
|
|
91
|
-
description:
|
|
112
|
+
uri: "home",
|
|
113
|
+
name: "HomePage",
|
|
114
|
+
description: "Progressive Web App (PWA) HomePage",
|
|
92
115
|
}],
|
|
93
116
|
htmlCommonElements: [],
|
|
94
117
|
obfuscateON: false,
|
|
@@ -110,85 +133,188 @@ module.exports = build({
|
|
|
110
133
|
});
|
|
111
134
|
```
|
|
112
135
|
|
|
113
|
-
|
|
114
|
-
|
|
136
|
+
**3. Create `webpack.server.ts` — a Node.js back-end bundle:**
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
import { build } from "@degreesign/webapp";
|
|
140
|
+
|
|
141
|
+
module.exports = build({
|
|
142
|
+
type: "server",
|
|
143
|
+
obfuscateON: true,
|
|
144
|
+
srcDir: "server",
|
|
145
|
+
productionDir: "server_build",
|
|
146
|
+
filesList: ["main"],
|
|
147
|
+
port: 3211,
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**4. Add the expected source layout:**
|
|
115
152
|
|
|
116
|
-
### Folder Structure
|
|
117
153
|
```
|
|
118
154
|
app_folder/
|
|
119
|
-
├──
|
|
120
|
-
├──
|
|
121
|
-
|
|
122
|
-
│
|
|
123
|
-
│
|
|
124
|
-
├──
|
|
125
|
-
├── .
|
|
126
|
-
|
|
127
|
-
└──
|
|
155
|
+
├── public_html/ # Web output
|
|
156
|
+
├── server_build/ # Server output
|
|
157
|
+
├── src/
|
|
158
|
+
│ ├── assets/images/ # favicon.ico, app_icon.png, cover images
|
|
159
|
+
│ ├── code/ # common HTML + ts utils
|
|
160
|
+
│ ├── pages/home/
|
|
161
|
+
│ │ ├── home.ts
|
|
162
|
+
│ │ └── home.html
|
|
163
|
+
│ └── styles.css
|
|
164
|
+
├── server/
|
|
165
|
+
│ └── main.ts
|
|
166
|
+
├── webpack.web.ts
|
|
167
|
+
├── webpack.server.ts
|
|
168
|
+
├── .env
|
|
169
|
+
└── tsconfig.json
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**5. Build and run:**
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
npm start # web dev server on port 3210
|
|
176
|
+
npm run build # web build → public_html/
|
|
177
|
+
npm run start_server
|
|
178
|
+
npm run build_server # server build → server_build/
|
|
128
179
|
```
|
|
129
180
|
|
|
130
|
-
###
|
|
131
|
-
|
|
181
|
+
### Use the file helper API
|
|
182
|
+
|
|
132
183
|
```typescript
|
|
133
|
-
import {
|
|
184
|
+
import { readJSON, writeJSON, readData, writeData } from "@degreesign/webapp";
|
|
134
185
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
productionDir: `server_build`,
|
|
140
|
-
filesList: [`main`],
|
|
141
|
-
port: 3211,
|
|
142
|
-
});
|
|
186
|
+
const config = readJSON("./config.json"); // parse a JSON file
|
|
187
|
+
writeJSON("./dist/output.json", { built: true }); // serialize + write JSON
|
|
188
|
+
const html = readData("./src/pages/home/home.html"); // read a text file
|
|
189
|
+
writeData("./dist/robots.txt", "User-agent: *"); // write a text file
|
|
143
190
|
```
|
|
144
191
|
|
|
145
|
-
##
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
+
## Build API
|
|
193
|
+
|
|
194
|
+
### `build(params)`
|
|
195
|
+
|
|
196
|
+
Creates and returns a Webpack `Configuration` object. Pass `type: "webapp"` for a front-end PWA build, or `type: "server"` for a Node.js bundle.
|
|
197
|
+
|
|
198
|
+
| Export | Type | Returns | Description |
|
|
199
|
+
| --- | --- | --- | --- |
|
|
200
|
+
| `build` | `(params: ConfigBuild) => webpack.Configuration` | Webpack configuration | Central entry point. Accepts `ConfigWebApp` or `ConfigServer` (discriminated by `type`) and returns a ready-to-export Webpack config for `--config webpack.web.ts` / `webpack.server.ts`. |
|
|
201
|
+
|
|
202
|
+
## File Utilities
|
|
203
|
+
|
|
204
|
+
Small, dependency-free Node.js helpers used internally and exported for reuse in your own build scripts.
|
|
205
|
+
|
|
206
|
+
| Export | Signature | Returns | Description |
|
|
207
|
+
| --- | --- | --- | --- |
|
|
208
|
+
| `writeData` | `(file: string, code: string) => boolean` | `true` on success, `false` on empty data or failure | Writes a UTF-8 string to `file` resolved against `process.cwd()`. |
|
|
209
|
+
| `writeJSON` | `(file: string, code: any) => boolean` | `true` on success, `false` on empty data or failure | Serializes a value with `JSON.stringify` and writes it via `writeData`. |
|
|
210
|
+
| `readData` | `(file: string, internal?: boolean) => string` | File contents or `""` on failure | Reads a UTF-8 file. When `internal` is `true`, the path is resolved relative to the package directory instead of `process.cwd()`. |
|
|
211
|
+
| `readJSON` | `(file: string, internal?: boolean) => any` | Parsed JSON or `undefined` on failure | Reads a file via `readData` and parses it as JSON. |
|
|
212
|
+
|
|
213
|
+
## Types
|
|
214
|
+
|
|
215
|
+
| Export | Kind | Description |
|
|
216
|
+
| --- | --- | --- |
|
|
217
|
+
| `Page` | `interface` | A page in `pagesList`: `uri`, `name`, `description`, plus optional `short_name`, `icon`, `iconMaskable`, `shortcut`, `noindex`, `publishDate`, `coverImage`, `coverImageDescription`, `headerHTML`, `menuHTML`, `footerHTML`, `customHTML`, `isPHP`, `keywords` and `canonicalURL`. Drives per-page HTML, SEO tags, shortcuts and sitemap entries. |
|
|
218
|
+
| `PreconnectLink` | `interface` | A `<link rel="preconnect">` entry: `{ href: string; crossorigin?: boolean }`. `crossorigin` defaults to `true`; `preconnectLinks` also accepts a plain URL string. |
|
|
219
|
+
|
|
220
|
+
Additional public types `ConfigBuild`, `ConfigBase`, `ConfigWebApp`, `ConfigServer`, `MetaTags`, `MetaTagsInput` and `WebManifest` are exported from the package source for advanced typing.
|
|
221
|
+
|
|
222
|
+
## Configuration Options
|
|
223
|
+
|
|
224
|
+
### Base options (`ConfigBase`)
|
|
225
|
+
|
|
226
|
+
| Option | Type | Default | Description |
|
|
227
|
+
| --- | --- | --- | --- |
|
|
228
|
+
| `srcDir` | `string` | `src` | Source directory. |
|
|
229
|
+
| `productionDir` | `string` | `public_html` | Build output directory. |
|
|
230
|
+
| `mode` | `"development" \| "production"` | `production` | Webpack mode. |
|
|
231
|
+
| `obfuscateON` | `boolean` | `false` | Enable JavaScript obfuscation. |
|
|
232
|
+
| `minimiseON` | `boolean` | `true` | Enable JS/CSS minification. |
|
|
233
|
+
| `port` | `number` | `3210` | Dev server port. |
|
|
234
|
+
| `maxFileSizeMB` | `number` | `2` | Asset/entry performance budget in MB. |
|
|
235
|
+
| `resolveOptions` | `ResolveOptions` | `{}` | Extra Webpack resolve options. |
|
|
236
|
+
| `licenseText` | `string` | `""` | Banner text prepended to bundles. |
|
|
237
|
+
| `openAnalyzer` | `boolean` | `false` | Open the bundle analyzer window. |
|
|
238
|
+
| `includeServerModules` | `boolean` | `false` | Bundle `node_modules` into server output instead of externalizing. |
|
|
239
|
+
|
|
240
|
+
### Web app options (`ConfigWebApp`)
|
|
241
|
+
|
|
242
|
+
| Option | Type | Required | Description |
|
|
243
|
+
| --- | --- | --- | --- |
|
|
244
|
+
| `websiteName` | `string` | yes | Application name. |
|
|
245
|
+
| `websiteDomain` | `string` | yes | Domain used for canonical URLs, sitemap and Open Graph. |
|
|
246
|
+
| `appShortName` | `string` | yes | Manifest short name. |
|
|
247
|
+
| `twitterUserName` | `string` | yes | Twitter handle for `twitter:site`. |
|
|
248
|
+
| `publishedTime` | `string` | yes | Publication timestamp (ISO 8601). |
|
|
249
|
+
| `author` | `string` | yes | Site author meta tag. |
|
|
250
|
+
| `websiteTitle` | `string` | yes | Default title / slogan. |
|
|
251
|
+
| `websiteDescription` | `string` | yes | Default meta description. |
|
|
252
|
+
| `coverImage` | `string` | yes | Social cover image (Open Graph / Twitter). |
|
|
253
|
+
| `coverImageDescription` | `string` | yes | Cover image alt text. |
|
|
254
|
+
| `background_color` | `string` | yes | Manifest background color. |
|
|
255
|
+
| `theme_color` | `string` | yes | Manifest/`theme-color`. |
|
|
256
|
+
| `appIcon` | `string` | yes | App icon path. |
|
|
257
|
+
| `appIconMaskable` | `string` | yes | Maskable icon path. |
|
|
258
|
+
| `fav_icon` | `string` | yes | Favicon path. |
|
|
259
|
+
| `orientation` | `"portrait" \| "landscape"` | yes | Screen orientation. |
|
|
260
|
+
| `pagesList` | `Page[]` | yes | Pages to generate. |
|
|
261
|
+
| `htmlCommonElements` | `("header"\|"footer"\|"menu")[]` | no | Shared HTML partials to inject. |
|
|
262
|
+
| `assetsDir` | `string` | yes | Assets directory. |
|
|
263
|
+
| `commonDir` | `string` | yes | Shared code/HTML directory. |
|
|
264
|
+
| `imagesDir` | `string` | yes | Images directory. |
|
|
265
|
+
| `pagesDir` | `string` | yes | Pages directory. |
|
|
266
|
+
| `pageHome` | `string` | yes | Home page identifier. |
|
|
267
|
+
| `htaccessCustom` | `string` | yes | Appended to generated `.htaccess`. |
|
|
268
|
+
| `startURI` | `string` | no | PWA `start_url`. |
|
|
269
|
+
| `language` | `string` | no | Open Graph locale. |
|
|
270
|
+
| `preconnectLinks` | `(string \| PreconnectLink)[]` | no | Origins to `preconnect`, CORS on by default. |
|
|
271
|
+
| `cssDiscardUnused` | `boolean` | no | Discard unused CSS. |
|
|
272
|
+
| `updateServiceWorker` | `boolean` | no | Re-version the service worker on build. |
|
|
273
|
+
| `onlineIndicatorFile` | `string` | no | Reference file used by the service worker. |
|
|
274
|
+
|
|
275
|
+
### Server options (`ConfigServer`)
|
|
276
|
+
|
|
277
|
+
| Option | Type | Required | Description |
|
|
278
|
+
| --- | --- | --- | --- |
|
|
279
|
+
| `type` | `"server"` | yes | Selects the Node.js target. |
|
|
280
|
+
| `srcDir` | `string` | yes | Server source directory (e.g. `server`). |
|
|
281
|
+
| `productionDir` | `string` | yes | Server output directory (e.g. `server_build`). |
|
|
282
|
+
| `filesList` | `string[]` | yes | Entry names, each compiled from `./<srcDir>/<name>.ts`. |
|
|
283
|
+
| `includeServerModules` | `boolean` | no | Bundle dependencies instead of externalizing them. |
|
|
284
|
+
|
|
285
|
+
## FAQ
|
|
286
|
+
|
|
287
|
+
**What is `@degreesign/webapp`?**
|
|
288
|
+
A Webpack + TypeScript build toolkit that turns one typed config object into a production-ready Progressive Web App and/or Node.js server bundle, including SEO metadata, a PWA manifest, service worker, sitemap and security headers.
|
|
289
|
+
|
|
290
|
+
**Is it free?**
|
|
291
|
+
Yes. It is open source under the MIT License and free to use in personal and commercial projects.
|
|
292
|
+
|
|
293
|
+
**Does it work with Node.js and the browser?**
|
|
294
|
+
It is a Node.js build-time tool. `build()` and the file helpers run in Node.js (18+) during your build. The generated output — HTML, JS, CSS, manifest and service worker — is what runs in the browser.
|
|
295
|
+
|
|
296
|
+
**Does it have dependencies?**
|
|
297
|
+
Yes. It wraps and configures Webpack plugins such as `terser-webpack-plugin`, `clean-webpack-plugin`, `copy-webpack-plugin`, `html-webpack-plugin`, `mini-css-extract-plugin`, `css-minimizer-webpack-plugin`, `sitemap-webpack-plugin`, `webpack-obfuscator` and `webpack-bundle-analyzer`. Install it alongside `webpack`, `webpack-cli`, `typescript` and `ts-loader`.
|
|
298
|
+
|
|
299
|
+
**Does it support TypeScript?**
|
|
300
|
+
Yes. It ships type definitions, compiles TypeScript via `ts-loader`, and exposes fully typed configuration (`ConfigBuild`, `ConfigWebApp`, `ConfigServer`, `Page`, `PreconnectLink`).
|
|
301
|
+
|
|
302
|
+
**Which frameworks does it support?**
|
|
303
|
+
It is framework-agnostic. Any framework that compiles to a Webpack entry (React, Vue, Svelte, Preact, vanilla TypeScript, etc.) can be used; the package handles bundling, assets, PWA and SEO concerns rather than UI.
|
|
304
|
+
|
|
305
|
+
**Can I use it for a Node.js back-end?**
|
|
306
|
+
Yes. Set `type: "server"` with `filesList` to bundle one or more Node.js entry files, with `node_modules` externalized by default.
|
|
307
|
+
|
|
308
|
+
**Can I disable minification or enable obfuscation?**
|
|
309
|
+
Yes. Toggle `minimiseON` and `obfuscateON` in the config.
|
|
310
|
+
|
|
311
|
+
**Where does the build output go?**
|
|
312
|
+
Web builds default to `public_html/` and server builds to `server_build/`; both are configurable via `productionDir`.
|
|
313
|
+
|
|
314
|
+
## Keywords
|
|
315
|
+
|
|
316
|
+
webpack, webpack config, webpack 5, typescript, ts-loader, progressive web app, PWA, web app, PWA boilerplate, web app template, build tool, bundler, node.js server bundling, SEO, meta tags, open graph, twitter cards, sitemap, robots.txt, service worker, web manifest, app manifest, code obfuscation, webpack-bundle-analyzer, static site, front-end build, degreesign.
|
|
192
317
|
|
|
193
318
|
## License
|
|
194
|
-
|
|
319
|
+
|
|
320
|
+
This project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"license": "MIT",
|
|
3
3
|
"name": "@degreesign/webapp",
|
|
4
|
-
"version": "1.7.
|
|
4
|
+
"version": "1.7.5",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -10,8 +10,33 @@
|
|
|
10
10
|
},
|
|
11
11
|
"keywords": [
|
|
12
12
|
"webpack",
|
|
13
|
-
"
|
|
14
|
-
"
|
|
13
|
+
"webpack-config",
|
|
14
|
+
"webpack-5",
|
|
15
|
+
"typescript",
|
|
16
|
+
"ts-loader",
|
|
17
|
+
"progressive-web-app",
|
|
18
|
+
"pwa",
|
|
19
|
+
"web-app",
|
|
20
|
+
"pwa-boilerplate",
|
|
21
|
+
"web-app-template",
|
|
22
|
+
"build-tool",
|
|
23
|
+
"bundler",
|
|
24
|
+
"nodejs",
|
|
25
|
+
"server-bundling",
|
|
26
|
+
"seo",
|
|
27
|
+
"meta-tags",
|
|
28
|
+
"open-graph",
|
|
29
|
+
"twitter-cards",
|
|
30
|
+
"sitemap",
|
|
31
|
+
"robots-txt",
|
|
32
|
+
"service-worker",
|
|
33
|
+
"web-manifest",
|
|
34
|
+
"app-manifest",
|
|
35
|
+
"code-obfuscation",
|
|
36
|
+
"webpack-bundle-analyzer",
|
|
37
|
+
"static-site",
|
|
38
|
+
"front-end-build",
|
|
39
|
+
"degreesign"
|
|
15
40
|
],
|
|
16
41
|
"repository": {
|
|
17
42
|
"type": "git",
|
|
@@ -19,35 +44,35 @@
|
|
|
19
44
|
},
|
|
20
45
|
"author": "DegreeSign",
|
|
21
46
|
"homepage": "https://degreesign.com",
|
|
22
|
-
"description": "
|
|
47
|
+
"description": "Webpack + TypeScript build toolkit for production-ready Progressive Web Apps (PWA) and Node.js servers, generating SEO meta tags, manifest, service worker, sitemap and obfuscation from one config.",
|
|
23
48
|
"bugs": {
|
|
24
49
|
"url": "https://github.com/DegreeSign/ds_webapp/issues"
|
|
25
50
|
},
|
|
26
51
|
"dependencies": {
|
|
27
|
-
"@types/node": "^22.
|
|
52
|
+
"@types/node": "^22.20.2",
|
|
28
53
|
"@types/webpack-bundle-analyzer": "^4.7.0",
|
|
29
54
|
"@types/webpack-node-externals": "^3.0.4",
|
|
30
55
|
"clean-webpack-plugin": "^4.0.0",
|
|
31
|
-
"copy-webpack-plugin": "^
|
|
32
|
-
"css-loader": "^7.1.
|
|
33
|
-
"css-minimizer-webpack-plugin": "^
|
|
34
|
-
"dotenv": "^
|
|
56
|
+
"copy-webpack-plugin": "^14.0.0",
|
|
57
|
+
"css-loader": "^7.1.5",
|
|
58
|
+
"css-minimizer-webpack-plugin": "^8.0.0",
|
|
59
|
+
"dotenv": "^17.4.2",
|
|
35
60
|
"html-inline-css-webpack-plugin": "^1.11.2",
|
|
36
|
-
"html-webpack-plugin": "^5.6.
|
|
37
|
-
"javascript-obfuscator": "^
|
|
38
|
-
"mini-css-extract-plugin": "^2.
|
|
61
|
+
"html-webpack-plugin": "^5.6.8",
|
|
62
|
+
"javascript-obfuscator": "^5.7.0",
|
|
63
|
+
"mini-css-extract-plugin": "^2.10.2",
|
|
39
64
|
"node-loader": "^2.1.0",
|
|
40
65
|
"sitemap-webpack-plugin": "^1.1.1",
|
|
41
|
-
"terser-webpack-plugin": "^5.
|
|
42
|
-
"ts-loader": "^9.
|
|
66
|
+
"terser-webpack-plugin": "^5.6.1",
|
|
67
|
+
"ts-loader": "^9.6.2",
|
|
43
68
|
"ts-node": "^10.9.2",
|
|
44
|
-
"typescript": "^5.
|
|
45
|
-
"webpack": "^5.
|
|
46
|
-
"webpack-bundle-analyzer": "^
|
|
47
|
-
"webpack-cli": "^
|
|
48
|
-
"webpack-dev-server": "^
|
|
69
|
+
"typescript": "^5.9.3",
|
|
70
|
+
"webpack": "^5.110.3",
|
|
71
|
+
"webpack-bundle-analyzer": "^5.3.3",
|
|
72
|
+
"webpack-cli": "^7.2.3",
|
|
73
|
+
"webpack-dev-server": "^6.0.0",
|
|
49
74
|
"webpack-node-externals": "^3.0.0",
|
|
50
|
-
"webpack-obfuscator": "^3.
|
|
75
|
+
"webpack-obfuscator": "^3.6.1"
|
|
51
76
|
},
|
|
52
77
|
"files": [
|
|
53
78
|
"dist/"
|