應該是我對 shopify 不夠熟悉 他有些 cmd 功能我不會用的關係
所以變得有點 tricky 但以下是我找到的開發方式
我把 package.json 做了小修改
"deploy": "shopify app deploy --config=shopify.app.production.toml",
"deploy:dev": "shopify app deploy --config=shopify.app.development.toml",
由於 app extension 需要讀取資料庫
我當然希望測試商店讀取的是開發資料庫
這很 tricky 因為 app extension 會部署到 shopify 從官方主機讀取
我這邊分享部分原始碼
function getApiBaseUrl() {
const devShops = [
'akawaselect.myshopify.com',
];
const shop = window.Shopify?.shop;
if (devShops.includes(shop)) {
console.warn("Using development API base URL for Akawa recommendations");
return "https://dev-app.akawaupsell.com";
}
console.warn("Using production API base URL for Akawa recommendations");
return "https://app.akawaupsell.com";
}
function App({ productId }) {
const shop = window.Shopify?.shop;
useEffect(() => {
const baseUrl = getApiBaseUrl();
fetch(`${baseUrl}/api/public/matching-set/${productId}?shop=${shop}`)
有點鳥的做法 但尚可接受
我直接分享我用的 shell script
#!/bin/bash
echo "Start deploying to main server..."
ssh tony-main-server '
set -e # 遇錯即停
export NVM_DIR="$HOME/.nvm" # 加這行,讓 nvm 指令生效
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
echo "Switching Node.js version to 22..."
nvm use 22
echo "Node.js version now:"
node -v
# 部署生產環境
echo "=== Deploying Production Environment ==="
echo "Updating source code for production..."
cd "/home/app.akawaupsell.com" && git pull
echo "Installing dependencies and building for production..."
npm install && npm run build
echo "Running database migrations for production..."
npm run setup
echo "Reloading production pm2 service..."
pm2 restart akawa-upsell-prod
pm2 reset akawa-upsell-prod
# 部署開發環境
echo "=== Deploying Development Environment ==="
echo "Updating source code for development..."
cd "/home/dev-app.akawaupsell.com" && git pull
echo "Installing dependencies and building for development..."
npm install && npm run build
echo "Running database migrations for development..."
npm run setup
echo "Reloading development pm2 service..."
pm2 restart akawa-upsell-dev
pm2 reset akawa-upsell-dev
'
echo "Finish deploying both production and development environments."
我直接用 Neon Postgres 就有內建分別 production/development database
以上 要順暢開發 我認為 還是有相當門檻
老話一句 開發 shopify app 有點困難啊!