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

Explicitly specify ESLint config path for editor plugins in package.json #149

Merged
merged 2 commits into from
Jul 24, 2016
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions scripts/eject.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,11 @@ prompt('Are you sure you want to eject? This action is permanent. [y/N]', functi
});
delete hostPackage.scripts['eject'];

// explicitly specify ESLint config path for editor plugins
hostPackage.eslintConfig = {
extends: "./config/eslint.js",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might be totally wrong, but is it safe to use / since it's possible to be \ on windows? I think path.resolve works cross platform.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @eanplatter, I didn't notice that!

However, path.resolve produces an absolute path which is probably not what we want here (what if the user moves or renames the project folder?).

How about changing it to path.normalize('./') + path.normalize('config/eslint.js')? The first ./ (.\\ on windows) is required since Atom doesn't work without it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@insin could you help to confirm if this is an issue on windows? Thanks!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually think it won't be, Node fs functions treat / in platform independent way. I wrote some unnecessary path.joins in the code before I learned this.

Copy link
Contributor

@insin insin Jul 24, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, / is fine in Node.js as an input path like this.

You only get problems if you're doing path stuff manually with / and you might have a path which has been made "native" by converting it to absolute or relative with path (which is why checking an absolute path with a RegExp can be a gotcha - 🎵 Gotta [\\/] 'Em All, Pathémon 🎵)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome, thanks for clearing that up for me!

};

console.log('Writing package.json');
fs.writeFileSync(
path.join(hostPath, 'package.json'),
Expand Down
5 changes: 5 additions & 0 deletions scripts/init.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ module.exports = function(hostPath, appName, verbose) {
hostPackage.scripts[command] = 'react-scripts ' + command;
});

// explicitly specify ESLint config path for editor plugins
hostPackage.eslintConfig = {
extends: "./node_modules/react-scripts/config/eslint.js",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same question here about /

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

./node_modules/ should be unnecessary, I think. Node resolution means you should be able to start right with react-scripts.

};

fs.writeFileSync(
path.join(hostPath, 'package.json'),
JSON.stringify(hostPackage, null, 2)
Expand Down