This post was originally published on my blog.
Some days ago I included path aliases in my TypeScript Node.js projects. Since they make the cod...
For further actions, you may consider blocking this person and/or reporting abuse
I've just released a new package Alias HQ, which allows you to reuse your
js/tsconfig.jsonpath aliases in Webpack, Jest, Rollup, or any other library.Just call
hq.get('<library name>')in the config file you want to use aliases in, and you're done:github.com/davestewart/alias-hq
Thanks!
Also I find out that if we have webpack in project we just use
resolve.aliasoption:Thank you! I read several posts about using path aliases and thought it was perfect for my project, but I hit the *cannot find module" issue. I was banging my head off the desk all afternoon. It's been really difficult to find anything on this.
Had an issue with
zeit/pkgbecause the generated files (in thedistfolder) still had the@/dir/to/your/filereferences, which pkg could not handle.In case you need to change your js files from the
@/your-fileback into their../../../your-fileform, you can use ef-tspm to bring it back. Note, if you do so, you won't need to deal with the extra steps for themodule-aliasspecified above. Trade-off is you have an additional build step. So first you wouldtscto build the typescript code, thenef-tspmto properly remove the module aliases.Thanks for sharing!
Thanks for the article!
However, to utilize this solution we have to define the aliases in 2 locations:
tsconfig.jsonandpackage.json. Is it possible to avoid this duplication?You can use:
npmjs.com/package/tsconfig-paths
it much easier
I also kept receiving module_not_found while running ts-node.
The way that worked for me (taken from stackoverflow.com/questions/566507...
In
tsconfig.jsonadd the following section:In order to make the script run on the compiled js (for production distribution), you can defined the following script in
package.json:Don't forget to run
npm i tsconfig-pathsThank you so much! I've probably spent like 6 hours in total trying to get this to work and I finally see the
listening on port 3000log 😁you made my day, thx!
for who wants using
@/*at importings, only insert:"""
"baseUrl": "./",
"paths": {
"@/": ["./src/"]
}
"""
Example: import { authenticateFromGithubCode } from "@/use-cases/authenticate-from-github-code";
I have setup of this with
tsconfig-pathsbut I am getting module not found error when I am running my dist file. Do you have any idea?Did you have a situation where
sharedfolder has its own package.json with node_modules?During compilation
node_modulesare not included in the dist folder, and the compiler is complaining about missing npm modules from thesharedThese aliases -- which I've grown used to on the frontend frameworks which use webpack -- are a VERY welcome addition to writing typescript on the backend (or in other library code). My one question comes down to testing. I have a library with hundreds of tests but right now none of them run because I'm using Mocha/Chai with
ts-nodeand I'm not sure but I think thatts-nodeis not able to use the alias.The command I use is:
This is a pretty standard way of testing as it allows you to test directly on the source rather than needing to transpile before testing.
hi, thanks for your sharing. I've followed step-by-step from the article, but however I can't click to navigate to the path when using alias in my vscode. Normally when I click the path, it goes directly to the path... can you help me with this case? I'm not using typescript, so I can't add tsconfig
How cool is that eh! thanks for posting.
How complex is the folder organization for your source code? I had looked into this but it doesn't have as much value with flatter source-orgs
The complexity of my folder organization depends on the project. Mostly I have some root folders like: config, rest, services that I declare path aliases for. Inside these I have my components for example.
Does VSC automatic imports work with this?
Yes, it does.
For anyone reading this, when updating the tsconfig file, you'll need to add the "baseUrl" and "paths" options inside the "compilerOptions" object :)
Thanks a lot for sharing, I was getting crazy with the issues where modules were not being found.
Hey,
I have followed your tutorial by the letter and even restarted code editor but keep getting the error, no matter what I do
Which error?
the original error that article is about
'module is not found'
I found that using extension to import marketplace.visualstudio.com/items... works good enough and not require much logic.
Thank you!
Hello.
I don't understand how this solution is supposed to work in production.
We don't have a package.json file in production. So how the aliases will be recognized?
The path aliases only play a role during development since the TS code is compiled to JS.
Thank you for sharing this, it was soo helpful.
Thanks for sharing.
I don't get any errors and I don't have to install any npm packages...
I couldn't get the aliases working without first building the project since they are registered using the dist folder. Feels hacky. Is there a way around this ?
marked, thanks!