Vue工程模板文件 webpack打包配置方法

作者:孟繁贵 时间:2024-05-10 14:15:40 

1、github

github地址:https://github.com/MengFangui/VueProjectTemplate

2、webpack配置

(1)基础配置webpack.base.config.js


const path = require('path');
//处理共用、通用的js
const webpack = require('webpack');
//css单独打包
const ExtractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
//入口文件
entry: {
 main: './src/main',
 vendors: './src/vendors'
},
output: {
 path: path.join(__dirname, './dist')
},
module: {
 rules: [
  //vue单文件处理
  {
   test: /\.vue$/,
   use: [{
    loader: 'vue-loader',
    options: {
     loaders: {
      less: ExtractTextPlugin.extract({
       //minimize 启用压缩
       use: ['css-loader?minimize', 'autoprefixer-loader', 'less-loader'],
       fallback: 'vue-style-loader'
      }),
      css: ExtractTextPlugin.extract({
       use: ['css-loader', 'autoprefixer-loader', 'less-loader'],
       fallback: 'vue-style-loader'
      })
     }
    }
   }]
  },
  //iview文件夹下的js编译处理
  {
   test: /iview\/.*?js$/,
   loader: 'babel-loader'
  },
  //js编译处理
  {
   test: /\.js$/,
   loader: 'babel-loader',
   exclude: /node_modules/
  },
  //css处理
  {
   test: /\.css$/,
   use: ExtractTextPlugin.extract({
    //minimize 启用压缩
    use: ['css-loader?minimize', 'autoprefixer-loader'],
    fallback: 'style-loader'
   })
  },
  //less处理
  {
   test: /\.less/,
   use: ExtractTextPlugin.extract({
    use: ['css-loader?minimize', 'autoprefixer-loader', 'less-loader'],
    fallback: 'style-loader'
   })
  },
  //图片处理
  {
   test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/,
   loader: 'url-loader?limit=1024'
  },
  //实现资源复用
  {
   test: /\.(html|tpl)$/,
   loader: 'html-loader'
  }
 ]
},
resolve: {
 //自动扩展文件后缀名,意味着我们require模块可以省略不写后缀名
 extensions: ['.js', '.vue'],
 //模块别名定义,方便后续直接引用别名,无须多写长长的地址
 alias: {
  'vue': 'vue/dist/vue.esm.js'
 }
}
};

(2)开发环境配置webpack.dev.config.js


//处理共用、通用的js
const webpack = require('webpack');
//处理html模板
const HtmlWebpackPlugin = require('html-webpack-plugin');
//css单独打包
const ExtractTextPlugin = require('extract-text-webpack-plugin');
//合并配置
const merge = require('webpack-merge');
const webpackBaseConfig = require('./webpack.base.config.js');
//fs模块用于对系统文件及目录进行读写操作
const fs = require('fs');
//编译前用node生成一个env.js的文件,用来标明当前是开发(development)还是生产环境(production)
fs.open('./src/config/env.js', 'w', function(err, fd) {
const buf = 'export default "development";';
fs.write(fd, buf, 0, buf.length, 0, function(err, written, buffer) {});
});
module.exports = merge(webpackBaseConfig, {
//打包代码的同时生成一个sourcemap文件,并在打包文件的末尾添加//# souceURL,注释会告诉JS引擎原始文件位置
devtool: '#source-map',
output: {
 //线上环境路径
 publicPath: '/dist/',
 filename: '[name].js',
 chunkFilename: '[name].chunk.js'
},
plugins: [
 //css单独打包
 new ExtractTextPlugin({
  filename: '[name].css',
  allChunks: true
 }),
 //通用模块编译
 new webpack.optimize.CommonsChunkPlugin({
  //提取的公共块的块名称(chunk)
  name: 'vendors',
  //生成的通用的文件名
  filename: 'vendors.js'
 }),
 new HtmlWebpackPlugin({
  //输出文件
  filename: '../index.html',
  //模板文件
  template: './src/template/index.ejs',
  //不插入生成的 js 文件,只是单纯的生成一个 html 文件
  inject: false
 })
]
});

(3)线上环境配置webpack.prod.config.js


//处理共用、通用的js
const webpack = require('webpack');
//处理html模板
const HtmlWebpackPlugin = require('html-webpack-plugin');
//css单独打包
const ExtractTextPlugin = require('extract-text-webpack-plugin');
//合并配置
const merge = require('webpack-merge');
const webpackBaseConfig = require('./webpack.base.config.js');
//fs模块用于对系统文件及目录进行读写操作
const fs = require('fs');
//编译前用node生成一个env.js的文件,用来标明当前是开发(development)还是生产环境(production)
fs.open('./src/config/env.js', 'w', function (err, fd) {
const buf = 'export default "production";';
fs.write(fd, buf, 0, buf.length, 0, function (err, written, buffer){});
});
module.exports = merge(webpackBaseConfig, {
output: {
 //线上环境路径
 publicPath: 'dist/',
 filename: '[name].[hash].js',
 chunkFilename: '[name].[hash].chunk.js'
},
plugins: [
 new ExtractTextPlugin({
  //css单独打包
  filename: '[name].[hash].css',
  allChunks: true
 }),
 //通用模块编译
 new webpack.optimize.CommonsChunkPlugin({
  //提取的公共块的块名称(chunk)
  name: 'vendors',
  //生成的通用的文件名
  filename: 'vendors.[hash].js'
 }),
 new webpack.DefinePlugin({
  'process.env': {
   NODE_ENV: '"production"'
  }
 }),
 //js压缩
 new webpack.optimize.UglifyJsPlugin({
  compress: {
   warnings: false
  }
 }),
 new HtmlWebpackPlugin({
  //输出文件
  filename: '../index_prod.html',
  //模板文件
  template: './src/template/index.ejs',
  //不插入生成的 js 文件,只是单纯的生成一个 html 文件
  inject: false
 })
]
});

