1 of 14

npmという次世代CPANパッケージマネージャの紹介

id:aereal

2 of 14

自己紹介

  • aereal (えありある)
  • 京都
  • 株式会社はてな

3 of 14

CPANパッケージマネージャー

  • cpan
  • cpanplus
  • cpanminus
  • carton
  • cpm

4 of 14

cpanfile

requires ‘Plack’;

5 of 14

cpanfile

requires ‘Plack’,

git => ‘https://github.com/plack/Plack’,

branch => ‘header-hotfix’;

6 of 14

cpanfile

requires ‘Plack’,

git => ‘https://github.com/plack/Plack’,

branch => ‘header-hotfix’;

7 of 14

いろいろある

  • CPANの仕様でdistごとにfetch先を指定できない
    • CPAN::Meta::Requirements
  • cpanminusはできたのでは?
    • インストールはできるけれどcpanfileには書けない
  • CartonはCPAN::M::Reqsに従ってcpanfile.snapshotを作る
    • = リポジトリ指定はできない
  • (提案は歓迎だそうです)

8 of 14

閑話休題

9 of 14

Gitリポジトリからインストールしたいといえば

npm i -S Microsoft/TypeScript#release-3.3

# npm i -S https://github.com/Microsoft/TypeScript#release-3.3

10 of 14

🤔

✘╹◡╹✘ < tree --noreport -d ./node_modules�./node_modules�└── typescript� ├── bin� └── lib�

11 of 14

npmでGitリポジトリをインストールする要件

  • package.jsonがある
    • optional: 依存があれば*dependenciesに書く

12 of 14

†デモ†�https://gist.github.com/aereal/9672cfa85f839016366e

13 of 14

future work

  • 子孫の依存管理
    • cpanminusがMYMETA.jsonを生成していたはずだから、それに移譲すればいける気がする

14 of 14

See also

  • CPAN Module Hacks - akiym