我在項目中是這樣配置Vue的

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"獨在公司加夜班,行行代碼心甚寒。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不知功能何時完,殺了產品來祭天。"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"公司前端項目比較多,每個團隊都會自己搭建一套屬於自己團隊的項目框架,導致公司項目五花八門,跨團隊協作難上加載,所以小編整理了一個開箱即用的框架,用於統一所有的團隊,那這個框架是怎麼配置的呢,我們一起來看看。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文內容來源於小編開源的一個基於"},{"type":"codeinline","content":[{"type":"text","text":"vant"}]},{"type":"text","text":"封裝的開箱即用框架的一部分,本文中提取了部分功能,完整代碼,請查看 "},{"type":"link","attrs":{"href":"https://github.com/snowzijun/vue-vant-base","title":""},"content":[{"type":"text","text":"https://github.com/snowzijun/vue-vant-base"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"啓用壓縮,讓頁面加載更快"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在我們開發的時候,爲了方便調試,我們需要使用源碼進行調試,但在生產環境,我們追求的更多的是加載更快,體驗更好,這時候我們會將代碼中的空格註釋去掉,對待嗎進行混淆壓縮,只爲了讓"},{"type":"codeinline","content":[{"type":"text","text":"js"}]},{"type":"text","text":","},{"type":"codeinline","content":[{"type":"text","text":"css"}]},{"type":"text","text":"文件變得更小,加載更快。但只是這樣做是不夠的,我們還可以做得更極致。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"gzip"}]},{"type":"text","text":"是"},{"type":"codeinline","content":[{"type":"text","text":"Web"}]},{"type":"text","text":"世界中使用的最爲廣泛的文件壓縮算法,當前我們使用的大多數服務端(比如nginx)和客戶端(比如chrome)都已經支持了這個算法,所以如果我們在打包"},{"type":"codeinline","content":[{"type":"text","text":"Vue"}]},{"type":"text","text":"項目的時候,可以直接將所有的靜態資源壓縮爲"},{"type":"codeinline","content":[{"type":"text","text":"gzip"}]},{"type":"text","text":",就可以極大的減少靜態資源的大小,提升瀏覽器加載速度,那"},{"type":"codeinline","content":[{"type":"text","text":"Vue"}]},{"type":"text","text":"項目如何配置呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"添加vue.config.js 文件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在新建"},{"type":"codeinline","content":[{"type":"text","text":"Vue"}]},{"type":"text","text":"項目中,默認是沒有"},{"type":"codeinline","content":[{"type":"text","text":"vue.config.js"}]},{"type":"text","text":"文件的,首先你需要在項目根目錄新建一個vue.config.js文件,然後在文件中加入以下代碼"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":"module.exports = {\n\n}"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文後面會多次使用到"},{"type":"codeinline","content":[{"type":"text","text":"vue.config.js"}]},{"type":"text","text":"文件,在後面將不再贅述。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"配置compression-webpack-plugin"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"安裝 "},{"type":"codeinline","content":[{"type":"text","text":"compression-webpack-plugin"}]}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":" yarn add compression-webpack-plugin -D"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 修改"},{"type":"codeinline","content":[{"type":"text","text":"vue.config.js"}]},{"type":"text","text":"文件爲以下代碼"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":"const CompressionWebpackPlugin = require('compression-webpack-plugin')\n\n const isProd = process.env.NODE_ENV === 'production'\n\n module.exports = {\n\n configureWebpack: config => {\n\n if (isProd) {\n\n // 配置webpack 壓縮\n\n config.plugins.push(\n\n new CompressionWebpackPlugin({\n\n test: /\\.js$|\\.html$|\\.css$/,\n\n // 超過4kb壓縮\n\n threshold: 4096\n\n })\n\n )\n\n }\n\n }\n\n }"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"查看壓縮效果"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 在配置上面的壓縮之後,執行"},{"type":"codeinline","content":[{"type":"text","text":"yarn build"}]},{"type":"text","text":"命令,會發現生成的靜態文件裏面新增了後綴爲"},{"type":"codeinline","content":[{"type":"text","text":"gz"}]},{"type":"text","text":"的文件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/cc/ccc12361ad41b18cc04fe5fc32bfe3e6.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" 如果此時將項目部署到已開啓了"},{"type":"codeinline","content":[{"type":"text","text":"gzip"}]},{"type":"text","text":"的服務器如"},{"type":"codeinline","content":[{"type":"text","text":"nginx"}]},{"type":"text","text":"裏面之後,訪問瀏覽器即可看到瀏覽器下載的是已壓縮的文件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/53/53d6d6666d1fda3561cbb9eca4bca383.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"移動端適配"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當前移動端比較流行的兩種適配方式, 一種是將"},{"type":"codeinline","content":[{"type":"text","text":"px"}]},{"type":"text","text":"轉換爲"},{"type":"codeinline","content":[{"type":"text","text":"rem"}]},{"type":"text","text":",另一種是將"},{"type":"codeinline","content":[{"type":"text","text":"px"}]},{"type":"text","text":"轉換爲"},{"type":"codeinline","content":[{"type":"text","text":"vw"}]},{"type":"text","text":",在開發項目時,我一般喜歡將"},{"type":"codeinline","content":[{"type":"text","text":"px"}]},{"type":"text","text":"轉換爲"},{"type":"codeinline","content":[{"type":"text","text":"vw"}]},{"type":"text","text":",那麼如何配置呢"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"安裝 postcss-px-to-viewport"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先,你需要給項目安裝"},{"type":"codeinline","content":[{"type":"text","text":"postcss-px-to-viewport"}]},{"type":"text","text":"插件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"yarn add postcss-px-to-viewport -D"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"配置移動端適配"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在項目根目錄下面新建文件"},{"type":"codeinline","content":[{"type":"text","text":"postcss.config.js"}]},{"type":"text","text":",然後將以下代碼加入到文件內"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":"module.exports = {\n plugins: {\n autoprefixer: {},\n 'postcss-px-to-viewport': {\n // 視窗的寬度,對應的是我們設計稿的寬度,我們公司用的是375\n viewportWidth: 375,\n // 視窗的高度,根據750設備的寬度來指定,一般指定1334,也可以不配置\n // viewportHeight: 1334,\n // 指定`px`轉換爲視窗單位值的小數位數\n unitPrecision: 3,\n // 指定需要轉換成的視窗單位,建議使用vw\n viewportUnit: 'vw',\n // 指定不轉換爲視窗單位的類,可以自定義,可以無限添加,建議定義一至兩個通用的類名\n selectorBlackList: ['.ignore'],\n // 小於或等於`1px`不轉換爲視窗單位,你也可以設置爲你想要的值\n minPixelValue: 1,\n // 允許在媒體查詢中轉換`px`\n mediaQuery: false\n }\n }\n}\n"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置完之後,重啓服務,在瀏覽器中審查元素,可以看到原來寫的"},{"type":"codeinline","content":[{"type":"text","text":"px"}]},{"type":"text","text":"都轉換成了"},{"type":"codeinline","content":[{"type":"text","text":"vw"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/da/da5fd4b311382140816f1ee186761590.jpeg","alt":null,"title":null,"style":null,"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"忽略目錄,讓moment變得更小"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用過"},{"type":"codeinline","content":[{"type":"text","text":"moment"}]},{"type":"text","text":"的同學一定知道,"},{"type":"codeinline","content":[{"type":"text","text":"moment"}]},{"type":"text","text":"的"},{"type":"codeinline","content":[{"type":"text","text":"locale"}]},{"type":"text","text":"語言包特別大,但是我們一般的項目只在國內用,也用不到那麼多語言,是不是可以去掉呢?這時候你需要使用到"},{"type":"codeinline","content":[{"type":"text","text":"webpack.IgnorePlugin"}]},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在"},{"type":"codeinline","content":[{"type":"text","text":"vue.config.js"}]},{"type":"text","text":"文件,你需要添加以下代碼"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":"const webpack = require('webpack')\nmodule.exports = {\n chainWebpack: config => {\n // 優化moment 去掉國際化內容\n config\n .plugin('ignore')\n // 忽略/moment/locale下的所有文件\n .use(new webpack.IgnorePlugin(/^\\.\\/locale$/, /moment$/)) \n }\n}"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們雖然按照上面的方法忽略了包含’./locale/'該字段路徑的文件目錄,但是也使得我們使用的時候不能顯示中文語言了,這時候如果想用某一種語言應該怎麼辦呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":"import moment from 'moment'\n//手動引入所需要的語言包\nimport 'moment/locale/zh-cn';\n// 指定使用的語言\nmoment.locale('zh-cn');"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當然小編更建議在項目中使用更輕量級的"},{"type":"codeinline","content":[{"type":"text","text":"day.js"}]},{"type":"text","text":"代替"},{"type":"codeinline","content":[{"type":"text","text":"moment"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"生產環境刪除console.log"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開發環境爲了調試,會添加大量的"},{"type":"codeinline","content":[{"type":"text","text":"console.log"}]},{"type":"text","text":",但如果"},{"type":"codeinline","content":[{"type":"text","text":"console.log"}]},{"type":"text","text":"提交到生產環境裏面,不僅僅會影響到代碼執行性能,而且可能會泄露一些核心數據,所以我們更希望的是在生產環境,將所有的"},{"type":"codeinline","content":[{"type":"text","text":"console.log"}]},{"type":"text","text":"清除掉,怎麼做呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"安裝插件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"需要安裝"},{"type":"codeinline","content":[{"type":"text","text":"babel-plugin-transform-remove-console"}]},{"type":"text","text":"插件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"shell"},"content":[{"type":"text","text":"yarn add babel-plugin-transform-remove-console -D"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"配置babel.config.js"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"打開"},{"type":"codeinline","content":[{"type":"text","text":"babel.config.js"}]},{"type":"text","text":"文件,然後在文件內添加"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":"// 所有生產環境\nconst prodPlugin = []\n\nif (process.env.NODE_ENV === 'production') {\n \n// 如果是生產環境,則自動清理掉打印的日誌,但保留error 與 warn\n prodPlugin.push([\n 'transform-remove-console',\n {\n // 保留 console.error 與 console.warn\n exclude: ['error', 'warn']\n }\n ])\n}\n\nmodule.exports = {\n plugins: [\n ...prodPlugin\n ]\n}"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"開啓eslint,stylelint"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"看到這一條,有些同學就有點受不了想退出了,配置這個不是自己給自己找不自在嗎?在團隊開發中,配置這些還是很有用的,制約團隊中的每個人都按照標準來開發功能,這樣至少大家寫的代碼不至於相互看不懂(我深受不規範代碼的折磨啊)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"安裝依賴"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在配置這些"},{"type":"codeinline","content":[{"type":"text","text":"lint"}]},{"type":"text","text":"之前,你需要安裝這些插件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"@vue/cli-plugin-eslint"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"@vue/eslint-config-prettier"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"babel-eslint"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eslint"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eslint-plugin-babel"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eslint-plugin-prettier"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"eslint-plugin-vue"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"husky"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"lint-staged"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"prettier"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"stylelint"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"stylelint-config-recess-order"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"stylelint-config-standard"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"stylelint-prettier"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"stylelint-scss"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同時還需要給"},{"type":"codeinline","content":[{"type":"text","text":"vscode"}]},{"type":"text","text":"以下插件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":"eslint"}]}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"stylelint"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Prettier - Code formatter"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"配置vscode"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在"},{"type":"codeinline","content":[{"type":"text","text":"vscode"}]},{"type":"text","text":"的"},{"type":"codeinline","content":[{"type":"text","text":"setting"}]},{"type":"text","text":"文件裏面添加以下代碼"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":"\"eslint.enable\":true,\n\"eslint.options\": {\n \"extensions\":[\n \".js\",\n \".vue\",\n \".ts\",\n \".tsx\"\n ]\n },\n \"eslint.validate\": [\n \"javascript\",\n \"javascriptreact\",\n \"typescript\",\n \"typescriptreact\"\n ],\n \"css.validate\": true,\n \"scss.validate\": true,\n \"less.validate\": true,\n \"editor.codeActionsOnSave\": {\n \"source.fixAll\": true\n },"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"配置eslint"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先在項目根目錄下面添加 "},{"type":"codeinline","content":[{"type":"text","text":".eslintrc.js"}]},{"type":"text","text":"與"},{"type":"codeinline","content":[{"type":"text","text":".eslintignore"}]},{"type":"text","text":"文件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在"},{"type":"codeinline","content":[{"type":"text","text":".eslintrc.js"}]},{"type":"text","text":"文件內添加以下內容"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":"// 縮略版\nmodule.exports = {\n root: true,\n globals: {\n process: true\n },\n parserOptions: {\n parser: 'babel-eslint',\n sourceType: 'module'\n },\n env: {\n browser: true,\n node: true,\n es6: true\n },\n extends: ['plugin:vue/recommended', 'eslint:recommended'],\n plugins: ['babel', 'prettier'],\n rules:{ \n // 校驗規則此處略\n\t}\n}"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在"},{"type":"codeinline","content":[{"type":"text","text":".eslintignore"}]},{"type":"text","text":"文件中添加以下代碼"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":""},"content":[{"type":"text","text":".DS_Store\nnode_modules\n/dist\n\n# local env files\n.env.local\n.env.*.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置完之後,在"},{"type":"codeinline","content":[{"type":"text","text":"package.json"}]},{"type":"text","text":"的"},{"type":"codeinline","content":[{"type":"text","text":"script"}]},{"type":"text","text":"裏面添加"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"powershell"},"content":[{"type":"text","text":"\"eslint\": \"vue-cli-service lint\""}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然後執行"},{"type":"codeinline","content":[{"type":"text","text":"yarn eslint"}]},{"type":"text","text":"就可以對代碼進行格式化,當然"},{"type":"codeinline","content":[{"type":"text","text":"vscode"}]},{"type":"text","text":"也會在你保存文件的時候校驗一次"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"配置stylelint"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"限制"},{"type":"codeinline","content":[{"type":"text","text":"js"}]},{"type":"text","text":"與"},{"type":"codeinline","content":[{"type":"text","text":"vue"}]},{"type":"text","text":"是不夠的,還需要限制以下"},{"type":"codeinline","content":[{"type":"text","text":"style"}]},{"type":"text","text":",感覺這是自己給自己無限挖坑的舉措,但是這東西越用越爽,一起來看看"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先在項目根目錄下面新建"},{"type":"codeinline","content":[{"type":"text","text":".stylelintrc.js"}]},{"type":"text","text":"與"},{"type":"codeinline","content":[{"type":"text","text":".stylelintignore"}]},{"type":"text","text":"文件"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在"},{"type":"codeinline","content":[{"type":"text","text":".stylelintrc.js"}]},{"type":"text","text":"文件中添加以下內容"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":"module.exports = {\n extends: [\"stylelint-config-standard\",\"stylelint-config-recess-order\"],\n \"plugins\": [\n \"stylelint-scss\"\n ],\n rules: {\n // 校驗規則略\n }\n}"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"codeinline","content":[{"type":"text","text":".stylelintignore"}]},{"type":"text","text":"文件內容與"},{"type":"codeinline","content":[{"type":"text","text":".eslintignore"}]},{"type":"text","text":"文件內容一致"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"配置完之後,在"},{"type":"codeinline","content":[{"type":"text","text":"package.json"}]},{"type":"text","text":"的"},{"type":"codeinline","content":[{"type":"text","text":"script"}]},{"type":"text","text":"裏面添加"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"powershell"},"content":[{"type":"text","text":"\"stylelint\": \"stylelint src/**/*.{html,vue,css,sass,scss} --fix\","}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然後執行"},{"type":"codeinline","content":[{"type":"text","text":"yarn stylelint"}]},{"type":"text","text":"就可以對樣式進行格式化,當然"},{"type":"codeinline","content":[{"type":"text","text":"vscode"}]},{"type":"text","text":"也會在你保存文件的時候校驗一次"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"配置husky"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在"},{"type":"codeinline","content":[{"type":"text","text":"eslint"}]},{"type":"text","text":","},{"type":"codeinline","content":[{"type":"text","text":"stylelint"}]},{"type":"text","text":"配置完之後,寫代碼時候"},{"type":"codeinline","content":[{"type":"text","text":"vscode"}]},{"type":"text","text":"會自動校驗格式化代碼, 但就怕有人用其他編輯器沒有配置插件,將未校驗的代碼提交到倉庫裏面,導致所有人的代碼都爆紅,這時候就需要使用"},{"type":"codeinline","content":[{"type":"text","text":"husky"}]},{"type":"text","text":"在提交代碼時候進行校驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在"},{"type":"codeinline","content":[{"type":"text","text":"git"}]},{"type":"text","text":"提交代碼時候,會觸發一系列"},{"type":"codeinline","content":[{"type":"text","text":"hook"}]},{"type":"text","text":"鉤子函數,而"},{"type":"codeinline","content":[{"type":"text","text":"husky"}]},{"type":"text","text":"就是一個"},{"type":"codeinline","content":[{"type":"text","text":"Git hooks "}]},{"type":"text","text":"工具。"},{"type":"codeinline","content":[{"type":"text","text":"lint-staged "}]},{"type":"text","text":"是一個在git暫存文件上運行linters的工具,爲什麼要用這個工具呢,因爲我們在提交代碼的時候,只需要對已經修改過的文件進行校驗,不然檢查所有文件,比較浪費時間。那我們改怎麼配置呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你只需要在"},{"type":"codeinline","content":[{"type":"text","text":"package.json"}]},{"type":"text","text":"文件裏面添加以下代碼"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"codeblock","attrs":{"lang":"javascript"},"content":[{"type":"text","text":" \"husky\": {\n \"hooks\": {\n \"pre-commit\": \"lint-staged\",\n \"commit-msg\": \"commitlint -E HUSKY_GIT_PARAMS\"\n }\n },\n \"lint-staged\": {\n \"*.{js,vue}\": [\n \"vue-cli-service lint\",\n \"git add -A\"\n ],\n \"*.{html,vue,css,sass,scss}\": [\n \"yarn stylelint\"\n ]\n }"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這時候你如果執行"},{"type":"codeinline","content":[{"type":"text","text":"git commit -m '提交描述'"}]},{"type":"text","text":"的時候,會發現提交之前會調用"},{"type":"codeinline","content":[{"type":"text","text":"eslint"}]},{"type":"text","text":"與"},{"type":"codeinline","content":[{"type":"text","text":"stylelint"}]},{"type":"text","text":"進行代碼校驗,校驗失敗無法提交"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"結語"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不要吹滅你的靈感和你的想象力; 不要成爲你的模型的奴隸。 ——文森特・梵高"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章