.defaultを付けないと動かないのなに?
from .jsをつけて回る
#wip
.defaultを付けないと動かないのなに?
どこを調べればよいのかわからない #??
docsを読みたいけどどこに書いているのかわからない
styled-componentsの例
https://github.com/styled-components/styled-components/issues/3437
https://github.com/styled-components/styled-components/issues/3601
こう書くとエラーになる
code:ts
import styled from 'styled-components';
const Container = styled.div;
こんな感じで書く必要がある
code:ts
import _styled from 'styled-components';
const styled = _styled.default;
const Container = styled.div;
.defaultの中に入っている
styled-components以外のライブラリでも同様のことが起きるものがある
Ajvの例
https://github.com/ajv-validator/ajv/issues/1381
styled-componentsの実装
https://github.com/styled-components/styled-components/blob/6f6db180bd0ec89bd4342dc4b8f1eae0b34d8dca/packages/styled-components/src/index.ts
以下のようにexportされている
code:ts
export { LibraryStyled, Styled, StyledInstance, styled as default, styled };
また、styled-componentsはFake ESMなので実質はCJS
これが生じる条件がわからない
default exportしたら常にこうなる?ってわけじゃないよね
CJS→styled-componentsを、ESM→style-componentsに書き換えたときに起きたmrsekut.icon
CJSのpackageを、ESMから参照している時の固有の話?
それでいてかつCJS側で
exports.default = hoge;と書いている時?
Conditional exports#66f65d2e1982700000abfb2b関連の話でしょうというのはわかる
が、styled-componentsのpackage.jsonには、exportsは明記されていない
根本的になくすためには誰がどう対応する必要がある?
packageの作成者が、ESMに替える、とか
packageの作成者が、exportの方法を変える、
とか?
exports.defaultを自分で書いたことがないんだよなmrsekut.icon
この辺の知識がない
し、今から学ぶモチベもない..
まあ別にそんな困ってはいない
defaultつければいいだけなので