Imports
-> In order for #Deno to resolve a bare specifier like react
or "lodash"
, it needs to be told where to look for it, like its an internal module or a remote url module
[[NodeJS/Index.docs |NodeJS]] and [[NodeJS/NPM_Modules|npm]] use package.json
and the node_modules
folder to do this resolution.
[[Deno_index.docx|Deno]] on the other hand, uses the import map standard
Example
To make an the "lodash" import , we need to configure the deno.json
file like
{
"imports": {
"lodash": "https://esm.sh/lodash@4.17.21",
"lodash_npm": "npm:lodash@4.17",
}
}
-> The deno.json
file is auto-discovered and acts as an import map in your deno projects. Now in you project files you can import in this manner
import {lodash} from "lodash";
import _ from "lodash_npm"
( In the above code snippet both are same modules, this is to show how you can import npm modules and remote modules from deno.json config file )
Overriding Imports
-> The situation where import maps can be very useful is to override imports in specific modules
-> Lets say you want to override the deno_std import from 0.177.0 to the latest in all of your imported modules, but for the https://deno.land/x/example/
module you want to use files in a local patched
directory -> You can do this by using a scope in the import map that looks something like this:
{
"imports":{
"https://deno.land/std@0.177.0/": "https://deno.land/std@0.199.0/"
},
"scopes":{
"https://deno.land/x/example/":{
"https://deno.land/std@0.177.0/": "./patched/"
}
}
}
Important => The import map configuration files are only applied for Deno applications, not in the various libraries that your application code may import.
[[Permissions|Permissions]]
Last updated