vue相關配置文件詳解及多環境配置


vue相關配置文件詳解及多環境配置
npm的文檔(里面包括配置):https://www.axihe.com/api/npm/config/package.html
分類專欄: vue.js 文章標簽: vue.js 前端 webpack 1.package.json 作用: package.json 文件其實就是對項目或者模塊包的描述,里面包含許多元信息。比如項目名稱,項目版本,項目執行入口文件,項目貢獻者等等。npm install 命令會根據這個文件下載所有依賴模塊。 文件結構如下: { "name": "sop-vue", "version": "0.1.0", "author": "zhangsan <zhangsan@163.com>", "description": "sop-vue", "keywords":["node.js","javascript"], "private": true, "bugs":{"url":"http://path/to/bug","email":"bug@example.com"}, "contributors":[{"name":"李四","email":"lisi@example.com"}], "repository": { "type": "git", "url": "https://path/to/url" }, "homepage": "http://github.com/style.css", "license":"MIT", "dependencies": { "bd-font-icons": "^1.1.3", "core-js": "^3.6.4", "echarts": "^4.7.0", "element-ui": "^2.13.1", "v-charts": "^1.19.0", "vue": "^2.6.11", "vue-router": "^3.1.6", "vuex": "^3.1.3" }, "devDependencies": { "@vue/cli-plugin-babel": "^4.3.0", "@vue/cli-plugin-eslint": "^4.3.0", "@vue/cli-plugin-router": "^4.3.0", "@vue/cli-plugin-unit-mocha": "^4.3.0", "@vue/cli-plugin-vuex": "^4.3.0", "@vue/cli-service": "^4.3.0", "@vue/test-utils": "1.0.0-beta.31", "babel-core": "^6.26.3", "babel-eslint": "^10.1.0", "babel-loader": "^7.1.5", "babel-preset-env": "^1.7.0", "chai": "^4.1.2", "eslint": "^6.7.2", "eslint-plugin-vue": "^6.2.2", "sass": "^1.26.3", "sass-loader": "^8.0.2", "vue-template-compiler": "^2.6.11" } "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "test:unit": "vue-cli-service test:unit", "lint": "vue-cli-service lint" }, "bin": { "webpack": "./bin/webpack.js" }, "main": "lib/webpack.js", "module": "es/index.js", "eslintConfig": { "extends": "vue-app" }, "engines" : { "node" : ">=0.10.3 <0.12" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "style": [ "./node_modules/tipso/src/tipso.css" ], "files": [ "lib/", "bin/", "buildin/", "declarations/", "hot/", "web_modules/", "schemas/", "SECURITY.md" ] } 文件參數說明: 選項 說明 必填 name 項目/模塊名稱,長度必須小於等於214個字符,不能以"."(點)或者"_"(下划線)開頭,不能包含大寫字母 是 version 項目版本 是 author 項目開發者,它的值是你在https://npmjs.org網站的有效賬戶名,遵循“賬戶名<郵件>”的規則 否 description 項目描述,是一個字符串。它可以幫助人們在使用npm search時找到這個包 否 keywords 項目關鍵字,是一個字符串數組。它可以幫助人們在使用npm search時找到這個包 否 private 是否私有,設置為 true 時,npm 拒絕發布 否 license 軟件授權條款,讓用戶知道他們的使用權利和限制 否 bugs bug 提交地址 否 contributors 項目貢獻者 否 repository 項目倉庫地址 否 homepage 項目包的官網 URL 否 dependencies 生產環境下,項目運行所需依賴 否 devDependencies 開發環境下,項目所需依賴 否 scripts 執行 npm 腳本命令簡寫,比如 “serve”: “vue-cli-service serve”, 執行 npm run serve 就是運行 “npm vue-cli-service serve” 否 bin 內部命令對應的可執行文件的路徑 否 main 項目默認執行文件,比如 require(‘webpack’);就會默認加載 lib 目錄下的 webpack.js 文件,如果沒有設置,則默認加載項目跟目錄下的 index.js 文件 否 module 是以 ES Module(也就是 ES6)模塊化方式進行加載,因為早期沒有 ES6 模塊化方案時,都是遵循 CommonJS 規范,而 CommonJS 規范的包是以 main 的方式表示入口文件的,為了區分就新增了 module 方式,但是 ES6 模塊化方案效率更高,所以會優先查看是否有 module 字段,沒有才使用 main 字段 否 eslintConfig EsLint 檢查文件配置,自動讀取驗證 否 engines 項目運行的平台 否 browserslist 供瀏覽器使用的版本列表 否 style 供瀏覽器使用時,樣式文件所在的位置;樣式文件打包工具parcelify,通過它知道樣式文件的打包位置 否 files 被項目包含的文件名數組 否 這個文件保存着項目的時候配置的項目基本信息,它是個標准的json格式文件,編寫時要注意格式,重點要關注一下scripts里面的內容,這里面包含了項目的一些指令簡寫,在這里可以配置啟動不同環境的項目的指令。 2.vue.config.js vue.config.js 是一個可選的配置文件,如果項目的 (和 package.json 同級的) 根目錄中存在這個文件,那么它會被 @vue/cli-service 自動加載。你也可以使用 package.json 中的 vue 字段,但是注意這種寫法需要你嚴格遵照 JSON 的格式來寫。 這個文件應該導出一個包含了選項的對象: // vue.config.js { // 選項... } 4 選項 說明 類型 默認值 publicPath 部署應用包時的基本 URL String ‘/’ outputDir 當運行 vue-cli-service build 時生成的生產環境構建文件的目錄。注意目標目錄在構建之前會被清除 (構建時傳入 --no-clean 可關閉該行為) String ‘dist‘ assetsDir 放置生成的靜態資源 (js、css、img、fonts) 的 (相對於 outputDir 的) 目錄。indexPath: 指定生成的 index.html 的輸出路徑 (相對於 outputDir)。也可以是一個絕對路徑 String ‘‘ filenameHashing 默認情況下,生成的靜態資源在它們的文件名中包含了 hash 以便更好的控制緩存。然而,這也要求 index 的 HTML 是被 Vue CLI 自動生成的。如果你無法使用 Vue CLI 生成的 index HTML,你可以通過將這個選項設為 false 來關閉文件名哈希 boolean true Pages 在 multi-page(多頁)模式下構建應用。每個“page”應該有一個對應的 JavaScript 入口文件。其值應該是一個對象,對象的 key 是入口的名字,value 是一個指定了 entry, template, filename, title 和 chunks 的對象 (除了 entry 之外都是可選的),或一個指定其 entry 的字符串 Object lintOnSave 是否在保存的時候使用 `eslint-loader` 進行檢查。 有效的值:`ture` | `false` | `"error"` 當設置為 `"error"` 時,檢查出的錯誤會觸發編譯失敗 Boolean | ‘warning’ | ‘default’ | ‘error’ True runtimeCompiler 是否使用包含運行時編譯器的 Vue 構建版本。設置為 true 后你就可以在 Vue 組件中使用 template 選項了,但是這會讓你的應用額外增加 10kb 左右 Boolean False Crossorigin 設置生成的 HTML 中 link 和 script標簽的 crossorigin 屬性 String configureWebpack 如果這個值是一個對象,則會通過 webpack-merge 合並到最終的配置中。如果這個值是一個函數,則會接收被解析的配置作為參數。該函數及可以修改配置並不返回任何東西,也可以返回一個被克隆或合並過的配置版本 Object | Function chainWebpack 是一個函數,會接收一個基於 webpack-chain 的 ChainableConfig 實例。允許對內部的 webpack 配置進行更細粒度的修改 Function css.modules 默認情況下,只有 *.module.[ext] 結尾的文件才會被視作 CSS Modules 模塊。設置為 true 后你就可以去掉文件名中的 .module 並將所有的 *.(css|scss|sass|less|styl(us)?) 文件視為 CSS Modules 模塊 Boolean True css.extract 是否將組件中的 CSS 提取至一個獨立的 CSS 文件中 (而不是動態注入到 JavaScript 中的 inline 代碼)。(Default: 生產環境下是 true,開發環境下是 false) Boolean | object True css.sourceMap 是否為 CSS 開啟 source map。設置為 true 之后可能會影響構建的性能。css.loaderOptions:向 CSS 相關的 loader 傳遞選項 Boolean False devServer 所有 webpack-dev-server 的選項都支持。注意:有些值像 host、port 和 https 可能會被命令行參數覆寫。有些值像 publicPath 和 historyApiFallback 不應該被修改,因為它們需要和開發服務器的 publicPath 同步以保障正常的工作 Object devServer.proxy 如果你的前端應用和后端 API 服務器沒有運行在同一個主機上,你需要在開發環境下將 API 請求代理到 API 服務器。這個問題可以通過 vue.config.js 中的 devServer.proxy 選項來配置 Strinng | Object Parallel 是否為 Babel 或 TypeScript 使用 thread-loader。該選項在系統的 CPU 有多於一個內核時自動啟用,僅作用於生產構建 Boolean Pwa 向 PWA 插件傳遞選項 Object pluginOptions 這是一個不進行任何 schema 驗證的對象,因此它可以用來傳遞任何第三方插件選項 Object 下面是個比較完整點的配置實例 // Vue.config.js 配置選項 module.exports = { // 選項 // 基本路徑 publicPath: "./", // 構建時的輸出目錄 outputDir: "dist", // 放置靜態資源的目錄 assetsDir: "static", // html 的輸出路徑 indexPath: "index.html", //文件名哈希 filenameHashing: true, //用於多頁配置,默認是 undefined pages: { index: { // page 的入口文件 entry: 'src/index/main.js', // 模板文件 template: 'public/index.html', // 在 dist/index.html 的輸出文件 filename: 'index.html', // 當使用頁面 title 選項時, // template 中的 title 標簽需要是 <title><%= htmlWebpackPlugin.options.title %></title> title: 'Index Page', // 在這個頁面中包含的塊,默認情況下會包含 // 提取出來的通用 chunk 和 vendor chunk。 chunks: ['chunk-vendors', 'chunk-common', 'index'] }, // 當使用只有入口的字符串格式時, // 模板文件默認是 `public/subpage.html` // 如果不存在,就回退到 `public/index.html`。 // 輸出文件默認是 `subpage.html`。 subpage: 'src/subpage/main.js' }, // 是否在保存的時候使用 `eslint-loader` 進行檢查。 lintOnSave: true, // 是否使用帶有瀏覽器內編譯器的完整構建版本 runtimeCompiler: false, // babel-loader 默認會跳過 node_modules 依賴。 transpileDependencies: [ /* string or regex */ ], // 是否為生產環境構建生成 source map? productionSourceMap: true, // 設置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 標簽的 crossorigin 屬性。 crossorigin: "", // 在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 標簽上啟用 Subresource Integrity (SRI)。 integrity: false, // 調整內部的 webpack 配置 configureWebpack: () => {}, //(Object | Function) chainWebpack: () => {}, // 配置 webpack-dev-server 行為。 devServer: { open: process.platform === 'darwin', host: '0.0.0.0', port: 8080, https: false, hotOnly: false, // 查閱 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli/cli-service.md#配置代理 proxy: { '/api': { target: "http://app.rmsdmedia.com", changeOrigin: true, secure: false, pathRewrite: { "^/api": "" } }, '/foo': { target: '<other_url>' } }, // string | Object before: app => {} }, // CSS 相關選項 css: { // 將組件內的 CSS 提取到一個單獨的 CSS 文件 (只用在生產環境中) // 也可以是一個傳遞給 `extract-text-webpack-plugin` 的選項對象 extract: true, // 是否開啟 CSS source map? sourceMap: false, // 為預處理器的 loader 傳遞自定義選項。比如傳遞給 // Css-loader 時,使用 `{ Css: { ... } }`。 loaderOptions: { css: { // 這里的選項會傳遞給 css-loader }, postcss: { // 這里的選項會傳遞給 postcss-loader } }, // 為所有的 CSS 及其預處理文件開啟 CSS Modules。 // 這個選項不會影響 `*.vue` 文件。 modules: false }, // 在生產環境下為 Babel 和 TypeScript 使用 `thread-loader` // 在多核機器下會默認開啟。 parallel: require('os').cpus().length > 1, // PWA 插件的選項。 // 查閱 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli-plugin-pwa/README.md pwa: {}, // 三方插件的選項 pluginOptions: { // ... } } 3.多環境配置 日常項目中我們可能有多個環境,常見的開發、測試和生產,它們的接口地址和執行操作也是不一樣的,所以我們需要配置不同的環境,就拿基本的開發、測試、生產三個環境來說。 首先在根目錄下新建.env.dev、.env.test、.env.prod文件(開發、測試、生產) 文件內容: 選項 說明 NODE_ENV 可以設置為其他值,比如"test",但是打包后的目錄結構和"production"不一樣,所以還是設置為"production",通過"VUE_APP_MODE"變量來區分環境 VUE_APP_MODE 線上測試環境 VUE_APP_API_URL api調用地址 例如: 在main.js中配置接口地址指向配置文件的地址 修改package.json文件中scripts中編譯指令即可進行不同環境的配置,–mode后面指向不同的配置文件.env.dev、.env.test、.env.prod 運行npm run dev即可訪問開發環境接口 運行npm run test即可使用測試環境接口 運行npm run prod即可訪問生產環境接口 Vue.config.js中可以在configureWebpack中去根據不同環境修改相應的一些配置 例如: configureWebpack: (config) => { if (process.env. VUE_APP_MODE === 'prod') { // 為生產環境修改配置... }else if(process.env. VUE_APP_MODE === 'test'){ // 為測試環境修改配置... }else { // 為開發環境修改配置... } Object.assign(config, { // 開發、測試、生產共同配置 resolve: { alias: { '@': path.resolve(__dirname, './src'), '@c': path.resolve(__dirname, './src/components'), '@p': path.resolve(__dirname, './src/pages') } // 別名配置 } }) }, 打包同理 "build:dev": "vue-cli-service build --mode dev", "build:test": "vue-cli-service build --mode test", "build:prod": "vue-cli-service build --mode prod" 1 運行npm run build:dev即可構建開發環境 運行npm run build:test即可構建測試環境 運行npm run build:prod即可構建生產環境 ———————————————— 版權聲明:本文為CSDN博主「是老王吖」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。 原文鏈接:https://blog.csdn.net/jdkss/article/details/106140374

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM