Node学園 37時限目で話しました。
Node学園 37時限目 オンライン - connpass https://nodejs.connpass.com/event/221358/
参考資料: https://zenn.dev/teppeis/articles/2021-05-corepack
CorepackNodeֶԂ 37࣌ݶ@shisama_Node.jsʹՃ͞ΕΔύοέʔδϚωʔδϟʔϚωʔδϟʔͷ
View Slide
ฏ ণ࢜ / Masashi Hirano@shisama_shisamaNode.js Core Collaborator
CorepackΛNode.jsʹՃ͢ΔPR͕Ϛʔδ🎉https://github.com/nodejs/node/pull/39608
Corepackͱʁ🤔
https://github.com/nodejs/corepack/blob/main/README.mdNodejs͕։ൃɾཧ͍ͯ͠Δπʔϧ
Corepackͱ• ύοέʔδϚωʔδʔΛཧ͢Δπʔϧ• ࠷ॳpmm(package manager manager)ͱ͍͏໊લͩͬͨ• Node.jsΛΠϯετʔϧ͢Δ͚ͩͰɺYarn ͱ pnpm Λ͑ΔΑ͏ʹ͢Δͷ͕Ϟνϕʔγϣϯ• YarnͷϦʔυϝϯςφʔ͕ओʹ։ൃ͍ͯ͠Δ
ͳͥ࡞ΒΕͨʁ🤔
ݱࡏͷύοέʔδϚωʔδϟʔʹؔ͢Δ• npmҎ֎ͷύοέʔδϚωʔδϟʔϢʔβʔ͕ผ్Πϯετʔϧ͠ͳ͚Ε͍͚ͳ͍ɻ ⚠ Node.jsͷόʔδϣϯΛมߋ͢ΔͨͼʹΠϯετʔϧ͕ඞཁͰखؒ• npm Ҏ֎ͷύοέʔδϚωʔδϟ͕༏Ε͍ͯͯɺٕज़తͳཁૉΑΓΠϯετʔϧͷखؒͱ͍ͬͨ୯७͕͞༏ઌ͞Εͯ͠·͏͜ͱ͕͋Δ• ΤίγεςϜͷӨڹྗ͕σϑΥϧτͷnpmʹूத͍ͯ͠Δ
ΛͲ͏ͬͯղܾ͢Δͷ͔ʁ🤔
ࠓͷ͡Ί͔Βٞ͞Ε͍ͯͨhttps://github.com/nodejs/corepack/blob/main/README.md
YarnΛNode.jsʹՃ͑ΔPR͕࡞ΒΕ͕ͨɺରҙݟ͋ͬͨhttps://github.com/nodejs/node/pull/37277
TSCͰථ͕ߦΘΕͯɺCorepackΛՃ͢ΔํͰܾఆhttps://github.com/nodejs/node/pull/37277
ԿΛղܾ͢Δͷ͔ʁ🤔
Yarn ͱ pnpm Λผ్Πϯετʔϧ͠ͳ͍͍ͯ͘• Corepack͕άϩʔόϧʹΠϯετʔϧ͞Ε͍ͯΔڥͰɺYarn ͱpnpmΛผ్Πϯετʔϧ͢Δඞཁ͕ͳ͍• YarnpnpmΛ࣮ߦͨ͠ͱ͖Corepack͕ͦΕΒͷόΠφϦΛμϯϩʔυͯ͘͠ΕΔ• CorepackNode.jsʹඪ४όϯυϧ͞ΕΔ༧ఆͳͷͰɺNode.jsΛΠϯετʔϧ͢Δ͚ͩͰɺYarn ͱ pnpm͑ΔΑ͏ʹͳΔ
Yarn ͱ pnpm Λผ్Πϯετʔϧ͠ͳ͍͍ͯ͘• CorepackΛάϩʔόϧʹΠϯετʔϧ͞Ε͍ͯΔڥͰɺYarn ͱpnpmΛผ్Πϯετʔϧ͢Δඞཁ͕ͳ͍• CorepackNode.jsʹඪ४όϯυϧ͞ΕΔ༧ఆͳͷͰɺNode.jsΛΠϯετʔϧ͢Δ͚ͩͰɺYarn ͱ pnpmΛ͑ΔΑ͏ʹͳΔ/PEFKTΛΠϯετʔϧͨ͠ΓόʔδϣϯΞοϓͨ͠Γ͢Δ࣌ɺ:BSOQOQNΛผ్Πϯετʔϧ͢Δख͕ؒল͚Δ
• package.jsonͷpackageManagerϑΟʔϧυʹϓϩδΣΫτͰར༻͢ΔύοέʔδϚωʔδϟʔͱόʔδϣϯΛهड़͓ͯ͘͠➡ύοέʔδϚωʔδϟΛར༻͢Δͱ͖ʹCorepack͕ͦͷύοέʔδϚωʔδϟʔΛμϯϩʔυͯ͠Ωϟογϡͯ͘͠ΕΔϓϩδΣΫτ͝ͱʹར༻͢ΔύοέʔδϚωʔδϟͱόʔδϣϯΛΓସ͑Δ{"packageManager": "[email protected]"}
• ϓϩδΣΫτͰར༻͢ΔύοέʔδϚωʔδϟʔͱόʔδϣϯΛpackage.jsonʹهड़͓ͯ͘͠➡ύοέʔδϚωʔδϟΛར༻͢Δͱ͖ʹCorepack͕ͦͷύοέʔδϚωʔδϟʔΛμϯϩʔυͯ͠Ωϟογϡͯ͘͠ΕΔϓϩδΣΫτ͝ͱʹύοέʔδϚωʔδϟͱόʔδϣϯΛΓସ͑{"packageManager": "[email protected]"}ύοέʔδϚωʔδϟʔόʔδϣϯΛνʔϜϝϯόʔؒͰ౷ҰͰ͖ͨΓɺΞοϓσʔτͳͲΛ֤ϝϯόʔ͕खಈͰߦΘͳͯ͘Α͘ͳΔɻ
࣮ߦ͢ΔσΟϨΫτϦ͔Β Ұ൪͍ۙpackage.jsonͰఆͨͱ͑…packagespackage-apackage-bsrcpackage.jsonsrcpackage.jsonpackage.json “packageManager”: “[email protected]”“packageManager”: “[email protected]”“packageManager”: “[email protected]”
Ұ൪͍ۙpackage.jsonͰఆͨͱ͑…packagespackage-apackage-bsrcpackage.jsonsrcpackage.jsonpackage.json “packageManager”: “[email protected]”“packageManager”: “[email protected]”“packageManager”: “[email protected]”.POPSFQPͰύοέʔδ͝ͱʹར༻͢ΔύοέʔδϚωʔδϟʔΛม͑Δ͜ͱ͕Ͱ͖ΔɻύοέʔδϚωʔδϟʔͷҠߦόʔδϣϯΞοϓΛ ύοέʔδ୯ҐͰߦ͑Δɻ
ଞͷύοέʔδϚωʔδϟͷར༻Λ੍ݶ͢Δ{"packageManager": "[email protected]"}$ npm installUsage Error: This project is configured to use yarnpackage.jsonʹఆٛͨ͠ύοέʔδϚωʔδϟҎ֎ͷύοέʔδϚωʔδϟΛ͏ͱΤϥʔʹͳΔ
ଞͷύοέʔδϚωʔδϟͷར༻Λ੍ݶ͢Δ{"packageManager": "[email protected]"}$ npm installUsage Error: This project is configured to use yarnPackage.jsonʹఆٛͨ͠ύοέʔδϚωʔδϟҎ֎ͷύοέʔδϚωʔδϟΛ͏ͱΤϥʔʹͳΔؒҧͬͯଞͷύοέʔδϚωʔδϟʔ͕ΘΕΔ͜ͱΛ੍ݶͰ͖ΔɻΤϥʔϝοηʔδΛݟͯͲͷύοέʔδϚωʔδϟʔΛ Θͳ͚Ε͍͚ͳ͍͔Θ͔Δɻ
• Corepackʹఆٛ͞Ε͍ͯΔσϑΥϧτͷόʔδϣϯ͕ΘΕΔ• 2021/08/30࣌Ͱ Yarn1.22.11ɺpnpm6.11.0• σϑΥϧτͷόʔδϣϯΛมߋ͢ΔʹcorepackίϚϯυͰมߋpackage.jsonʹࢦఆ͕ແ͍߹$ corepack prepare [email protected] —activate
• σϑΥϧτͷόʔδϣϯ͕ΘΕΔ• σϑΥϧτͷόʔδϣϯCorepack(config.json)Ͱఆٛ͞Ε͍ͯΔɻ2021/08/30࣌Ͱ Yarn1.22.11ɺpnpm6.11.0• σϑΥϧτͷόʔδϣϯΛมߋ͢ΔʹcorepackίϚϯυͰมߋ `$ corepack parepare [email protected] —activate`ϓϩδΣΫτ͝ͱͷࢦఆ͕ແ͍߹$PSFQBDL͕OQNJOTUBMMHZBSO!ʹ૬͢ΔίϚϯυΛ༻ҙ͍ͯ͠Δ
⚠Corepackͷҙ⚠
⚠Corepackͷҙ⚠• npmΛσϑΥϧτͰαϙʔτ͍ͯ͠ͳ͍• npm install Ͱ Yarn pnpm ΛΠϯετʔϧ͠ͳ͍͜ͱ
npmΛσϑΥϧτͰαϙʔτ͍ͯ͠ͳ͍{"packageManager": “[email protected]”}$ npm -v6.14.15CorepackYarnͱpnpm͚ͩΛαϙʔτɻ αϙʔτ͍ͯ͠ͳ͍ύοέʔδϚωʔδϟʔʹؔͯ͠ɺݩʑΠϯετʔϧ͞Ε͍ͯΔόΠφϦ͕ΘΕΔ
$ corepack enable npm$ npm -v7.0.0$ yarnThis project is configured to use npmDPSFQBDLFOBCMFίϚϯυͰOQNͷTIJNΛ$PSFQBDLͷཧԼʹՃ͢Δ$ corepack disable npm$ npm -v6.14.8DPSFQBDLEJTBCMFίϚϯυͰOQNͷTIJNΛআ͢Δ
طଘͷnpmʹӨڹ͠ͳ͍https://github.com/nodejs/node/pull/39608ݩʑΠϯετʔϧ͞Ε͍ͯΔOQNΛ্ॻ͖͠ͳ͍ɻ͜Ε·Ͱ/PEFKTʹόϯυϧ͞Ε͍ͯΔOQNʹ৮Εͳ͍ܗͰ $PSFQBDL/PEFKTʹՃ͞Ε͍ͯΔɻ
npm install -g yarn ࣮ߦ͠ͳ͍• npm 7Ҏ߱ͩͱɺΠϯετʔϧࡁͷύοέʔδΛ࠶ΠϯετʔϧͰ͖ͳ͍• Yarn ͱ pnpmCorepack͕͢ͰʹΠϯετʔϧ͍ͯ͠ΔͷͰΤϥʔ$ npm install -g yarnnpm ERR! code EEXISTnpm ERR! path /path/to/.nvm/versions/node/v14.15.0/bin/yarnpkgnpm ERR! EEXIST:file already exists• Corepack͕Πϯετʔϧ͢ΔόΠφϦΛ্ॻ͖͠ͳ͍ͨΊʹɺ npm installΛͬͨYarnpnpmͷΠϯετʔϧආ͚ͨ΄͏͕ྑ͍• Ͳ͏࣮ͯ͠ߦ͍ͨ͠߹—forceΛ͚Δ $ npm install -g yarn —force
͍͔ͭΒ͑Δͷʁ🤔
8/25 ʹ CorepackՃͷPR͕Node.jsͷ master ʹϚʔδ͞Εͨhttps://github.com/nodejs/node/pull/39608ϚΠόʔόʔδϣϯͰՃՄೳɻWYͷϦϦʔεͰՃ͞ΕΔ͔
Experimentalͳػೳͱͯ͠ϦϦʔε͞ΕΔ༧ఆhttps://github.com/nodejs/node/blob/master/doc/api/corepack.md
ࠓ͙͍͍ͨ͢ͳΒʁhttps://www.npmjs.com/package/corepackOQNύοέʔδͱͯ͠͞Ε͍ͯΔͷͰɺOQNJOTUBMMHDPSFQBDLͰΠϯετʔϧՄೳ
·ͱΊ• Corepack͕͋Ε…• Yarn pnpm ΛݸผʹΠϯετʔϧ͠ͳͯ͘Α͍• ϓϩδΣΫτ͝ͱʹར༻͢ΔύοέʔδϚωʔδϟͱͦͷόʔδϣϯΛpackage.jsonʹࢦఆ͢Δ͜ͱ͕Ͱ͖Δ• Corepack͕όϯυϧ͞ΕͨNode.js͏͙͢ϦϦʔε͞ΕΔ͔
https://zenn.dev/teppeis/articles/2021-05-corepackࢀߟࢿྉ
Thanks.@shisama_shisama