40838
<https://semantic-ui.com/introduction/getting-started.html>

例えば、Semantic UIというライブラリは `npm install`
した際にインストールする項目を選ぶことができたり、質問形式で項目を絞ることができます。

同じような実装をしたいのですが、どのようにすればいいでしょうか？
CC BY-SA 3.0
2018-01-08T12:58:27.590
40818
2018-01-09T09:36:59.573
19687
question
javascript node.js npm
npmに公開したライブラリでカスタムインストールできるようにするには
* `npm install`をパッケージ側でhookして任意のコマンドを呼び出す方法としては、[package.jsonにscripts.install](https://docs.npmjs.com/misc/scripts)を定義しておくものがあります。実際、[Semantic UI](https://github.com/Semantic-Org/Semantic-UI/blob/64e7c8c5de8b009e814bcec082623fe7491eaff8/package.json#L17)もこれを用いているようです。
```     // package.json

    {
        "scripts": {
            "install": "will be invoked by `npm install`"
        },
    }
    
```

質問形式の簡易インストーラ的な実装はnpmとは直接関係ありませんので、自分でスクリプトを書くなり、そうした外部ツールを呼び出すなり、様々な方法が考えられます。[npmでそれらしい言葉を検索すると](https://www.npmjs.com/search?q=interactive+prompt)使えるものが見つかるかもしれません。

  * 当該パッケージにおいて呼び出されている[tasks/install.js](https://github.com/Semantic-Org/Semantic-UI/blob/64e7c8c5de8b009e814bcec082623fe7491eaff8/tasks/install.js#L206)なども参考なるでしょう。ここでは、[glup-prompt](https://github.com/Freyskeyd/gulp-prompt)なるパッケージを用いて[tasks/config/project/install.js](https://github.com/Semantic-Org/Semantic-UI/blob/64e7c8c5de8b009e814bcec082623fe7491eaff8/tasks/config/project/install.js)に定義された質問項目を処理しているようです。

以上中身をなぞっただけですが、ヒント程度になれば幸いです。個別の事項についてはより具体的な質問（たとえば、『glup-
promptがうまくうごかない』など）を検索したり、必要があれば投稿してみると、実用的な回答が得られるかもしれません。
CC BY-SA 3.0
2018-01-09T09:36:59.573
40838
2018-01-09T09:36:59.573
40818
answer