(4)package.json文件


{
"name": "iview-project",
"version": "2.1.0",
"description": "A base project with Vue.js2、Vue-Router、webpack2 and with iView2.",
"main": "index.js",
"scripts": {
"init": "webpack --progress --config webpack.dev.config.js",
"dev": "webpack-dev-server --content-base ./ --open --inline --hot --compress --history-api-fallback --config webpack.dev.config.js",
"build": "webpack --progress --hide-modules --config webpack.prod.config.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/iview/iview-project.git"
},
"author": "Aresn",
"license": "MIT",
"dependencies": {
"vue": "^2.2.6",
"vue-router": "^2.2.1",
"iview": "^2.0.0-rc.8"
},
"devDependencies": {
"autoprefixer-loader": "^2.0.0",
"babel": "^6.23.0",
"babel-core": "^6.23.1",
"babel-loader": "^6.2.4",
"babel-plugin-transform-runtime": "^6.12.0",
"babel-preset-es2015": "^6.9.0",
"babel-runtime": "^6.11.6",
"css-loader": "^0.23.1",
"extract-text-webpack-plugin": "^2.0.0",
"file-loader": "^0.8.5",
"html-loader": "^0.3.0",
"html-webpack-plugin": "^2.28.0",
"less": "^2.7.1",
"less-loader": "^2.2.3",
"style-loader": "^0.13.1",
"url-loader": "^0.5.7",
"vue-hot-reload-api": "^1.3.3",
"vue-html-loader": "^1.2.3",
"vue-loader": "^11.0.0",
"vue-style-loader": "^1.0.0",
"vue-template-compiler": "^2.2.1",
"webpack": "^2.2.1",
"webpack-dev-server": "^2.4.1",
"webpack-merge": "^3.0.0"
},
"bugs": {
"url": "https://github.com/iview/iview-project/issues"
},
"homepage": "https://www.iviewui.com"
}

ps:下面看下如何使用webpack打包vue项目?

1、安装nodejs:使用webpack打包需要用到npm,npm(node package manager)是nodejs的包管理器,用于node插件管理(包括安装、卸载、管理依赖等),所以需要先下载安装nodejs,安装完成后使用npm -v查看是否安装完成;

2、安装cnpm(此步骤为非必须):因为npm安装插件是从国外的网站上下载的,由于网络影响,很容易就出现异常,cnpm是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。 使用npm install -g cnpm --registry=https://registry.npm.taobao.org安装,之后可以使用cnpm来代替npm;

3、全局安装vue-cli脚手架,npm install -g vue-cli (不加-g安装到当前目录;加-g安装到系统的node目录),安装完成后使用vue -V查看;

4、创建一个基于webpack模板的新项目(下载模板);使用 vue init webpack my-project(项目文件夹名);接下来进行一系列的设置后,就下载好了一个vue模板了;

5、cd my-project 进入项目文件夹;使用npm install命令安装package.json文件里的依赖,会根据前端项目的依赖关系下载好相关的组件,存在项目目录的node_modules文件夹下;

6、安装node_modules依赖后,使用命令 npm run dev 启动项目(dev配置在package.json文件中)。

总结

以上所述是小编给大家介绍的Vue工程模板文件 webpack打包网站的支持!

来源:https://www.cnblogs.com/mengfangui/archive/2017/12/26/8117060.html

标签:vue,webpack,打包
0
投稿

猜你喜欢

  • Python-接口开发入门解析

    2022-05-24 09:19:43
  • python图像处理基本操作总结(PIL库、Matplotlib及Numpy)

    2022-01-26 00:28:50
  • 教你使用SQL Server数据库进行网络链接

    2009-01-13 13:41:00
  • js获取上传文件大小示例代码

    2024-04-22 22:35:02
  • Python3基础之list列表实例解析

    2022-04-22 16:07:15
  • python中实现k-means聚类算法详解

    2021-07-18 21:42:49
  • Python获取文件所在目录和文件名的方法

    2021-04-07 05:44:35
  • Python 数据可视化之Matplotlib详解

    2022-12-30 05:33:21
  • MySQL索引之主键索引

    2024-01-25 01:52:04
  • Python中DataFrame判断两列数据是否相等的方法

    2023-12-09 10:17:37
  • mysql怎么设置最大连接数详解

    2024-01-24 04:44:55
  • 解决pytorch 模型复制的一些问题

    2022-04-23 03:57:58
  • 学习python (1)

    2022-12-10 12:59:18
  • 基于python实现的百度新歌榜、热歌榜下载器(附代码)

    2022-10-29 10:16:12
  • Pycharm不同版本镜像源添加方法

    2023-08-24 15:59:43
  • Python安装第三方库攻略(pip和Anaconda)

    2023-02-01 22:16:41
  • Python如何读写JSON格式数据

    2022-05-20 17:42:05
  • python模拟预测一下新型冠状病毒肺炎的数据

    2023-12-17 05:09:15
  • 交互设计杂七杂八

    2010-09-25 18:41:00
  • nodejs前端自动化构建环境的搭建

    2024-05-08 09:36:48
  • asp之家 网络编程 m.aspxhome.com