Workspace یک ویژگی قدرتمند است که به شما امکان میدهد فایلهای منبع وبسایت خود را مستقیماً از داخل Chrome DevTools ویرایش کنید و نیازی به جابجایی مداوم بین ویرایشگر کد و مرورگر را از بین ببرید.
نمای کلی
یک فضای کاری در Chrome DevTools فایلهای ارائهشده توسط وب سرور را به فایلهای موجود در یک پوشه محلی در رایانه شما نگاشت میکند. هنگامی که یک فضای کاری را برای یک پروژه محلی فعال می کنید، هر تغییری که در فایل های پنل DevTools' Sources ایجاد می کنید به طور خودکار در فایل های پروژه محلی شما ذخیره می شود. این یک تجربه ویرایش یکپارچه را فراهم می کند، و این احساس را ایجاد می کند که به طور مستقیم بر روی پایگاه کد پروژه خود کار می کنید و در عین حال از بینش بلادرنگ DevTools بهره مند می شوید.
مزایای اتصال خودکار فضای کاری
اتصال خودکار فضای کاری با حذف پیکربندی دستی، تنظیم فضای کاری را بهبود می بخشد. بهجای افزودن دستی پوشههای پروژه به DevTools، سرور توسعه محلی شما میتواند فایل devtools.json
ویژهای را ارائه کند که Chrome DevTools بهطور خودکار شناسایی میکند. این چندین مزیت را ارائه می دهد:
- اشکالزدایی سریعتر: فایلها را در DevTools ویرایش کنید و بدون خروج از مرورگر یا ذخیره دستی بهروزرسانیها را فوراً مشاهده کنید.
- تغییرات در زمان واقعی: تغییرات بلافاصله در فایل های محلی و مرورگر شما منعکس می شود و سرعت توسعه را بهبود می بخشد.
- بدون راهاندازی دستی: نقشهبرداری فایلهای پروژه را خودکار میکند و زمان راهاندازی را کاهش میدهد، بهویژه برای پروژههای جدید یا هنگام حضور اعضای تیم.
اتصال خودکار فضای کاری چگونه کار می کند؟
اتصال خودکار فضای کاری با قرار دادن سرور توسعه محلی شما یک فایل JSON خاص در یک مسیر از پیش تعریف شده کار می کند. هنگامی که Chrome DevTools باز است و شما در حال پیمایش یک وبسایت ارائهشده از localhost
هستید، بهطور خودکار درخواستی را به:
/.well-known/appspecific/com.chrome.devtools.json
اگر سرور شما با یک فایل devtools.json
معتبر پاسخ می دهد، DevTools از اطلاعات موجود در آن برای اتصال خودکار به پوشه های منبع پروژه شما استفاده می کند. فایل devtools.json
معمولاً حاوی:
{
"workspace": {
"root": "/Users/yourname/path/to/your/project",
"uuid": "a-random-version-4-uuid"
}
}
-
workspace.root
: مسیر مطلق به دایرکتوری ریشه پروژه شما در سیستم فایل محلی شما. -
workspace.uuid
: یک شناسه منحصر به فرد (UUID v4) برای پروژه شما. این به DevTools کمک می کند تا بین پروژه های مختلف تمایز قائل شود.
هنگامی که DevTools این فایل را دریافت و پردازش کرد، یک دکمه اتصال را در پنل Sources > Workspaces ارائه می دهد.
برای توسعه محلی و اشکال زدایی طراحی شده است
مکانیسم کشف فضای کاری خودکار از طریق devtools.json
منحصراً برای محیطهای توسعه محلی طراحی شده است و فقط زمانی کار میکند که برنامه شما از localhost
ارائه شود. Chrome DevTools درخواست /.well-known/appspecific/com.chrome.devtools.json
را فقط در حالت توسعه زمانی که در حال اشکالزدایی یک پروژه محلی هستید، ارسال میکند. این ویژگی برای محیط های تولید در نظر گرفته نشده است.
اجازه دسترسی به فایل های محلی را بدهید
به دلایل امنیتی، Chrome برای دسترسی یک وبسایت به فایلهای شبکه محلی یا دستگاه شما، به مجوز صریح کاربر نیاز دارد. وقتی DevTools سعی میکند با استفاده از devtools.json
به پروژه محلی شما متصل شود، از شما خواسته میشود به Chrome اجازه دسترسی به فهرست پروژهتان را بدهید. این درخواست مجوز مطابق با خطمشیهای دسترسی به شبکه محلی Chrome است که درخواستها را از شبکههای عمومی به مقصدهای محلی محدود میکند مگر اینکه مجوز داده شود. امکان درخواست این مجوز محدود به زمینه های امن (HTTPS) است. برای توسعه محلی، این معمولاً به این معنی است که localhost
به عنوان یک زمینه امن در نظر گرفته می شود.
یک فایل devtools.json
ایجاد و سرویس کنید
برای یک پروژه frontend معمولی که روی یک سرور توسعه محلی اجرا می شود، باید سرور خود را پیکربندی کنید تا با محتوای JSON صحیح به درخواست /.well-known/appspecific/com.chrome.devtools.json
پاسخ دهد.
در اینجا نحوه برخورد کلی با این موضوع آمده است:
- یک UUID ایجاد کنید: به UUID v4 نیاز دارید. می توانید با استفاده از ابزارهای آنلاین یا یک اسکریپت یکی را ایجاد کنید.
- تعیین ریشه پروژه: مسیر مطلق به دایرکتوری ریشه پروژه خود را دریافت کنید.
- ایجاد نقطه پایانی: سرور توسعه خود را برای رسیدگی به درخواستهای GET به
/.well-known/appspecific/com.chrome.devtools.json
پیکربندی کنید. - سرویس JSON: هنگامی که این نقطه پایانی ضربه خورد، یک پاسخ JSON با هدر
Content-Type: application/json
و محتوایdevtools.json
ارائه دهید.
مسیر workspace.root
مشخص شده در فایل devtools.json
شما باید یک مسیر مطلق به دایرکتوری ریشه پروژه شما در سیستم فایل محلی باشد. این بدان معناست که مسیر بسته به سیستم عامل شما (به عنوان مثال /Users/yourname/projects/my-app
در macOS یا Linux یا C:\Users\yourname\projects\my-app
در ویندوز) و راه اندازی پروژه خاص شما متفاوت خواهد بود. برای جلوگیری از بررسی این فایل برای محیط تولید، آن را به فایل های نادیده گرفته شده خود اضافه کنید (به عنوان مثال به لیست gitignore.).
مهم است که سرور شما این مسیر را به صورت پویا تولید یا ارائه کند یا اینکه آن را به درستی برای محیط توسعه خود پیکربندی کنید. در نظر بگیرید که آن را به فایل های نادیده گرفته شده خود اضافه کنید (مثلاً به لیست .gitignore
) تا از بررسی این فایل برای محیط تولید خودداری کنید.
نمونه ها
بسته به پشته فناوری پروژه خود، راه های زیادی وجود دارد که می توانید فایل devtools.json
را ارائه دهید.
Node.js و Express
این اسکریپت یک سرور Express حداقل را اجرا می کند. این یک فایل JSON در /.well-known/appspecific/com.chrome.devtools.json
ارائه می دهد که حاوی مسیر projectRoot.
به پوشه ای اشاره می کند که سرور از آنجا اجرا می شود. متغیر projectRoot
طوری تنظیم کنید که به درستی به دایرکتوری ریشه واقعی پروژه شما اشاره کند، نه لزوماً جایی که اسکریپت سرور شما در آن قرار دارد.
const express = require('express');
const path = require('path');
const { v4: uuidv4 } = require('uuid');
const app = express();
const port = 3000;
if (process.env.NODE_ENV !== 'production') {
app.get('/.well-known/appspecific/com.chrome.devtools.json', (req, res) => {
const projectRoot = path.resolve(__dirname);
const workspaceUuid = uuidv4();
res.json({
workspace: {
root: projectRoot,
uuid: workspaceUuid,
},
});
});
}
app.listen(port, () => {
console.log(`Development server listening at http://localhost:${port}`);
});
از اسکریپت devtools-json-generator
استفاده کنید
می توانید generate-devtools-json
برای تولید devtools.json
برای شما استفاده کنید.
برای تولید فایل devtools.json
در دایرکتوری فعلی، اجرا کنید:
npx generate-devtools-json
یا برای تولید فایل در یک دایرکتوری خاص، دایرکتوری را به عنوان آرگومان ارسال کنید:
npx generate-devtools-json /path/to/your/project
اطلاعات بیشتر در مورد devtools-json-generator را در صفحه اصلی پروژه بخوانید.
ادغام ها
برخی از فریمورکها و ابزارهای ساخت، افزونهها یا تنظیماتی را برای سادهسازی این فرآیند ارائه میدهند.
وایت
برای پروژه های مبتنی بر Vite (از جمله SvelteKit)، vite-plugin-devtools-json
یک راه حل است. تولید و سرویس دهی فایل devtools.json
را به صورت خودکار انجام می دهد.
برای استفاده از آن، افزونه را نصب کنید:
npm install -D vite-plugin-devtools-json
سپس، آن را به vite.config.js
(یا vite.config.ts
) خود اضافه کنید:
// vite.config.js
import { defineConfig } from 'vite';
import devtoolsJson from 'vite-plugin-devtools-json';
export default defineConfig({
plugins: [
devtoolsJson({
// Optional: specify a custom root path if different from Vite's root
// root: '/path/to/your/project/root',
}),
],
});
زاویه ای
اگر ng serve
برای اجرای پروژه Angular خود به صورت محلی استفاده می کنید (و نسخه @angular/cli
حداقل 19.0.0 است)، Angular CLI میان افزاری را ارائه می دهد که فایل devtools.json
صحیح را به طور خودکار برای شما ارائه می دهد.
به عنوان مثال، برای ایجاد و اجرای یک برنامه جدید:
npm install -g @angular/cli
ng new my-first-angular-app
ng serve
وقتی به https://localhost:4200/.well-known/appspecific/com.chrome.devtools.json
بروید، می توانید فایل JSON تولید شده را ببینید.
عیب یابی
با رعایت نکاتی که در این بخش آمده است، می توانید مشکلات معمول مربوط به اتصال خودکار فضای کاری را حل کنید.
یک پوشه را از Workspaces حذف کنید
اگر یک پوشه پروژه قبلاً به طور خودکار متصل شده است، می توانید آن را به صورت دستی از تنظیمات فضای کاری DevTools خود حذف کنید:
- Chrome DevTools را باز کنید.
- به تب منابع بروید.
- در پنل سمت چپ، زیر برگه Workspace ها را انتخاب کنید.
- روی پوشه پروژه ناخواسته کلیک راست کرده و Remove from Workspace را انتخاب کنید.
نادیده گرفتن خطاهای 404 در سرور
اگر نمیخواهید از این ویژگی برای پروژه خاصی استفاده کنید و خطاهای 404 برای درخواست /.well-known/appspecific/com.chrome.devtools.json
در گزارشهای سرور خود مشاهده کنید، میتوانید این خطاها را نادیده بگیرید. اگر فایل ارائه نشود، درخواست بی ضرر است. از طرف دیگر، میتوانید سرور خود را پیکربندی کنید تا با وضعیت 404 برای این مسیر خاص بدون ثبت خطا پاسخ دهد.
نحوه غیرفعال کردن این ویژگی در Chrome DevTools
اگر میخواهید ویژگی کشف خودکار فضای کاری را در ابزار توسعهدهنده کروم غیرفعال کنید، باید پرچم Chrome مناسب را تنظیم کنید:
- Chrome را باز کنید و به
chrome://flags
بروید. - " DevTools Project Settings " را جستجو کنید و آن را روی Disabled قرار دهید.
- همچنین ممکن است یک پرچم مرتبط به نام « پوشههای فضای کاری خودکار DevTools » پیدا کنید و میتوانید آن را نیز غیرفعال کنید.
- برای اعمال تغییرات، Chrome را دوباره راه اندازی کنید.
خلاصه
با درک و استفاده از مکانیزم devtools.json
، میتوانید گردش کار توسعه محلی خود را با Chrome DevTools به میزان قابل توجهی افزایش دهید.