Galooshi / import-js

A tool to simplify importing JS modules

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Support for jsconfig.json

mnieber opened this issue · comments

When I create an application with "create react app" then it places all source under the /src directory. In that case, imports do not have a "src/" prefix. However, importjs will produce import paths that do have the "src/" prefix. Is it possible to fix this? Or am I doing something wrong?

I thought that one option could be to take the value of compilerOptions.baseUrl in the jsconfig.json file into account when determining the import paths.

I've gotten around it by putting the package.json and node_modules in /src, which doesn't work for create react app...

Should be relatively easy to add to here:
https://github.com/Galooshi/import-js/blob/master/lib/findProjectRoot.js

If you wanted to start a proposal

@mnieber Could you give a more specific example? What's the location of the file you're importing into and what's the location of the file/module you're importing? What did you expect import statements to look like vs what do they end up looking like?

Depending on the scenario here, you could look into using https://github.com/Galooshi/import-js#importstatementformatter.

I've found a solution based on an undocumented feature: the .importjs-root file. Just like package.json this file indicates the root directory for import paths found by importjs. By placing both .importjs-root and .importjs.js in the src directory, I managed to get import paths that do not start with the src/ prefix.
Maybe it's worth documenting .importjs-root?

Unfortunately, my solution (described above) is not adequate because now node_modules is no longer considered.

I know this is an old issue, but this is a feature I'd quite like to see.

A pet peeve of mine is that JavaScript projects always end up with hundreds of config files; and jsconfig has emerged as a bit of a standard.

I'd like to work on a PR, but I'm not experienced with the codebase, and would appreciate any hints as to where to look.

FYI, I'm now using the vandelay plugin in VSCode to generate the import statements. It doesn't have the "Fix all imports" feature that ImportJS has, which is very useful, but otherwise works really well.

commented

I couldn't reproduce this issue. Perhaps it's been solved?

Here's what I did:

mkdir /tmp/test ; cd /tmp/test
npx create-react-app .
echo "export default 'hello'" > src/b.js
echo "console.log(b)" >> src/App.js
importjs fix src/App.js

ImportJS then went ahead and added this line:

import b from "./b.js";

Notice that it did not include the src in the path.

I'll go ahead and close this now as I can't reproduce the issue. However, if you feel I missed something then please go ahead and reopen it and describe how to reproduce step-by-step. Thanks!