docs.sheetjs.com/docz/docs/02-getting-started/01-installation/06-deno.md

131 lines
4.2 KiB
Markdown
Raw Normal View History

2022-05-16 03:26:04 +00:00
---
2022-08-24 23:48:22 +00:00
pagination_prev: getting-started/index
pagination_next: getting-started/example
2022-08-31 06:46:03 +00:00
sidebar_position: 6
2022-05-16 03:26:04 +00:00
sidebar_custom_props:
summary: Import ECMAScript Modules and TypeScript definitions
---
import current from '/version.js';
2022-11-08 23:16:40 +00:00
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
2022-05-16 03:26:04 +00:00
# Deno
2022-11-08 23:16:40 +00:00
Module scripts and type definitions are available at <https://cdn.sheetjs.com/>.
2022-05-16 03:26:04 +00:00
Using the URL imports, `deno run` will automatically download scripts and types:
<pre><code parentName="pre" {...{"className": "language-ts"}}>{`\
// @deno-types="https://cdn.sheetjs.com/xlsx-${current}/package/types/index.d.ts"
import * as XLSX from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs';`}
</code></pre>
2022-06-05 22:43:44 +00:00
The `@deno-types` comment instructs Deno to use the type definitions.
2022-05-16 03:26:04 +00:00
2022-11-08 23:16:40 +00:00
:::caution Deno support is considered experimental.
2022-07-06 05:38:24 +00:00
2022-11-08 23:16:40 +00:00
Great open source software grows with user tests and reports. Any issues should
be reported to the Deno project for further diagnosis.
2022-07-06 05:38:24 +00:00
:::
2022-08-26 19:21:53 +00:00
## Encoding support
2022-06-05 22:43:44 +00:00
2022-08-26 19:21:53 +00:00
If Encoding support is required, `cpexcel.full.mjs` must be manually imported:
2022-05-16 03:26:04 +00:00
<pre><code parentName="pre" {...{"className": "language-ts"}}>{`\
/* load the codepage support library for extended support with older formats */
import * as cptable from 'https://cdn.sheetjs.com/xlsx-${current}/package/dist/cpexcel.full.mjs';
XLSX.set_cptable(cptable);`}
</code></pre>
2022-11-08 23:16:40 +00:00
## Node Compatibility Mode
:::caution
Node Compatibility Mode is useful for migrating existing NodeJS scripts to Deno.
It is considered unstable by the platform developers.
For greenfield Deno projects, HTTP imports are strongly recommended.
:::
The ["NodeJS" installation section](/docs/getting-started/installation/nodejs)
includes instructions for installing the NodeJS package.
After installing, the `std/node` require can be used directly:
```ts
/* load the `require` machinery */
import { createRequire } from "https://deno.land/std/node/module.ts";
const require = createRequire(import.meta.url);
/* require the library */
const XLSX = require("xlsx");
```
## Upgrade Notes
Upgrading to the latest version involves changing the import URLs. The import
and the types URLs should be updated at the same time:
<pre><code parentName="pre" {...{"className": "language-diff"}}>{`\
-// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.3/package/types/index.d.ts"
+// @deno-types="https://cdn.sheetjs.com/xlsx-${current}/package/types/index.d.ts"
-import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/xlsx.mjs';
+import * as XLSX from 'https://cdn.sheetjs.com/xlsx-${current}/package/xlsx.mjs';
-import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/dist/cpexcel.full.mjs';
+import * as cptable from 'https://cdn.sheetjs.com/xlsx-${current}/package/dist/cpexcel.full.mjs';
`}
</code></pre>
#### Deno Registry
:::warning
The official Deno registry is out of date. This is a registry bug.
<https://cdn.sheetjs.com/> is the authoritative source for SheetJS scripts.
:::
Applications using the Deno registry can migrate by changing the URLs.
<Tabs>
<TabItem value="v" label="URL with version">
The SheetJS CDN version has no `v`. For example, `v0.18.3` maps to `0.18.3`:
```diff
-// @deno-types="https://deno.land/x/sheetjs@v0.18.3/types/index.d.ts"
+// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.3/package/types/index.d.ts"
-import * as XLSX from 'https://deno.land/x/sheetjs@v0.18.3/xlsx.mjs';
+import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/xlsx.mjs';
-import * as cptable from 'https://deno.land/x/sheetjs@v0.18.3/dist/cpexcel.full.mjs';
+import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/dist/cpexcel.full.mjs';
```
</TabItem>
<TabItem value="nov" label="URL without version">
Version-less imports (`https://deno.land/x/sheetjs/xlsx.mjs`) map to `0.18.3`:
```diff
-// @deno-types="https://deno.land/x/sheetjs/types/index.d.ts"
+// @deno-types="https://cdn.sheetjs.com/xlsx-0.18.3/package/types/index.d.ts"
-import * as XLSX from 'https://deno.land/x/sheetjs/xlsx.mjs';
+import * as XLSX from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/xlsx.mjs';
-import * as cptable from 'https://deno.land/x/sheetjs/dist/cpexcel.full.mjs';
+import * as cptable from 'https://cdn.sheetjs.com/xlsx-0.18.3/package/dist/cpexcel.full.mjs';
```
</TabItem>
</Tabs>