{"id":10863,"date":"2023-03-08T12:27:38","date_gmt":"2023-03-08T08:57:38","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/well-lets-go-to-implement-linter-to-project-2o6j\/"},"modified":"2023-03-08T12:27:38","modified_gmt":"2023-03-08T08:57:38","slug":"well-lets-go-to-implement-linter-to-project-2o6j","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/well-lets-go-to-implement-linter-to-project-2o6j\/","title":{"rendered":"\u062e\u0628&#8230; \u0628\u0631\u06cc\u0645 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0644\u06cc\u0646\u062a\u0631 \u0628\u0647 \u067e\u0631\u0648\u0698\u0647!"},"content":{"rendered":"<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0645\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0635\u0628 5 \u0628\u0633\u062a\u0647 \u0645\u0627\u0646\u0646\u062f Dependencies \u062a\u0648\u0633\u0639\u0647 \u062f\u0627\u0631\u06cc\u0645\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npm <span class=\"nb\">install <\/span>prettier eslint eslint-config-prettier husky lint-staged <span class=\"nt\">-D<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0631\u0627 \u062f\u0631 \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f <code>.prettierrc<\/code>\u060c <code>.prettierignore<\/code>\u060c <code>.eslintignore<\/code>\u060c (\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 npm \u06cc\u0627 yarn \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f: <code>.npmrc<\/code> \u06cc\u0627 <code>.yarnrc<\/code>)<\/p>\n<p>\u0627\u0628\u062a\u062f\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0641\u0627\u06cc\u0644 eslint \u0631\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p>\u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npx eslint <span class=\"nt\">--init<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u0622\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0639\u062f\u06cc \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f <3<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"778\" height=\"116\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678265857_702_\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"747\" height=\"145\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678265857_246_\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"757\" height=\"169\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678265858_498_\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"757\" height=\"158\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678265858_199_\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"715\" height=\"214\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678265858_884_\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"880\" height=\"291\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678265858_91_\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"774\" height=\"268\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678265858_872_\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"880\" height=\"289\" title=\"\"><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678265858_546_\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"880\" height=\"344\" title=\"\"><\/p>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0632\u06cc\u0628\u0627\u062a\u0631 \u067e\u06cc\u0634\u0646\u0647\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0645 \u06a9\u0647 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc typescript \u0648 tsx \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f<\/p>\n<p><code>.prettierrc<\/code>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"semi\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"singleQuote\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<\/div>\n<p><code>.prettierignore<\/code>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>node_modules\n.expo\/*\n.husky\/*\n.vscode\/*\nassets\/*\n<\/code><\/pre>\n<\/div>\n<p><code>.eslintignore<\/code>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>node_modules\n.expo\/*\n.husky\/*\n.vscode\/*\nassets\/*\n<\/code><\/pre>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0646 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u062a\u0645\u0627\u0645 \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0646\u0635\u0628 \u0628\u0639\u062f\u06cc \u0631\u0627 \u0628\u0627 \u0646\u0633\u062e\u0647 \u062f\u0642\u06cc\u0642\u0627\u064b \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645<\/p>\n<p><code>.npmrc<\/code>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>save-exact=true\n<\/code><\/pre>\n<\/div>\n<p><code>.yarnrc<\/code>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>save-prefix true\n<\/code><\/pre>\n<\/div>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u062f\u06cc\u06af\u0631 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f <code>package.json<\/code> \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0647\u0627\u0633\u06a9\u06cc \u0622\u0645\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npm pkg <span class=\"nb\">set <\/span>scripts.prepare<span class=\"o\">=<\/span><span class=\"s2\">\"husky install\"<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0648 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0639\u062f\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npm run prepare\n<\/code><\/pre>\n<\/div>\n<p>\u0633\u067e\u0633 \u0627\u06cc\u0646 \u062f\u0633\u062a\u0648\u0631 \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0645\u062e\u0641\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f <code>.husky<\/code><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/03\/1678265858_352_\u062e\u0628-\u0628\u0631\u06cc\u0645-\u067e\u06cc\u0627\u062f\u0647-\u0633\u0627\u0632\u06cc-\u0644\u06cc\u0646\u062a\u0631-\u0628\u0647-\u067e\u0631\u0648\u0698\u0647.png\" alt=\"\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u062a\u0635\u0648\u06cc\u0631\" width=\"245\" height=\"487\" title=\"\"><\/p>\n<p>\u062f\u0633\u062a\u0648\u0631 \u0628\u0639\u062f\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u0641\u0627\u06cc\u0644 bash (sh) \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 \u06cc\u06a9 commit \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u062f\u060c \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. <code>pre-commit<\/code>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>npx husky add .husky\/pre-commit <span class=\"s2\">\"npm run lint-staged\"<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u0645\u062b\u0644 \u0627\u06cc\u0646\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\">#!\/usr\/bin\/env sh<\/span>\n<span class=\"nb\">.<\/span> <span class=\"s2\">\"<\/span><span class=\"si\">$(<\/span><span class=\"nb\">dirname<\/span> <span class=\"nt\">--<\/span> <span class=\"s2\">\"<\/span><span class=\"nv\">$0<\/span><span class=\"s2\">\"<\/span><span class=\"si\">)<\/span><span class=\"s2\">\/_\/husky.sh\"<\/span>\n\nyarn lint-staged\n<\/code><\/pre>\n<\/div>\n<p>\u0628\u0627 \u062f\u0633\u062a\u0648\u0631 \u0642\u0628\u0644\u06cc \u062f\u0633\u062a\u0648\u0631\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u062f\u0633\u062a\u0648\u0631 \u0642\u0628\u0644\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 commit \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0627\u0645\u0627 \u0647\u0646\u0648\u0632 \u0628\u0627\u06cc\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645. <code>lint-staged<\/code><\/p>\n<p><code>package.json<\/code>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"my-app\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"version\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"0.0.0\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"main\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"node_modules\/expo\/AppEntry.js\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"scripts\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"start\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"expo start --tunnel\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"android\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"expo start --android\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"ios\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"expo start --ios\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"web\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"expo start --web\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"p\">},<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"private\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"kc\">true<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"lint-staged\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"*.{js,jsx,ts,tsx}\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"eslint --cache --fix\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"*.{js,jsx,ts,tsx,css,md}\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"prettier --write\"<\/span><span class=\"w\">\n  <\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<\/div>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u062f\u060c \u0645\u0646 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0647 \u0646\u0627\u0645 &#8220;lint-staged&#8221; \u0631\u0627 \u0628\u0627 \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u062f\u0633\u062a\u0648\u0631 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0647\u0627 \u0631\u0627 \u0628\u0647 eslint \u0648 \u0647\u0631 \u0628\u0627\u0631 \u06a9\u0647 commit \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0645\u060c \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u0645 \u0648 \u0632\u06cc\u0628\u0627\u062a\u0631 \u0634\u0648\u062f.<\/p>\n<p>\u0628\u0627 \u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc\u200c\u0647\u0627\u060c \u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0647\u0631 commit \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u06cc\u0645 \u0648 \u06cc\u06a9 Pre-Commit \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645 \u06a9\u0647 \u0627\u06af\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0627 \u067e\u0633\u0648\u0646\u062f\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u060c \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f: <code>js|jsx|ts|tsx<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 eslint \u0648 \u0632\u06cc\u0628\u0627\u062a\u0631 \u0628\u0627 \u0627\u06cc\u0646 \u067e\u0633\u0648\u0646\u062f: <code>js|jsx|ts|tsx|css|md<\/code><\/p>\n<ul>\n<li>\u067e\u0633\u062a \u0642\u0628\u0644\u06cc\u060c \u0634\u0631\u0648\u0639 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u062c\u062f\u06cc\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 React Native \u0628\u0627 expo \u0648 typescript<\/li>\n<li>\n<p>\u0645\u0648\u0636\u0648\u0639 \u0628\u0639\u062f\u06cc \u0628\u0631\u0627\u06cc \u067e\u0633\u062a \u0628\u0639\u062f\u06cc: commit \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 commitlint \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f \u0648 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06af\u0631\u0647 \u06cc\u06a9 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0628\u0631\u0627\u06cc \u062a\u0648\u0644\u06cc\u062f \u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 out react native \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645<\/p>\n<\/li>\n<li>\n<p>\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 github<\/p>\n<\/li>\n<li>\n<p>github repo: \u0645\u0646 \u0647\u0646\u0648\u0632 \u0631\u0648\u06cc \u0622\u0646 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0645 >.< srry<\/p>\n<\/li>\n<\/ul>\n<p>\u0645\u0645\u0646\u0648\u0646 \u06a9\u0647 \u0647\u0646\u0648\u0632 \u0622\u0645\u0648\u0632\u0634 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u062f!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0645\u0627 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0646\u0635\u0628 5 \u0628\u0633\u062a\u0647 \u0645\u0627\u0646\u0646\u062f Dependencies \u062a\u0648\u0633\u0639\u0647 \u062f\u0627\u0631\u06cc\u0645 npm install prettier eslint eslint-config-prettier husky lint-staged -D \u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0631\u0627 \u062f\u0631 \u0631\u06cc\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f .prettierrc\u060c .prettierignore\u060c .eslintignore\u060c (\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0628\u0647 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u0632 npm \u06cc\u0627 yarn \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f: .npmrc \u06cc\u0627 .yarnrc) \u0627\u0628\u062a\u062f\u0627 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-10863","post","type-post","status-publish","format-standard","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/10863","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=10863"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/10863\/revisions"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=10863"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=10863"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=10863"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}