Using fresh inside an existing deno folder
I have an existing deno project with deno.jsonc at the root and would like to add a web app as a subfolder. When I do this, vscode picks up the settings from the root deno.jsonc (instead of the one generated by fresh cli), so I see a lot of messages like this: “Relative import path "$std/dotenv/load.ts" not prefixed with / or ./ or ../ and not in import map from”
What’s the recommended way to do this, i.e. to have multiple deno project inside the same root folder?
5 Replies
I’ve tried to do this: merged the contents of my parent deno.jsonc and from the one in fresh subfolder, also changed the start command as described here: https://fresh.deno.dev/docs/examples/changing-the-src-dir
Changing the source directory | Fresh docs
Change the source directory to effectively manage your project.
Seems to be working with lots of deprecation warnings though (1.40.2)
To have multiple Deno projects within the same root folder, you can utilize the feature of partially enabling Deno in a workspace. This allows you to have a mixed Deno project where some workspace folders are Deno-enabled and some are not. This is particularly useful when you have a project with different components, such as a front-end and a back-end, and you want different configurations for each.
Here's what you can do according to the documentation:
1. Create a new workspace or add a folder to an existing workspace: You can organize your project into different folders, each with its own
deno.jsonc
configuration if needed.
2. Configure the settings for each folder: In the settings, you can configure one of the folders to have deno.enable
set to true
and one set to false
. This will ensure that the Deno language server applies diagnostics only to the enabled folders, while the other folder will use the built-in TypeScript compiler of VSCode to supply diagnostics for TypeScript and JavaScript files.
3. Use the Deno: Enable Paths
setting: If you want to enable Deno only for specific sub-paths within a workspace folder, you can use the Deno: Enable Paths
setting (or deno.enablePaths
if manually editing the settings JSON). This allows you to specify which paths should be Deno-enabled.
For your specific case, you can place your web app in a subfolder and enable Deno only for that subfolder. Make sure that the deno.jsonc
file in your web app's subfolder is correctly configured for the Fresh framework, and use the Deno: Enable Paths
setting to point to your web app's subfolder.
Here's an example of how you might structure your project:
```
project/
├── deno.jsonc (root configuration)
├── some_other_deno_project/
│ └── deno.jsonc(specific configuration for this sub-project)
└── web_app/
├── deno.jsonc (Fresh configuration)
└── ... (other Fresh project files)
``
In this structure, you would enable Deno for the
web_app/ directory specifically, and ensure that the settings in
web_app/deno.jsonc` are respected when working within that directory in VSCode.
Remember to check your VSCode workspace settings to ensure that the correct Deno configurations are applied to the respective folders. 🦕In my case, if the path contains a space or a non-ASCII character then it yields this error:
I haven't figured out how to escape those characters.