summaryrefslogtreecommitdiff
path: root/docs/examples/manage_dependencies.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/examples/manage_dependencies.md')
-rw-r--r--docs/examples/manage_dependencies.md56
1 files changed, 56 insertions, 0 deletions
diff --git a/docs/examples/manage_dependencies.md b/docs/examples/manage_dependencies.md
new file mode 100644
index 000000000..142d66bac
--- /dev/null
+++ b/docs/examples/manage_dependencies.md
@@ -0,0 +1,56 @@
+# Managing Dependencies
+
+In Deno there is no concept of a package manager as external modules are
+imported directly into local modules. This raises the question of how to manage
+remote dependencies without a package manager. In big projects with many
+dependencies it will become cumbersome and time consuming to update modules if
+they are all imported individually into individual modules.
+
+The standard practice for solving this problem in Deno is to create a `deps.ts`
+file. All required remote dependencies are referenced in this file and the
+required methods and classes are re-exported. The dependent local modules then
+reference the `deps.ts` rather than the remote dependencies.
+
+This enables easy updates to modules across a large codebase and solves the
+'package manager problem', if it ever existed. Dev dependencies can also be
+managed in a separate `dev_deps.ts` file.
+
+**deps.ts example**
+
+```ts
+/**
+ * deps.ts re-exports the required methods from the remote Ramda module.
+ **/
+export {
+ add,
+ multiply,
+} from "https://x.nest.land/ramda@0.27.0/source/index.js";
+```
+
+In this example the same functionality is created as is the case in the
+[local and remote import examples](./import_export.md). But in this case instead
+of the Ramda module being referenced directly it is referenced by proxy using a
+local `deps.ts` module.
+
+**Command:** `deno run dependencies.ts`
+
+```ts
+import {
+ add,
+ multiply,
+} from "./deps.ts";
+
+function totalCost(outbound: number, inbound: number, tax: number): number {
+ return multiply(add(outbound, inbound), tax);
+}
+
+console.log(totalCost(19, 31, 1.2));
+console.log(totalCost(45, 27, 1.15));
+
+/**
+ * Output
+ *
+ * 60
+ * 82.8
+ */
+```