🛒

Shopify App Cli で何ができるか

2020/12/25に公開

前回、shopify-cli をインストールしたので、Shopify App Cli で何ができるかを見ていきます。

shopify connect

パートナーアカウントや特定のShopify開発ストアなど、既存のShopify App CLIプロジェクトをShopifyに接続します。このコマンドは、認証トークンを使用してプロジェクトの.envファイルを再作成します。

これは、1つのプロジェクトを複数のコンピュータにまたがって作業している場合や、gitのようなバージョン管理システムを使って他の開発者と共同作業をしている場合に便利です。

shopify create

指定したタイプの新規プロジェクトを作成します。プロジェクトは、現在のディレクトリのサブディレクトリに作成されます。

createコマンドを単独で実行すると、CLIでプロジェクトの種類(Node.js または Ruby on Rails)を選択するように促されます。↑ ↓キーで選択し、Enter。

$ shopify create
? What type of project would you like to create? (Choose with ↑ ↓ ⏎, filter with 'f')
> 1. Node.js App
  2. Ruby on Rails App

また、サブコマンドで作成するアプリの種類を指定することもできます。
Node.js アプリの場合

$ shopify create node

Ruby on Rails アプリの場合

$ shopify create rails

タイプを指定すると、Shopify App CLIはスキップしてプロジェクトの名前を入力するように促されます。ここで入力した名前が プロジェクトのディレクトリ名となります。

$ shopify create node
? App Name
> 

shopify serve

ngrok を使って、shopify と ローカル環境を接続し、ローカル開発サーバーを起動します。
オプションとしてホストを設定することができます。

shopify serve --host=HOST

実行中のトンネルをバイパスして、カスタムホストを使用します。HOSTはHTTPS urlでなければなりません。

shopify open

デフォルトのブラウザでローカル開発アプリを開きます。

shopify populate [ customers | draftorders | products ]

Shopify開発ストアに顧客、注文、または製品の例(ダミーのデータ)を入力します。
オプションとして以下を設定することができます。

  --count 数字: 入力するダミー項目の数を指定します。デフォルトは5です
  --silent: ダミー項目を表示しません
  --help: 各サブコマンドに固有のオプションをさらに表示します。

例えば、以下のように使用します。
開発ストアに30人の顧客を追加する

$ shopify populate customers --count 30

開発ストアに5つの追加注文を入れる

$ shopify populate draftorders

shopify generate [ billing | page | webhook ]

Node プロジェクトでコードを生成します。新しい課金APIコール、新しいページ、または新しいウェブフックの生成をサポートします。

shopify generate billing [ one-time-billing | recurring-billing ]

アプリの課金を有効にします。このコマンドは、Shopifyの課金APIを呼び出すために必要なコードを生成します。

shopify generate page <pagename>

指定した名前でアプリ内に新しいページを生成します。新しいファイルは、プロジェクトの /pagesディレクトリ内に生成されます。

shopify generate webhook <type>

指定したShopifyストアイベントをリスンする新しいWebhookを生成して登録します。

ストアで新しい製品が作成されるたびに呼び出される新しいウェブフックを生成して登録するには、以下のようにします。

$ shopify generate webhook PRODUCTS_CREATE

shopify deploay

現在のNodeプロジェクトをホスティングサービスにデプロイします。現在は Heroku が唯一の選択肢ですが、将来的にはもっと多くの選択肢が追加される、とのことです。

shopify logout

現在認証されているパートナー組織とストアからログアウトします。logoutコマンドは、無効な資格情報をクリアします。次回、プロジェクトをShopifyに接続する際には、再認証が必要になります。

shopify config

Shopify App CLIのオプションを設定します。現在は以下の2つのオプションがあります。

analytics

analytics を有効または無効にすることで、匿名の使用報告を設定します。

$ shopify config analytics [ --status | --enable | --disable ]

feature

CLIでアクティブな機能セットを構成します。このコマンドは、CLIツール自体の開発やデバッグ作業に使用します。何をしているか分かっている場合のみ変更してください。詳細については、Shopify App CLI開発ガイドを確認してください。

$ shopify config feature [ feature_name ] [ --status | --enable | --disable ]

shopify help

利用可能なコマンドを一覧表示し、そのコマンドで何ができるかを表示します。利用可能なコマンドは、プロジェクトディレクトリの中にいるかどうか、プロジェクトの種類によって異なります。
以下の3つのコマンドは同じ結果を表示します。

$ shopify help
$ shopify -h
$ shopify --help

また、ヘルプコマンドやオプションを使用して、特定のコマンドに関するより詳細な情報を得ることもできます。

$ shopify help [command]
$ shopify [command] -h
$ shopify [command] --help

例えば、

$ shopify help create
Create a new project.
  Usage: shopify create [ node | rails ]

shopify create node: Creates an embedded nodejs app.
  Usage: shopify create node
  Options:
    --name=NAME App name. Any string.
    --app_url=APPURL App URL. Must be a valid URL.
    --organization_id=ID Partner organization ID. Must be an existing organization.
    --shop_domain=MYSHOPIFYDOMAIN  Development store URL. Must be an existing development store.

shopify create rails: Creates a ruby on rails app.
  Usage: shopify create rails
  Options:
    --name=NAME App name. Any string.
    --app_url=APPURL App URL. Must be a valid URL.
    --organization_id=ID Partner organization ID. Must be an existing organization.
    --shop_domain=MYSHOPIFYDOMAIN  Development store URL. Must be an existing development store.
    --db=DB Database type. Must be one of: mysql, postgresql, sqlite3, oracle, frontbase, ibm_db, sqlserver, jdbcmysql, jdbcsqlite3, jdbcpostgresql, jdbc.
    --rails_opts=RAILSOPTS Additional options. Must be string containing one or more valid Rails options, separated by spaces.

なるほど、shopify create nodeには以下のようなオプションがあることがわかます。

$ shopify create node --name=NAME --app_url=APPURL --organization_id=ID --shop_domain=MYSHOPIFYDOMAIN

Discussion