forked from facebook/create-react-app
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add loader for .graphql files (facebook#3909)
* Add graphql loader to webpack config Signed-off-by: petetnt <[email protected]> * Update README.md Signed-off-by: petetnt <[email protected]> * Update react-scripts README.md Signed-off-by: petetnt <[email protected]> * Add graphql jest transform Signed-off-by: petetnt <[email protected]> * Add integration tests, pin versions in package.json Signed-off-by: petetnt <[email protected]> * Tests expect regexp matchers Signed-off-by: petetnt <[email protected]> * Use strict equal test instead Signed-off-by: petetnt <[email protected]> * Escaping is hard Signed-off-by: petetnt <[email protected]> * Add comment for signifying a different file * Update docs * Fix jest config * Remove node_modules exclusion * Update README.md * Inline graphql jest transform Signed-off-by: petetnt <[email protected]> * Update copyright header Signed-off-by: petetnt <[email protected]> * Use .graphql extension only Signed-off-by: petetnt <[email protected]>
- Loading branch information
Showing
11 changed files
with
113 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
// @remove-on-eject-begin | ||
/** | ||
* Copyright (c) 2018-present, Facebook, Inc. | ||
* Copyright (c) 2016 Remind | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
// @remove-on-eject-end | ||
'use strict'; | ||
|
||
const loader = require('graphql-tag/loader'); | ||
|
||
module.exports = { | ||
process(src) { | ||
return loader.call({ cacheable() {} }, src); | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
15 changes: 15 additions & 0 deletions
15
fixtures/kitchensink/src/features/webpack/GraphQLInclusion.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
/** | ||
* Copyright (c) 2018-present, Facebook, Inc. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
import React from 'react'; | ||
import A from './assets/graphql.graphql'; | ||
|
||
export default () => ( | ||
<p id="graphql-inclusion"> | ||
<span>{JSON.stringify(A)}</span> | ||
</p> | ||
); |
17 changes: 17 additions & 0 deletions
17
fixtures/kitchensink/src/features/webpack/GraphQLInclusion.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
/** | ||
* Copyright (c) 2018-present, Facebook, Inc. | ||
* | ||
* This source code is licensed under the MIT license found in the | ||
* LICENSE file in the root directory of this source tree. | ||
*/ | ||
|
||
import React from 'react'; | ||
import ReactDOM from 'react-dom'; | ||
import GraphQLInclusion from './GraphQLInclusion'; | ||
|
||
describe('graphql files inclusion', () => { | ||
it('renders without crashing', () => { | ||
const div = document.createElement('div'); | ||
ReactDOM.render(<GraphQLInclusion />, div); | ||
}); | ||
}); |
5 changes: 5 additions & 0 deletions
5
fixtures/kitchensink/src/features/webpack/assets/graphql.graphql
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
{ | ||
test(test: "test") { | ||
test | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,6 +27,7 @@ You can find the most recent version of this guide [here](https://github.com/fac | |
- [Post-Processing CSS](#post-processing-css) | ||
- [Adding a CSS Preprocessor (Sass, Less etc.)](#adding-a-css-preprocessor-sass-less-etc) | ||
- [Adding Images, Fonts, and Files](#adding-images-fonts-and-files) | ||
- [Adding GraphQL files](#adding-graphql-files) | ||
- [Using the `public` Folder](#using-the-public-folder) | ||
- [Changing the HTML](#changing-the-html) | ||
- [Adding Assets Outside of the Module System](#adding-assets-outside-of-the-module-system) | ||
|
@@ -729,6 +730,34 @@ Please be advised that this is also a custom feature of Webpack. | |
**It is not required for React** but many people enjoy it (and React Native uses a similar mechanism for images).<br> | ||
An alternative way of handling static assets is described in the next section. | ||
|
||
## Adding GraphQL files | ||
|
||
> Note: this feature is available with [email protected] and higher. | ||
If you are using GraphQL, you can **`import` GraphQL files in a JavaScript module**. | ||
|
||
By importing GraphQL queries instead of using a [template tag](https://github.com/apollographql/graphql-tag), they are preprocessed at build time. This eliminates the need to process them on the client at run time. It also allows you to separate your GraphQL queries from your code. You can put a GraphQL query in a file with a `.graphql` extension. | ||
|
||
Here is an example: | ||
|
||
```js | ||
// query.graphql | ||
{ | ||
githubStats(repository: "facebook/react") { | ||
stars | ||
} | ||
} | ||
|
||
// foo.js | ||
|
||
import query from './query.graphql'; | ||
|
||
console.log(query); | ||
// { | ||
// "kind": "Document", | ||
// ... | ||
``` | ||
|
||
## Using the `public` Folder | ||
|
||
>Note: this feature is available with `[email protected]` and higher. | ||
|