Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Why does every component require a package.json? #3

Closed
aakash-stockpile opened this issue Aug 23, 2017 · 6 comments
Closed

Why does every component require a package.json? #3

aakash-stockpile opened this issue Aug 23, 2017 · 6 comments
Labels

Comments

@aakash-stockpile
Copy link

Hello!

Thank you for all your work with this project. I am trying to understand it more thoroughly. Why does every React component require it's own folder and package.json?

@benjaminkimble
Copy link

I could be totally mistaken, but my guess would be to avoid versioning control issues. Any dependency changes for a component might break other components, so giving each component its own separate package.json makes it much easier to manage.

@ersel-ionova
Copy link

I am curious to hear the reason behind this as well. From core devs @xidedix @mrholek

@bobbrady
Copy link

Each component has a package.json for convenience. The import statement for the component only has to specify the directory instead of the directory and the component file.

So instead of this in Full.js:
import Header from '../../components/Header/Header';

You can do this:
import Header from '../../components/Header';

The package.json file includes a main key:value pair that points the import to which file should be loaded by default. The version tracking might be helpful, but I don't see developers as keeping these values up-to-date. Might be better to just keep a separate component repo and tag it with version.

Without the package.json, one would would either name the component file index.js or use the above "double name" import.

@raunaqss
Copy link

Pardon me, I've come to this thread to ask a question regarding this particular way of structuring and importing components.

When I try and structure my components with a separate package.json file with the "main" property referencing the path to the component's file, I always get a syntax error from babel-loader refusing to recognise JSX.

However, when I replace the component file name within its folder as index.js and remove the package.json file, I can import the component using the shorthand as described above without any syntax errors whatsoever.

Any idea why this happens and what I can do to avoid using multiple index.jss even if they're in different folders, I'd prefer having multiple package.json files referencing the main file, but just can't get it to work.

Thanks in advance!

@gerasimoff
Copy link

Pardon me, I've come to this thread to ask a question regarding this particular way of structuring and importing components.

When I try and structure my components with a separate package.json file with the "main" property referencing the path to the component's file, I always get a syntax error from babel-loader refusing to recognise JSX.

However, when I replace the component file name within its folder as index.js and remove the package.json file, I can import the component using the shorthand as described above without any syntax errors whatsoever.

Any idea why this happens and what I can do to avoid using multiple index.jss even if they're in different folders, I'd prefer having multiple package.json files referencing the main file, but just can't get it to work.

Thanks in advance!

I am also interested why it is happening

@woothu
Copy link
Contributor

woothu commented Jun 25, 2020

Package.json files have been removed in v3 version of the template

@woothu woothu closed this as completed Jun 25, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

8 participants