@hypernym/bundler 0.6.2 → 0.7.0

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/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2023 Ivo Dolenc, Hypernym Studio
3
+ Copyright (c) 2024 Ivo Dolenc, Hypernym Studio
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -21,7 +21,8 @@ npm i -D @hypernym/bundler
21
21
 
22
22
  1. Create a `bundler.config.ts` file at the root of your project:
23
23
 
24
- > **Note**
24
+ > [!NOTE]
25
+ >
25
26
  > Configuration also accepts `.js`, `.mjs`, `.ts`, `.mts` formats.
26
27
 
27
28
  ```ts
@@ -258,6 +259,28 @@ export default defineConfig({
258
259
  })
259
260
  ```
260
261
 
262
+ ### alias
263
+
264
+ - Type: `true`
265
+ - Default: `undefined`
266
+
267
+ Specifies global path alias support.
268
+
269
+ If true, it enables import prefixes:
270
+
271
+ - `@/*`
272
+ - `~/*`
273
+
274
+ ```ts
275
+ // Imports module from './src/utils/index.js'
276
+ import { module } from '@/utils/index.js'
277
+
278
+ // or
279
+
280
+ // Imports module from './src/utils/index.js'
281
+ import { module } from '~/utils/index.js'
282
+ ```
283
+
261
284
  ## CLI
262
285
 
263
286
  ### Custom Config
@@ -270,11 +293,13 @@ npx hyperbundler --config my.config.js
270
293
 
271
294
  ## Community
272
295
 
