gatsby-node.js
μ ES6 μλ°μ€ν¬λ¦½νΈλ₯Ό νμ©νμ§ μμ΅λλ€.
gatsby-node.js
:
import myOnCreatePage from './gatsby/node/onCreatePage';
export const onCreatePage = myOnCreatePage;
gatsby-node.js
λ νΈλμ€νμΌλμ΄μΌ νλ©° gatsby-ssr.js
λλ gatsby-browser.js
μ κ°μ ES6μ νμ©ν΄μΌ ν©λλ€.
μ€λ₯
Error: <root>/gatsby-node.js:1
SyntaxError: Unexpected token import
System:
OS: macOS High Sierra 10.13.6
CPU: x64 Intel(R) Core(TM) i7-6567U CPU @ 3.30GHz
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 8.10.0 - ~/.nvm/versions/node/v8.10.0/bin/node
Yarn: 1.9.4 - /usr/local/bin/yarn
npm: 6.4.1 - ~/.nvm/versions/node/v8.10.0/bin/npm
Browsers:
Chrome: 68.0.3440.106
Firefox: 61.0.2
Safari: 11.1.2
npmPackages:
gatsby: next => 2.0.0-rc.5
gatsby-source-filesystem: next => 2.0.1-rc.1
npmGlobalPackages:
gatsby-cli: 1.1.58
μ΄ νμΌμ node.jsμ μν΄ μ€νλλ―λ‘ μ¬μ© μ€μΈ λ Έλ λ²μ μ΄ μ§μνλ λͺ¨λ λ²μ μ μ§μν©λλ€. λ Έλμμ Es6 λͺ¨λ μ§μμ μ¬μ ν ββwip https://medium.com/@giltayar/native -es-modules-in-nodejs-status-and-future-directions-part-i-ee5ea3001f71μ λλ€.
λλ λν μ΄κ²μ μ€ννκ³ μμ΅λλ€. gatsby-mdx/mdx-renderer
μ μ¬μ©ν΄μΌ νκ³ require
μ¬μ©νλλΌλ νμν νμΌ μ체λ ES6 λͺ¨λ ꡬ문μ μ¬μ©νκ³ μ€λ¨λ©λλ€. gatsby-node.js
κ° babelμ ν΅κ³Όνλλ‘ κ΅¬μ±μ λ³κ²½νλ λ°©λ²μ΄ μμ΅λκΉ? μ μκ²λ λ κΈ΄κΈνμ§λ§ JSXλ₯Ό λ΄λΆμμ μ¬μ©ν μ μλ€λ©΄ λ©μ§ κ²μ
λλ€.
gatsby-node.js
μμ import
/ export
μ§μμ νμ±ννλ λ¨κ³λ 무μμ
λκΉ? .mjs
νμΌμ μ¬μ©νμ¬ λ©μ
μ λ§ν¬λ Medium κ²μλ¬Όμ΄μ§λ§ Gatsbyμμλ μλνμ§ μμ κ² κ°μλ°μ?
μ¬μ©νλ λ°©λ²μ΄ babel-node
λμ node
?
λλ μ΄κ²μ μν΄ esm μ μ¬μ©νκ³ μ§κΈκΉμ§ μλν©λλ€. λ΄κ° ν μΌμ λ€μκ³Ό κ°μ΅λλ€.
esm
( npm i esm
)gatsby-node.js
κ° ν¬ν¨λ λμΌν ν΄λ)μ gatsby-node.esm.js
λΌλ νμΌμ λ§λλλ€.gatsby-node.js
μμ gatsby-node.esm.js
gatsby-node.js
λͺ¨λ μ½λλ₯Ό λ€μμΌλ‘ λ°κΏλλ€.javascript
require = require('esm')(module)
module.exports = require('./gatsby-node.esm.js')
import
μμ gatsby-node.esm.js
λΉμ μ΄ μνλ λͺ¨λ π@KyleAMathews μ΄λ° μμΌλ‘νλ κ²μ΄ μννκ°μ? μμ νλ€λ©΄ λ¬Έμμ μΆκ°ν μ μκΈ° λλ¬Έμ λλ€. :)
μ΄ ν¨ν΄μ @nikoladevμμ νμ€ν μλν©λλ€! λ¬Έμμμ μ΄λλ‘ κ°μ§ νμ€νμ§ μμ΅λλ€. @gatsbyjs/docsμ λν μμ΄λμ΄κ° μμ΅λκΉ?
λ΄κ° ν λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
require('babel-register')({
presets: [ 'env' ]
})
require('babel-polyfill')
module.exports = require(`./gatsby-node.mjs`)
μΆ©λΆν μ λλ κ² κ°κΈ΄ νλ° μΊμκ° μλ§μ΄ λμ§λ μλμ§ κΆκΈν©λλ€. gatsby-node.js
λ₯Ό μμ νλ©΄ μΊμκ° μ¬μ€μ λμ΄μΌ νλ€κ³ μκ°νμ§λ§ κ΄λ ¨μ΄ μλμ§λ λͺ¨λ₯΄κ² μ§λ§ λ¬Έμ κ° λ°μνμ΅λλ€.
@KyleAMathews μ½ν μΈ λ° λ°μ΄ν° μμ± μ μ΄λ»μ΅λκΉ? μ μ΄λ κ·Έκ²μ΄ λ΄κ° κ·Έκ²μ μ¬μ©νλ μ΄μ μ λλ€.
κ·Έκ²μ μΌμ’
μ λ€λ₯Έ λ
Όμμ΄μ§λ§ import
μ¬μ©νλ κΈ°νκ° μ¦μ μ§μλ μ μμ΅λκΉ? λ ν° Gatsby νλ‘μ νΈμ κ²½μ° gatsby-node.js
μμ μΌμ΄λλ μΌμ μ€μ νλ‘ νΈ μλλ§νΌ μ€μνλ©° import
, async/await
λ₯Ό μ¬μ©νμ¬ νλμ μΈ λ°©μμΌλ‘ μ½λ©ν μ μλ€λ κ²μ΄ μ§μ¦λ©λλ€ async/await
λ±.
@KyleAMathews , λ‘컬 ES6 νμΌμ μꡬνλ λ°©λ²μ΄ μμ΅λκΉ? μλ₯Ό λ€μ΄ λ€μκ³Ό κ°μ src/utils/article.js
νμΌμ΄ μμ΅λλ€.
// src/utils/article.js
import { format } from 'date-fns'
export const createArticleUrl = (a) => (
`/${format(a.publishDate, 'YYYY')}` +
`/${format(a.publishDate, 'MM')}` +
`/${format(a.publishDate, 'DD')}` +
`/${a.category.urlSlug}` +
`/${a.urlSlug}`
)
λ΄ gatsby-node.js
νμΌ:
// gatsby-node.js
...
const { createArticleUrl } = require(`./src/utils/article`)
...
κ·Έλ¦¬κ³ μ€λ₯κ° λ°μν©λλ€.
Error: .../src/utils/article.js:1
(function (exports, require, module, __filename, __dirname) { import { format } from 'date-fns'
^^^^^^
SyntaxError: Unexpected token import
μ΄λ€ μμ΄λμ΄? μ΄ ν¨μλ₯Ό μ¬μ©νμ¬ κΈ°μ¬/κ²μλ¬Όμ λν URLμ λ§λ€κ³ React κ΅¬μ± μμμμ νλ κ²μ²λΌ κ°μ Έμ€κ³ μΆμ΅λλ€. κ°μ¬ ν΄μ!
λ€μκ³Ό κ°μ΄ src/utils/article.js
νμΌμμ ES5λ₯Ό μ¬μ©νμ¬ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμμ΅λλ€.
// src/utils/article.js
const { format } = require('date-fns')
var createArticleUrl = function (a) {
return (
`/${format(a.publishDate, 'YYYY')}` +
`/${format(a.publishDate, 'MM')}` +
`/${format(a.publishDate, 'DD')}` +
`/${a.category.urlSlug}` +
`/${a.urlSlug}`
)
}
module.exports.createArticleUrl = createArticleUrl
λ€μκ³Ό κ°μ΄ gatsby-node.js
,
// gatsby-node.js
...
const { createArticleUrl } = require(`./src/utils/article`)
...
ES6 νμΌμμ import { createArticleUrl } from '../utils/article'
μ²λΌ createArticleUrl
λ κ°μ Έμ¬ μ μμ΅λλ€.
λλ μ΄κ²μ μν΄ esm μ μ¬μ©νκ³ μ§κΈκΉμ§ μλν©λλ€. λ΄κ° ν μΌμ λ€μκ³Ό κ°μ΅λλ€.
esm
(npm i esm
)- λ£¨νΈ ν΄λ(
gatsby-node.js
κ° ν¬ν¨λ λμΌν ν΄λ)μgatsby-node.esm.js
λΌλ νμΌμ λ§λλλ€.- λͺ¨λ μ½λλ₯Ό
gatsby-node.js
μμgatsby-node.esm.js
gatsby-node.js
λͺ¨λ μ½λλ₯Ό λ€μμΌλ‘ λ°κΏλλ€.
js require = require('esm')(module) module.exports = require('./gatsby-node.esm.js')
- μ¬μ©
import
μμgatsby-node.js
λΉμ μ΄ μνλ λͺ¨λ π@KyleAMathews μ΄λ° μμΌλ‘νλ κ²μ΄ μννκ°μ? μμ νλ€λ©΄ λ¬Έμμ μΆκ°ν μ μκΈ° λλ¬Έμ λλ€. :)
5λ²μ§Έλ " import
μμ gatsby-node.esm.js
νκ³ μΆμκ±° λ€"μΈκ°μ?
@WeZZard λΉμ μ΄ μμ ν μ³μμ΅λλ€! μ ν¬μ€ν μμ μμ νκ² μ΅λλ€.
μ΄κ²μ΄ μλνλ λ λ€λ₯Έ λ°©λ²μ λ€μκ³Ό κ°μ΄ package.jsonμ μ λ°μ΄νΈνλ κ²μ λλ€.
"scripts": {
"build": "npx --node-arg '-r esm' gatsby build",
"develop": "npx --node-arg '-r esm' gatsby develop",
"start": "npx --node-arg '-r esm' npm run develop",
"serve": "npx --node-arg '-r esm' gatsby serve",
"test": "echo \"Write tests! -> https://gatsby.app/unit-testing\""
},
μ νμΌμ λ§λ€ νμκ° μμ΅λλ€
@reaktivo κ·νμ μ€ν¬λ¦½νΈλ λ‘컬μμ μλνμ§λ§ netlifyμμ μλνλλ‘ ν μ μμμ΅λλ€. npx
λ‘ netlifyμ μ¬μ΄νΈλ₯Ό λ°°ν¬ν μ μμ΅λκΉ?
@rotexhawk λ°©κΈ μμ λ₯Ό νΈμ
https://github.com/reaktivo/gatsby-esm/
https://gatsby-esm-example.netlify.com/
λΉμ μ΄ μ€ννκ³ μλμ§ νμΈ npm install --save-dev esm
μ μ λΉλ μ€μ μ΄ μ€νλλ npm run build
λμ gatsby build
μ΄ μ»€λ°μ νμΈνμμμ€: https://github.com/reaktivo/gatsby-esm/commit/cf620259ac8b118dea38b99409963cb26bf1b240
λλΆμ esmμ μ€μΉνμ΅λλ€. λ¬Έμ λ netlifyκ° npx
λν μ‘μΈμ€ κΆνμ΄ μλ€λ κ²μ
λλ€. λͺ
λ Ήμ΄ μ€ν¨νλ€κ³ λ§ν©λλ€. λ΄ λ
Έλ λ²μ μ μ§μ νμ§λ§ λμμ΄ λμ§ μμμ΅λλ€.
@rotexhawk λ΄κ° λ³΄λΈ νλ‘μ νΈκ° Netlifyμ λ°°ν¬λ κ²μ κ³ λ €νλ©΄ μ λ§ μ΄μν©λλ€... μ΄μ¨λ npx
μ νΌν΄μΌ νλ κ²½μ° λ€μμ΄ μλν μ μμ΅λλ€.
"scripts": {
"build": "node -r esm ./node_modules/bin/gatsby build",
"develop": "node -r esm ./node_modules/bin/gatsby develop",
"start": "npm run develop",
"serve": "node -r esm ./node_modules/bin/gatsby serve",
"test": "echo \"Write tests! -> https://gatsby.app/unit-testing\""
},
@rotexhawk Netlify νμ μ°λ½νμ¬ NPM_VERSIONμ μ§μ ν΄μΌ ν μλ μμ΅λλ€( https://www.netlify.com/docs/build-settings/#node -npm-and-yarn μ°Έμ‘°).
@reaktivo κ° νκ² μ΅λλ€. λͺ¨λ λμμ κ°μ¬λ립λλ€.
Gatsbyλ es6 λͺ¨λμ΄ gatsby-node.js νμΌ λ΄μμ μλν΄μΌ νλ€κ³ νμνκΈ° λλ¬Έμ esm μ κ·Ό λ°©μμ λ¬Έμμ μΆκ°νλ κ²μ κ°λ ₯ν κ³ λ €ν κ²μ λλ€. μ΄ μ€λ₯ λ©μμ§λ λͺ¨λμ νΌν©ν λ μΈμλ©λλ€.
error This plugin file is using both CommonJS and ES6 module systems together which we don't support. You'll need to edit the file to use just one or the other.
es6 λͺ¨λμ μ¬μ©ν μ μμμ λΆλͺ ν λνλ λλ€.
esm
λ μμ¬ μμ
곡κ°μ μ¬μ©ν λ μλνμ§ μλ κ² κ°μ΅λλ€. μμ
κ³΅κ° λͺ¨λμ μ°Ύμ μ μλ€κ³ λμ΅λλ€.
μ€μ λ‘ gatsby-node.ems.js
μ 첫 λ²μ§Έ μμ€ κ°μ Έμ€κΈ°μλ§ μλνλ κ²μ²λΌ 보μ΄μ§λ§ κ°μ Έμ¨ κ΅¬μ± μμλ κ°μ Έμ€λ κ²μ μλλλ€.
μλ₯Ό λ€μ΄,
./gatsby-node.ems.js
import foo from "./foo";
const fooText = foo + " more text";
./ν
import bar from "bar";
const foo = bar("whatever");
export default foo;
μ€λ₯ λ°μ:
Error in "C:\...\gatsby-node.js": Cannot find module 'bar'
λ
Έλ λͺ¨λμ κ±°μκ° μκΈ° λλ¬Έμ, λλ ν¨κ» μ¬μ© λ
Έλμ μ --experimental-modules
λμ esm
.
scripts.start λ₯Ό "node --experimental-modules ./node_modules/.bin/gatsby develop"
λ‘ λ³κ²½νκ³ gatsby-node.js
λ₯Ό gatsby-node.mjs
λ‘ λ³κ²½νμ§λ§
"~/website/gatsby-node.mjs" μ€λ₯: ES λͺ¨λμ λ‘λνλ €λ©΄ κ°μ Έμ€κΈ°λ₯Ό μ¬μ©ν΄μΌ ν©λλ€: ~/website/gatsby-node.mjs
μ€λ₯: [ERR_REQUIRE_ESM]: ES λͺ¨λμ λ‘λνλ €λ©΄ κ°μ Έμ€κΈ°λ₯Ό μ¬μ©ν΄μΌ ν©λλ€. ~/website/gatsby-node.mjs
곡μμ μΌλ‘ μ§μνμ§ μμΌλ©° μ¬κΈ°μ μΈκΈλ ν΄κ²° λ°©λ²μ μ¬κΈ°κΉμ§λ§ κ°λ₯ν©λλ€. ν¨ν€μ§ μ€ μΌλΆκ° μμ§ μ΄ μ€νμ λ Έλ κΈ°λ₯κ³Ό νΈνλμ§ μκ±°λ μλνμ§ μμ μ μμ΅λλ€. μν©μ΄ μμ λλ©΄ μ΄ μ£Όμ λ₯Ό λ€μ μ΄ν΄λ³Ό μ μμ΅λλ€.
μ΄μ ES λͺ¨λμ΄ λ μ΄μ μ€νμ μ΄μ§ μμΌλ―λ‘ μ΄ λ¬Έμ λ₯Ό λ€μ μ΄μ΄μΌ ν©λκΉ?
κ·Έλ€μ μ¬μ ν ββμ€νμ μ΄λ©° μμ ν μμ±λμ§ μμμ΅λλ€. κΉλ°λ§ λΉΌλ©΄
κ·Έλ¬λ ꡬνμ μ¬μ ν ββμ€νμ μ΄λ©° λ³κ²½λ μ μμ΅λλ€.
λλ μ΄κ²μ κΉμ΄ λΉ μ Έ λ€μκ³ , μμ§ κ³ ν΅μ κ°μΉκ° μμ΅λλ€. λ‘λκ° κ΅¬νλ λκΉμ§ κΈ°λ€λ¦¬κ±°λ esm
ν¨ν€μ§λ₯Ό μ¬μ©νμμμ€.
babelμ μ¬μ©νμ¬ μ루μ μ μ°Ύμ μ¬λμ΄ μμ΅λκΉ? λ΄ babel ꡬμ±μ gatsby νλ‘μ νΈμ λλ‘νκ³ λͺ¨λ κ²μ΄ μλνλλ‘ ν μ μλ€λ©΄ μ’μ κ²μ λλ€.
gatsbyλ₯Ό μ¬μ©νμ§λ§ module.exports
λ‘ λμκ°μΌ νλ κ²μ μ λ§ μμ²λ νν΄μ²λΌ λκ»΄μ§λλ€.
Modern web tech without the headache
-> λ³λ‘ :(
npm i esm
κ·Έλ° λ€μ λͺ λ Ήμ λ€μκ³Ό κ°μ΄ μμ ν©λλ€.
https://github.com/wesbos/awesome-uses/blob/master/package.json#L39 -L42
@wesbos @reaktivo μ΅μ κ°μΈ λΉ(μ κ²½μ°μλ 2.22.17)μμ ν΄λΉ μμ μ¬νμ κ³μ μ¬μ©ν μ μμ΅λκΉ?
ν΄λΉ μ루μ μ μ¬μ©νμ¬ λ¬Έμ μμ΄ μλνμ§λ§ μ€λ gatsbyλ₯Ό μ λ°μ΄νΈνκ³ κ°μ Έμ€κΈ° μ€λ₯κ° λ€μ λ°μνκΈ° μμνμ΅λλ€.
```
npx --node-arg '-r esm' κ°μΈ λΉ κ°λ°
μ€λ₯ #10123 ꡬμ±
μ¬μ΄νΈμ gatsby-configλ₯Ό λ‘λνλ λμ μ€λ₯κ° λ°μνμ΅λλ€. μ€λ₯λ₯Ό μμ νκ³ λ€μ μλνμμμ€.
μ€λ₯: /project/gatsby-config.js:1
(ν¨μ(λ΄λ³΄λ΄κΈ°, μꡬ, λͺ¨λ, __filename, __dirname) { "url-join"μμ urlJoin κ°μ Έμ€κΈ°;
^^^^^^
SyntaxError: λͺ¨λ``` μΈλΆμμ import λ¬Έμ μ¬μ©ν μ μμ΅λλ€.
λμ μΌλ‘ gatsby-*
νμΌμ TypeScript λ₯Ό μμ΅λλ€ .
μμ λ΄ esm νΈλ¦μ΄ μλμ λ©μ·μ΅λλ€. μ¬μ§μ΄ κ°μΈ λΉμ λ Έλ λ²μ μ λ‘€λ°±νλλ°λ μ§μλ©λλ€.
κ°μ λ¬Έμ κ° μλ μ¬λμ΄ μμΌλ©΄ μ¬κΈ°μ μμΈν μ€λͺ νμΈμ. https://github.com/reaktivo/gatsby-esm/issues/1
@caycecollins μμ μ¬νμ μ°Ύμμ΅λκΉ?
@wesbos μ§κΈμ es5 requireλ‘ λλμκ°μ΅λλ€. :(
νΈμ§: λ°©κΈ https://github.com/gatsbyjs/gatsby/issues/24925 μμ μ΅μ μμ μ¬νμ λ°κ²¬νμ΅λλ€ ... μλν΄ λ³΄κ² μ΅λλ€!
ν μκ° λμ μ΄κ²μΌλ‘ μ΄λ €μμ κ²ͺμκ³ λ§μΉ¨λ΄ λΉλλ₯Ό μν΄ package.jsonμ 무μμ λ£μλμ§μ κ΄κ³μμ΄ Netlify UI ꡬμ±μ΄ μ°μ νλ€λ κ²μ μμλμ΅λλ€. μ΄κ²μ΄ λͺ λ°±ν΄μ§ κ²μ netlify.tomlμ μΆκ°νκΈ° μ κΉμ§μμ΅λλ€. μ΄μΌκΈ°μ λλ, Netlify UI λΉλ μ€μ μ νΈμ§νκ±°λ μ§μ°κ³ ꡬμ±μ λ²λ¦¬μμμ€. λλ νμλ₯Ό μ νΈνλ€. π
[build]
command = "npm run build"
publish = "public"
μ, μ΄κ²μ΄ μ μκ² ν¨κ³Όμ μ΄λΌλ μ μ μ£Όλͺ©ν κ°μΉκ° μμ΅λλ€.
"build": "NODE_OPTIONS='-r esm' gatsby build",
μ, λ³κ²½μ΄ μ΄λ ΅λ€λ κ²μ μ΄ν΄νμ§λ§ ES λͺ¨λμ μ΄μ Javascriptμ΄λ―λ‘ (μμ ν νλΉν μ΄μ κ° λ¬΄μμ΄λ ) μ μ§ κ΄λ¦¬μκ° _Javascript μ§μμ λ°λνμ¬_ μΈμ°λ κ²μ 보λ κ²μ μ λ§ μ€λ§μ€λ½μ΅λλ€. νΉν JDaltonκ³Ό κ·Έμ esm
ν¨ν€μ§κ° λ무 μ¬μ!
μΆμ : λΉμ μ΄ μμ§ λͺ»ν μλ μλ λͺ κ°μ§ κ΄λ ¨ μΈλΆ μ 보 ...
esm
ν¨ν€μ§μ λν package.json
νλͺ©κ³Ό λ€μ νμ΄ λ©λλ€.require = require("esm")(module/*, options*/)
module.exports = require("./main.js")
μ΄ λͺ¨λμ μ΄λ―Έ Knexμ κ°μ μ£Όμ λΌμ΄λΈλ¬λ¦¬μμ λ리 μ¬μ©λ©λλ€. λ§ κ·Έλλ‘ 135κ° ... μ΄λ―Έ κ·Έκ²μ μμ‘΄νλ _μ²_κ°μ λΌμ΄λΈλ¬λ¦¬κ° μμ΅λλ€!
Lodashμ μ μμκ° μμ±νμΌλ―λ‘ μ΄κ²μ μΌλΆ μ£Όλμ΄ μμ§λμ΄μ 첫 NPM νλ‘μ νΈκ° μλλλ€. λ Έλ ¨ν μ λ¬Έκ°κ° μμ±ν μ§μ§ν λΌμ΄λΈλ¬λ¦¬μ λλ€.
μμ ν μνΈν κ°λ₯ν©λλ€. λκ΅°κ°κ° ESκ° μλ λͺ¨λ μ½λμμ import
λλ export
λ₯Ό μ¬μ©νμ§ μλ ν(κ·Έλ¦¬κ³ λλ μ΄κ²μ΄ νμ΄λΆν° JS κΈμ§ ν€μλμλ€κ³ νμ ν©λλ€) λͺ¨λ κΈ°μ‘΄ μ½λλ κ³μ λμΌνκ² μλν©λλ€.
μ±λ₯ λ¬Έμ κ° μλ κ²½μ° λͺ
λ Ήμ€ μΈμλ₯Ό μ¬μ©νμ¬ μ΄ κΈ°λ₯μ "κ²μ΄νΈ μ μ§"νλ κ²μ΄ λ§€μ° μ½μ΅λλ€(μ knex
λ μ΄ κ²½λ‘λ₯Ό μ ννμ΅λλ€).
κ·Έλμ κ·Έκ²μ "μΈ μ€μ μ½λλ‘ νλμ μΈ μλ°μ€ν¬λ¦½νΈ μΈμ΄ κΈ°λ₯μ μ»μ΅λλ€" λλ ... κ·Έκ²μ μν΄ μΈμ°λ κ²μ λλ€. νν.
κ΄μ¬μ΄ μλ€λ©΄ κΈ°κΊΌμ΄ PRμ μ μΆνκ² μ΅λλ€. :)
λκ΅°κ° μ΅μ’ μ루μ μ μ 곡νκ³ μ΄ μ€λ λλ₯Ό μ κΈ μ μμ΅λκΉ?
λνκ° μ¬μ ν μ§νλκ³ μλ λ§€μ° μ€μνμ§λ§ κ²λ³΄κΈ°μ λ«ν λ¬Έμ μ λν λͺ¨λ λκΈμ νμ΄λ³΄κ³ μ΄λ€ λκΈμ΄ κ°μ₯ λ§μ΄ μΆμ²λκ³ κ°μ₯ μ’μ ν΄κ²°μ± μ΄ λ μ μλμ§ νμΈνκΈ° μν΄ λͺ¨λ λκΈμ νμ΄λ³΄λ μ΄ μΆ€μ μΆλ κ²μ μ«μ΄ν©λλ€. π
λ΄κ° λ§νλ―μ΄, μ΄λ €μ΄ λΆλΆμ μ μλμ§ esm
λͺ¨λ μμ
:μ΄ μΌμ λ§€μ° κ°λ¨νκ² μ€κ³λμμ΅λλ€. Gatsby μν€ν
μ²μ λν΄ μλ κ²μ΄ μλ€λ©΄ μ§μ PRμ μ μΆν κ²μ
λλ€(λ λ€λ₯Έ μ£Όμ λΌμ΄λΈλ¬λ¦¬μμ μ΄λ₯Ό μ¬μ©νλ κ²μ λ³΄λ €λ©΄ Knex λ₯Ό μ°Έμ‘°νμμμ€).
μ΄λ €μ΄ λΆλΆμ κ·Έ μ§μμ κ°μ§ μ μ§ κ΄λ¦¬μλ₯Ό λ보λ κ²μ λλ€ :(
λͺ¨λ μ μ§ κ΄λ¦¬μκ° μ΅μ JS λͺ¨λ ꡬ문μ κ°μΈμ μΌλ‘ μ«μ΄ νλλΌλ μ΅μν μ¬μ©μμ μꡬμ κ°μ¬ν μ μλ€κ³ μκ°ν κ²μ λλ€. λ€μ, μλ§λ λ¨ λ μ€μ μ½λλ‘) κ·Έλ μ§ μμΌλ©΄ μ μν©λλ€. μ΄ νμ΄ λ€λ₯Έ λ¬Έμ μ λν΄ μΌλ§λ νλ₯νλμ§ κ°μν λ μμ§ν μ μκ²λ νΌλμ€λ½μ΅λλ€.
λ΄κ° λ§νλ―μ΄ μ΄λ €μ΄ λΆλΆμ
esm
λͺ¨λμ μλνκ² νλ κ²μ΄ _μλλ€_: μΌμ _맀μ°_ κ°λ¨νκ² νλλ‘ μ€κ³λμμ΅λλ€. Gatsby μν€ν μ²μ λν΄ μλ κ²μ΄ μλ€λ©΄ μ§μ PRμ μ μΆν κ²μ λλ€(λ λ€λ₯Έ μ£Όμ λΌμ΄λΈλ¬λ¦¬μμ μ΄λ₯Ό μ¬μ©νλ κ²μ λ³΄λ €λ©΄ Knex λ₯Ό μ°Έμ‘°νμμμ€).μ΄λ €μ΄ λΆλΆμ κ·Έ μ§μμ κ°μ§ μ μ§ κ΄λ¦¬μλ₯Ό λ보λ κ²μ λλ€ :(
λͺ¨λ μ μ§ κ΄λ¦¬μκ° μ΅μ JS λͺ¨λ ꡬ문μ λν΄ κ°μΈμ μΌλ‘ _μ«μ΄νλ_ κΈ°λ₯μ κ°κ³ μλ€κ³ ν΄λ μ΅μν μ¬μ©μμ μꡬμ κ°μ¬ν μ μλ€κ³ μκ°ν κ²μ λλ€. λ€μ, μλ§λ λ¨ λ μ€μ μ½λλ‘) κ·Έλ μ§ μμΌλ©΄ μ μν©λλ€. μ΄ νμ΄ λ€λ₯Έ λ¬Έμ μ λν΄ μΌλ§λ νλ₯νλμ§ κ°μν λ μμ§ν μ μκ²λ νΌλμ€λ½μ΅λλ€.
μ΄ μ£Όμ μ λν΄ κ΄λ¦¬μλ‘λΆν° νλ§λ λΆνλ립λλ€.
κ°μ₯ μ μ©ν λκΈ
λλ μ΄κ²μ μν΄ esm μ μ¬μ©νκ³ μ§κΈκΉμ§ μλν©λλ€. λ΄κ° ν μΌμ λ€μκ³Ό κ°μ΅λλ€.
esm
(npm i esm
)gatsby-node.js
κ° ν¬ν¨λ λμΌν ν΄λ)μgatsby-node.esm.js
λΌλ νμΌμ λ§λλλ€.gatsby-node.js
μμgatsby-node.esm.js
gatsby-node.js
λͺ¨λ μ½λλ₯Ό λ€μμΌλ‘ λ°κΏλλ€.javascript require = require('esm')(module) module.exports = require('./gatsby-node.esm.js')
import
μμgatsby-node.esm.js
λΉμ μ΄ μνλ λͺ¨λ π@KyleAMathews μ΄λ° μμΌλ‘νλ κ²μ΄ μννκ°μ? μμ νλ€λ©΄ λ¬Έμμ μΆκ°ν μ μκΈ° λλ¬Έμ λλ€. :)