/Vue-Helios

基于webpack 3.x 的vue 2.x 脚手架

Primary LanguageCSS

Vue-Helios

Vue 脚手架

npm script 命令

# 安装依赖
npm install

# 开启本地server
npm run dev

# 构建生产环境代码,打包生成可以直接上传通天塔的zip包
npm run build

# 构建生产环境代码,并生成可视化的bundle分析报告
npm run build --report

目录结构

bhp
├─ .babelrc   // babelrc配置
├─ .editorconfig  // 编辑器缩进换行配置,需要安装相关插件
├─ .eslintignore  // eslint 忽略文件
├─ .eslintrc.js   // eslint 规则配置文件
├─ .gitignore  // git 忽略文件
├─ .npmrc   // npm 镜像配置,使用jd内部npm库
├─ .postcssrc.js
├─ package-lock.json
├─ package.json
├─ README.md

├─ build
   ├── build.js   // 打包生产代码
   ├── check-versions.js   // node、npm 版本检查
   ├── pack.js   // 生产zip包
   ├── utils.js
   ├── vue-loader.conf.js   // vue文件解析配置
   ├── webpack.base.conf.js  // webpack 基础配置
   ├── webpack.dev.conf.js   // webpack 开发环境配置
   └── webpack.prod.conf.js  // webpack 生产环境配置

├─ config
   └── index.js  // webpack、eslint等功能开关的配置主入口

├─ router
   └── index.js  // 配置页面路由

└─ src   // 项目源代码
    ├── App.vue
    ├── index.html
    ├── main.js
    
    ├─ api   // 项目中需要用到的接口
       └──index.js
    
    ├─ assets // 图片资源
    
    ├─common
      ├─ css // css资源
         ├── _common.scss
         └── _reset.css
      
      └─ js // js资源
          └── param.js  // 接口参数配置文件
    
    ├─components // vue组件
    ├─page // 导航内页面
    
    └──lib   // 公用代码库
        ├── confortableWQ.js  // WQ 链接处理
        ├── ping.js  // 埋点
        ├── redirect.js  // 判断平台,并做链接跳转
        └── shareInfo.js  // 分享信息配置

功能

  • 支持sass/es6语法
  • 支持eslint
  • 支持端口占用,开启空闲端口
  • 支持小于10k 音频视频、字体文件,转码base64
  • 支持模块热替换
  • 支持postcss/autoprefixer

配置

config/index.js 主配置文件

'use strict'
// see http://vuejs-templates.github.io/webpack for documentation.

const path = require('path');

module.exports = {
  base: {
    appName: 'app',
    entryFile: './src/main.js', // Vue入口文件,因为baseConfig配置了绝对路径,所以不需要'../src/main.js'
    resolveAlias: { // 设置import路径别名
      'vue$': 'vue/dist/vue.esm.js',
      '@': path.resolve(__dirname, '../src')
    },
    compressSize: 10000 // 小于10k的音频、视频和字体文件,会被转成base64
  },
  dev: {
    // 路径 设置
    assetsSubDirectory: 'static', // 指定CopyWebpackPlugin 插件 to参数
    assetsPublicPath: '/', // 指定output.publicPath
    staticDirectory: '../static', // 指定CopyWebpackPlugin 插件 from参数,相对于/build目录下的文件

    // webpack-dev-server 参数相关 (https://webpack.js.org/configuration/dev-server/#devserver)
    host: 'localhost', // 设置host,优先级小于process.env.HOST
    port: 8080, // 设置port,优先级小于process.env.PORT,如果port被占用会使用一个空闲port
    autoOpenBrowser: true, // 执行npm run dev命令时,是否自动开启浏览器
    errorOverlay: true, // 开启,出现错误会在浏览器以蒙层全屏显示。
    poll: false, // 是否轮询文件系统

    // friendly-errors-webpack-plugin (https://www.npmjs.com/package/friendly-errors-webpack-plugin)
    notifyOnErrors: true, // 是否以Notification API方式提示错误

    // ESLint
    useEslint: true, // 设置true,打包阶段会显示在console控制台显示lint错误和警告的代码
    showEslintErrorsInOverlay: true, // 设置true,lint错误和警告会在浏览器蒙层显示

    // source maps 设置
    devtool: 'cheap-module-eval-source-map',

    // vue-loader 设置 (https://vue-loader.vuejs.org/en/options.html)
    // 如果在调试 *.vue 文件是遇到问题,设置为false
    cacheBusting: true, // css缓存相关设置(https://css-tricks.com/strategies-for-cache-busting-css/)
    cssSourceMap: true  // 默认开启css sourcemap
  },

  build: {
    // html-webpack-plugin 设置
    index: path.resolve(__dirname, '../dist/index.html'), // filename属性,指定生成的html文件名

    // Paths
    assetsRoot: path.resolve(__dirname, '../dist'), // output.path 绝对目录
    assetsSubDirectory: './', // 指定CopyWebpackPlugin 插件 to参数
    assetsPublicPath: '//static.360buyimg.com/sbs/', // 指定output.publicPath,配置线上路径前缀
    staticDirectory: '../static', // 指定CopyWebpackPlugin 插件 from参数,相对于/build目录下的文件

    // source maps
    productionSourceMap: false,  // 生产环境不输出sourcemap
    devtool: '#source-map',

    // gzip压缩,设置true需要安装 `npm install --save-dev compression-webpack-plugin`
    productionGzip: false,
    productionGzipExtensions: ['js', 'css'],

    // 通过运行`npm run build --report`命令,显示包分析
    bundleAnalyzerReport: process.env.npm_config_report
  }
}