273
- Feel free to use the official [discussions](https://github.com/hypernym-studio/bundler/discussions) for any additional questions.
296
+ Feel free to ask questions or share new ideas.
297
+
298
+ Use the official [discussions](https://github.com/hypernym-studio/bundler/discussions) to get involved.
274
299
 
275
300
  ## License
276
301
 
277
- Developed in 🇭🇷 Croatia
302
+ Developed in 🇭🇷 Croatia.
278
303
 
279
304
  Released under the [MIT](LICENSE.txt) license.
280
305
 
@@ -14,6 +14,7 @@ import { getLogFilter } from 'rollup/getLogFilter';
14
14
  import _replace from '@rollup/plugin-replace';
15
15
  import _json from '@rollup/plugin-json';
16
16
  import _resolve from '@rollup/plugin-node-resolve';
17
+ import _alias from '@rollup/plugin-alias';
17
18
  import { dts } from 'rollup-plugin-dts';
18
19
  import { createFilter } from '@rollup/pluginutils';
19
20
 
@@ -26,7 +27,7 @@ const externals = [
26
27
  ];
27
28
 
28
29
  const name = "bundler";
29
- const version = `0.6.2`;
30
+ const version = `0.7.0`;
30
31
 
31
32
  const cl = console.log;
32
33
  const logger = {
@@ -188,6 +189,7 @@ function esbuild(options) {
188
189
  const replacePlugin = _replace.default ?? _replace;
189
190
  const jsonPlugin = _json.default ?? _json;
190
191
  const resolvePlugin = _resolve.default ?? _resolve;
192
+ const aliasPlugin = _alias.default ?? _alias;
191
193
  async function build(cwd, options) {
192
194
  const { outDir = "dist", hooks } = options;
193
195
  let start = 0;
@@ -201,6 +203,13 @@ async function build(cwd, options) {
201
203
  await hooks["build:start"](options, buildStats);
202
204
  if (options.entries) {
203
205
  start = Date.now();
206
+ const aliasDir = `${resolve(cwd, "./src")}/`;
207
+ const aliasOptions = {
208
+ entries: [
209
+ { find: /^@\//, replacement: aliasDir },
210
+ { find: /^~\//, replacement: aliasDir }
211
+ ]
212
+ };
204
213
  for (const entry of options.entries) {
205
214
  const entryStart = Date.now();
206
215
  let logFilter = getLogFilter(entry.logFilter || []);
@@ -242,6 +251,9 @@ async function build(cwd, options) {
242
251
  const resolveOptions = isObject(_entry.pluginsOptions.resolve) ? _entry.pluginsOptions.resolve : void 0;
243
252
  _entry.plugins.unshift(resolvePlugin(resolveOptions));
244
253
  }
254
+ if (options.alias) {
255
+ _entry.plugins.unshift(aliasPlugin(aliasOptions));
256
+ }
245
257
  if (hooks?.["build:entry:start"]) {
246
258
  await hooks["build:entry:start"](_entry, buildStats);
247
259
  }
@@ -298,6 +310,9 @@ async function build(cwd, options) {
298
310
  outro: entry.outro,
299
311
  paths: entry.paths
300
312
  };
313
+ if (options.alias) {
314
+ _entry.plugins.unshift(aliasPlugin(aliasOptions));
315
+ }
301
316
  if (hooks?.["build:entry:start"]) {
302
317
  await hooks["build:entry:start"](_entry, buildStats);
303
318
  }
@@ -235,6 +235,24 @@ interface Options {
235
235
  * @default undefined
236
236
  */
237
237
  hooks?: HooksOptions;
238
+ /**
239
+ * Specifies global path alias support.
240
+ *
241
+ * If true, it enables import prefixes:
242
+ *
243
+ * - `@/*`
244
+ * - `~/*`
245
+ *
246
+ * @example
247
+ *
248
+ * ```ts
249
+ * // Imports module from './src/utils/index.js'
250
+ * import { module } from '@/utils/index.js'
251
+ * ```
252
+ *
253
+ * @default undefined
254
+ */
255
+ alias?: true;
238
256
  }
239
257
 
240
258
  interface BuildLogs {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypernym/bundler",
3
- "version": "0.6.2",
3
+ "version": "0.7.0",
4
4
  "author": "Hypernym Studio",
5
5
  "description": "ESM & TS module bundler.",
6
6
  "license": "MIT",
@@ -43,6 +43,10 @@
43
43
  "format": "prettier --config .config/prettier.config.js --write .",
44
44
  "prepublishOnly": "npm run build"
45
45
  },
46
+ "sideEffects": false,
47
+ "engines": {
48
+ "node": ">=v18.0.0"
49
+ },
46
50
  "peerDependencies": {
47
51
  "@types/node": ">=20.0.0",
48
52
  "typescript": ">=5.0.0"
@@ -59,25 +63,23 @@
59
63
  "@hypernym/args": "^0.2.1",
60
64
  "@hypernym/colors": "^1.0.1",
61
65
  "@hypernym/spinner": "^0.2.0",
62
- "@hypernym/utils": "^2.1.0",
63
- "@rollup/plugin-json": "^6.0.1",
66
+ "@hypernym/utils": "^2.3.0",
67
+ "@rollup/plugin-alias": "^5.1.0",
68
+ "@rollup/plugin-json": "^6.1.0",
64
69
  "@rollup/plugin-node-resolve": "^15.2.3",
65
70
  "@rollup/plugin-replace": "^5.0.5",
66
- "esbuild": "^0.19.8",
67
- "rollup": "^4.6.0",
71
+ "esbuild": "^0.19.11",
72
+ "rollup": "^4.9.5",
68
73
  "rollup-plugin-dts": "^6.1.0"
69
74
  },
70
75
  "devDependencies": {
71
76
  "@hypernym/eslint-config": "^2.0.3",
72
77
  "@hypernym/prettier-config": "^2.0.3",
73
- "@hypernym/tsconfig": "^1.1.0",
74
- "@types/node": "^20.10.0",
75
- "eslint": "^8.54.0",
76
- "prettier": "^3.1.0",
77
- "tsx": "^4.5.0",
78
- "typescript": "^5.3.2"
79
- },
80
- "engines": {
81
- "node": ">=v18.0.0"
78
+ "@hypernym/tsconfig": "^1.2.0",
79
+ "@types/node": "^20.11.0",
80
+ "eslint": "^8.56.0",
81
+ "prettier": "^3.2.2",
82
+ "tsx": "^4.7.0",
83
+ "typescript": "^5.3.3"
82
84
  }
83
85
  }