@pob/rollup-esbuild 10.2.0 → 11.0.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/README.md CHANGED
@@ -35,3 +35,27 @@ export default createRollupConfig({
35
35
  plugins: [watch && run({ execArgv: ["--enable-source-maps"] })],
36
36
  });
37
37
  ```
38
+
39
+ ## Target-specific files
40
+
41
+ Each env of `pob.envs` resolves a file in this order, `.ts` standing for every
42
+ source extension:
43
+
44
+ | target | resolution order |
45
+ | -------------- | ---------------------------------------------------------------- |
46
+ | `browser` | `.web.target-browser.ts`, `.target-browser.ts`, `.web.ts`, `.ts` |
47
+ | `node` | `.web.target-node.ts`, `.target-node.ts`, `.web.ts`, `.ts` |
48
+ | `react-native` | `.target-react-native.ts`, `.ts` |
49
+
50
+ - `.target-<target>` selects by runtime: put code needing browser globals
51
+ (`window`, `document`, `localStorage`) in `.target-browser` files, and code
52
+ needing Node APIs in `.target-node` files.
53
+ - `.web` selects by platform, as react-native does: the react-native-web
54
+ variant of a component. The `node` build includes it, because its consumer is
55
+ web server rendering (expo-router static output resolves the `node` export on
56
+ the server), which must render the tree the `browser` build hydrates. A `.web`
57
+ file must therefore not touch browser globals outside of effects and event
58
+ handlers.
59
+
60
+ Pass `getExtensions(extensions, env)` to `createRollupConfig` to resolve
61
+ differently.
@@ -15,11 +15,12 @@ export default function createRollupConfig({
15
15
  outDirectory = "dist",
16
16
  pkg = JSON.parse(readFileSync(path.join(cwd, "package.json"))),
17
17
  plugins = [],
18
+ // `.web` is the react-native-web platform: node builds it too, as web server
19
+ // rendering must output the tree the browser build hydrates. Code needing a
20
+ // browser runtime goes in `.target-browser` files.
18
21
  getExtensions = (extensions, { target }) => {
19
- if (target === "browser") {
20
- return extensions.flatMap((ext) => [`.web${ext}`, `${ext}`]);
21
- }
22
- return extensions;
22
+ if (target === "react-native") return extensions;
23
+ return extensions.flatMap((ext) => [`.web${ext}`, `${ext}`]);
23
24
  },
24
25
  }) {
25
26
  const pobConfig = pkg.pob;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pob/rollup-esbuild",
3
- "version": "10.2.0",
3
+ "version": "11.0.0",
4
4
  "description": "rollup configuration with typescript for pob",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/christophehurpeau/pob",