Vue-cli webpack模板

Vue webpack項目開始構建模板使用,關鍵內容摘要javascript

中文文檔 https://loulanyijian.github.io/vue-cli-doc-Chinese/css

官方英文 http://vuejs-templates.github.io/webpack/html

全部模板 https://github.com/vuejs-templatesvue

0 安裝和使用 vue-cli

$ 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

1 項目結構

├── 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.assetsPublicPathbuild.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包元數據文件,包括全部的構建依賴與構建命令

2 構建命令

npm run dev

對應 package.json 中的NPM腳本命令

"scripts": {
    "dev": "node build/dev-server.js",
    //...
}

npm run build`

對應 package.json 中的

"scripts": {
    //...
    "build": "node build/build.js",
    //...
}

3 預處理器

這個模板已經預設大部分流行的 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" 對應縮進語法。

PostCSS

默認的狀況下,在*.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-loaderpostcss選項專門爲*.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
      }
    }

http://vue-loader.vuejs.org/en/features/postcss.html

獨立的 CSS 文件

爲了確保一致的提取和處理,建議在根組件App.vue中引入全局的、獨立的樣式文件,例如:

<!-- App.vue -->
<style src="./styles/global.less" lang="less"></style>

注意,你可能只須要爲你本身編寫的應用程序編寫樣式。在那些存在的樣式庫,如Bootstrap 或 Semantic UI,你能夠在 /static文件夾中放置他們而且直接在index.html文件中引入。這樣作會避免額外的構建時間,也更好的利用瀏覽器的緩存。(請參考處理靜態資源)

4 環境變量

有時須要根據程序運行環境的不一樣而有不一樣的配置值。如

// 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
相關文章
相關標籤/搜索