Vue webpack項目開始構建模板使用,關鍵內容摘要javascript
中文文檔 https://loulanyijian.github.io/vue-cli-doc-Chinese/css
$ npm install -g vue-cli # 全局安裝vue-cli $ vue init webpack my-project # 使用vue-cli初始化一個完整的webpack項目。 $ cd my-project # 進入目錄 $ npm install # 安裝依賴 (package.json) $ npm run dev # 啓動開發環境版本
使用Vue-cli命令行工具初始化基於模板的項目的命令語法:java
$ vue init <template-name> <project-name>
node
可用 vue list
命令查看全部模板類型webpack
├── build/ # webpack 編譯任務配置文件: 開發環境與生產環境 │ └── ... ├── config/ │ ├── index.js # 項目核心配置 │ └── ... ├── src/ │ ├── main.js # 程序入口文件 │ ├── App.vue # 程序入口vue組件 │ ├── components/ # 組件 │ │ └── ... │ └── assets/ # 模塊資源 (會被webpack處理) │ └── ... ├── static/ # 純靜態資源 (直接拷貝到dist/static/裏面) ├── test/ │ └── unit/ # 單元測試 │ │ ├── specs/ # 測試規範 │ │ ├── index.js # 測試入口文件 │ │ └── karma.conf.js # 測試運行配置文件 │ └── e2e/ # 端到端測試 │ │ ├── specs/ # 測試規範 │ │ ├── custom-assertions/ # 端到端測試自定義斷言 │ │ ├── runner.js # 運行測試的腳本 │ │ └── nightwatch.conf.js # 運行測試的配置文件 ├── .babelrc # babel 配置文件 ├── .editorconfig # 編輯配置文件 ├── .eslintrc.js # eslint 配置文件 ├── index.html # index.html 入口模板文件 └── package.json # 運行的腳本與相關依賴
build/
包含實際爲開發環境與生產環境的webpack配置文件。一般不須要關注這些文件,除非想自定義webpack的loader,這樣的話,你應當先看看 build/webpack.base.conf.js
這個文件。git
config/index.js
主要的配置文件,包含構建中最經常使用的一些配置。github
src/
應用程序源碼文件。如何組織目錄結構取決於開發者。若是使用Vuex/VueRouter,能夠自行添加store/router目錄。通常結構以下:web
├── src/ | ├── ... └── store | ├── index.js # where we assemble modules and export the store | ├── actions.js # root actions | ├── mutations.js # root mutations | └── modules | │ ├── cart.js # cart module | │ └── products.js # products module | └── router/ # 路由 │ └── routes.js
static/
不想經過webpack處理的靜態資源目錄。這些目錄中的資源會在webpack構建的時候,被直接複製到相同的目錄中。
開發中使用的資源文件,在src/assets
目錄 。兩者的區別:
assets
中的文件會被webpack處理成模塊依賴,這些資源可能會在構建過程當中被內聯/複製/重命名;而static/
並不是由Webpack來處理:它們被直接複製到最終目標目錄。這些文件使用絕對路徑,這個可經過config/index.js
文件中的 build.assetsPublicPath
和 build.assetsSubDirectory
來控制。
任何放置在static/
的文件都使用絕對的URL /static/[filename]
來引用。
若是你修改
assetSubDirectory
參數成assets
,而後這些URL須要變成/assets/[filename]
。
http://vuejs-templates.github.io/webpack/static.html
https://loulanyijian.github.io/vue-cli-doc-Chinese/static.html
test/unit
包含單元測試相關文件。
test/e2e
包含端到端測試相關文件。
index.html
應用中的 模板 index.html
。在開發環境中,webpack會生成相關資源,這些資源的url會自動插入到模板來渲染最終的HTML。
package.json
NPM包元數據文件,包括全部的構建依賴與構建命令。
npm run dev
對應 package.json 中的NPM腳本命令
"scripts": { "dev": "node build/dev-server.js", //... }
對應 package.json 中的
"scripts": { //... "build": "node build/build.js", //... }
這個模板已經預設大部分流行的 css 預處理器,包括 LESS, SASS, Stylus, 和 PostCSS。要使用一個預處理器的話 ,全部你須要作的就是安裝相應的webpack loader。例如,使用SASS:
npm install sass-loader node-sass --save-dev
你須要安裝node-sass
,由於saas-loader
須要這個依賴項
安裝成功後, 你能夠經過修改<style>
標籤上的lang
屬性,在你的*.vue
組件中使用預處理器。
<style lang="scss"> /* 寫 SASS 代碼! */ </style>
lang="scss"
對應CSS超集語法(用大括號和semicolones)。lang="sass"
對應縮進語法。默認的狀況下,在*.vue
文件中的樣式會被PostCSS處理,因此你不須要用一個特殊的loader來操做它。若是你想用它的話,你能夠簡單的在build/webpack.base.conf.js
文件中添加PostCSS插件。
從11.0開始vue-loader
支持自動加載postcss-loader
支持的PostCss配置文件:
postcss.config.js
.postcssrc
package.json
中的postcss
設置使用配置文件容許您在由postcss-loader
處理的常規CSS文件和*.vue
文件內部CSS之間共享相同的配置,建議使用配置文件。
或者,可使用vue-loader
的postcss
選項專門爲*.vue
文件指定postcss配置。
// webpack.config.js //for webpack 2.x module.exports = { // other options... module: { // module.rules is the same as module.loaders in 1.x rules: [ { test: /\.vue$/, loader: 'vue-loader', options: { // ... // vue-loader options goes here postcss: [require('postcss-cssnext')()] } } ] } }
除了提供一個插件數組外,該postcss
選項還接受:
返回一個插件數組的函數;
包含要傳遞到PostCSS處理器選項的對象。這在使用依賴於自定義解析器/字符串的PostCSS項目時很是有用:
postcss: { plugins: [...], // list of plugins options: { parser: sugarss // use sugarss parser } }
爲了確保一致的提取和處理,建議在根組件App.vue
中引入全局的、獨立的樣式文件,例如:
<!-- App.vue --> <style src="./styles/global.less" lang="less"></style>
注意,你可能只須要爲你本身編寫的應用程序編寫樣式。在那些存在的樣式庫,如Bootstrap 或 Semantic UI,你能夠在 /static
文件夾中放置他們而且直接在index.html
文件中引入。這樣作會避免額外的構建時間,也更好的利用瀏覽器的緩存。(請參考處理靜態資源)
有時須要根據程序運行環境的不一樣而有不一樣的配置值。如
// config/prod.env.js 生產環境 module.exports = { NODE_ENV: '"production"', //字符串變量須要包成單引號和雙引號 '"..."' DEBUG_MODE: false, API_KEY: '"..."' // 這是全部環境之間共享的 } // config/dev.env.js 開發環境 module.exports = merge(prodEnv, { // 繼承自 prod.env .(經過merge) NODE_ENV: '"development"', DEBUG_MODE: true // 會覆蓋prod.env中的debug_mode值 }) // config/test.env.js 測試環境 module.exports = merge(devEnv, { NODE_ENV: '"testing"' })
在代碼中使用環境變量很簡單。例如:
Vue.config.debug = process.env.DEBUG_MODE