「連載四」「初始化項目」前端框架 Vue 入門教程

初始化項目

本項目是基於

@vue/cli(v4.2.3) & webpack(v4) & vuex(v3.1.2) & vue-router(v3.1.6) & ESLint(recommended) & Less(v3.11.1) & Jest & Cypress

按照官方文檔,遵循目前項目經驗的常用實踐,搭建的入門腳手架

Vue CLI 4 可以通過圖形化界面初始化項目,並安裝 Babel、PWA、Router、Vuex、Less、Linter、Jest、Cypress 等插件,相對命令行更加便捷和高效,命令如下:

<code># 安裝 vue 命令行工具
npm install -g @vue/cli /<code>
<code># 生成一個名為 vue-starter 的項目
vue create vue-starter /<code>
<code># 進入 vue-starter 項目根目錄
cd vue-starter /<code>
<code># 啟動圖形化配置界面
vue ui /<code>


以下為我的圖形化配置界面的配置:


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


「連載四」「初始化項目」前端框架 Vue 入門教程


自定義配置

雖然使用 vue ui 可以進行可視化配置,但在實際開發中,肯定有需要自定義配置的部分,我的配置如下:

<code>module.exports = {
publicPath: process.env.NODE_ENV === "production" ? "/" : "/",

outputDir: "dist",

assetsDir: "public",

indexPath: "index.html",

filenameHashing: true,

// 當在 multi-page 模式下構建時,webpack 配置會包含不一樣的插件 (這時會存在多個 html-webpack-plugin 和 preload-webpack-plugin 的實例)。如果你試圖修改這些插件的選項,請確認運行 vue inspect
pages: {
index: {
// page 的入口
entry: "src/index/main.js",
// 模板來源
template: "public/index.html",
// 在 dist/index.html 的輸出
filename: "index.html",
// 當使用 title 選項時,
// template 中的 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,

// 是否使用包含運行時編譯器的Vue核心的構建
runtimeCompiler: false,

// 默認情況下 babel-loader 忽略其中的所有文件 node_modules
transpileDependencies: [],

// 生產環境 sourceMap
productionSourceMap: false,

// cors 相關 https://developer.mozilla.org/zh-CN/docs/Web/HTML/CORS_settings_attributes
crossorigin: "use-credentials",
// webpack 配置,鍵值對象時會合並配置,為方法時會改寫配置
// https://cli.vuejs.org/guide/webpack.html#simple-configuration
// eslint-disable-next-line no-unused-vars
configureWebpack: config => {
if (process.env.NODE_ENV === "production") {
// 為生產環境修改配置...
} else {
// 為開發環境修改配置...
}
},

// webpack 鏈接 API,用於生成和修改 webapck 配置
// https://github.com/mozilla-neutrino/webpack-chain
// eslint-disable-next-line no-unused-vars
chainWebpack: config => {
// 因為是多頁面,所以取消 chunks,每個頁面只對應一個單獨的 JS / CSS
config.optimization.splitChunks({
cacheGroups: {}
});
// 'src/lib' 目錄下為外部庫文件,不參與 eslint 檢測
config.module
.rule("eslint")
.exclude.add("/Users/maybexia/Downloads/FE/community_built-in/src/lib")
.end();
},

// 配置高於 chainWebpack 中關於 css loader 的配置
css: {
// 默認情況下,只有 *.module.[ext] 結尾的文件才會被視作 CSS Modules 模塊。設置為 false 後你就可以去掉文件名中的 .module 並將所有的 *.(css|scss|sass|less|styl(us)?) 文件視為 CSS Modules 模塊
requireModuleExtension: true,

// 是否使用 css 分離插件 ExtractTextPlugin,採用獨立樣式文件載入,不採用 /<code>


分享到:


相關文章: