Vue工程模板文件 webpack打包

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: [{//加载与编译vue文件loader: 'vue-loader',options: {loaders: {less: ExtractTextPlugin.extract({//minimize 启用压缩use: ['css-loader?minimize', 'autoprefixer-loader', 'less-loader'],//加载vue文件中的样式文件fallback: 'vue-style-loader'}),css: ExtractTextPlugin.extract({use: ['css-loader', 'autoprefixer-loader', 'less-loader'],//加载vue文件中的样式文件fallback: 'vue-style-loader'})}}}]},//iview文件夹下的js编译处理
            {test: /iview\/.*?js$/,//es6编译为es5loader: 'babel-loader'},//js编译处理
            {test: /\.js$/,loader: 'babel-loader',exclude: /node_modules/},//css处理
            {test: /\.css$/,use: ExtractTextPlugin.extract({//css-loader加载css样式文件,minimize 启用压缩use: ['css-loader?minimize', 'autoprefixer-loader'],//将样式表直接插入到页面的<style>内fallback: 'style-loader'})},//less处理
            {test: /\.less/,use: ExtractTextPlugin.extract({//less-loader编译与加载less文件(需要依赖less库)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"
}

 (4)babel配置.babelrc文件

 

{"presets": ["es2015"],"plugins": ["transform-runtime"],"comments": false
}

 

转载于:https://www.cnblogs.com/mengfangui/p/8117060.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flutter的按钮如何变为不可选中_如何在Flutter中禁用按钮?

小编典典我想你可能要出台一些辅助功能&#xff0c;以build您的按钮&#xff0c;以及与一些属性键关机的沿有状态的部件。使用StatefulWidget / State并创建一个变量来保存您的条件(例如isButtonDisabled)最初将其设置为true(如果您要这样做)呈现按钮时&#xff0c;请勿将onPre…

linux下toe网卡驱动,toe命令是干什么的,有没有大神解答一下

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼[lHP14 ~]$ toe -as--> /etc/terminfo----> /usr/share/terminfo--*-: Eterm Eterm with xterm-style color support (X Window System)--*-: Eterm-256color Eterm with xterm 256-colors--*-: Eterm-88color Eterm with 88…

ALSA声卡笔记2---ASoC驱动框架

1、简单了解一下ASOC 在嵌入式系统里面的声卡驱动为ASOC&#xff08;ALSA System on Chip&#xff09; &#xff0c;它是在ALSA 驱动程序上封装的一层 分为3大部分&#xff0c;Machine&#xff0c;Platform和Codec ,三部分的关系如下图所示&#xff1a;其中Machine是指我们的…

举例说明语言接触会造成哪些结果_语言学概论全真模拟演练(二)

第一部分选择题(30分)一、单项选择题(本大题共20小题&#xff0c;每小题1分&#xff0c;共20分。在每小题列出的四个备选项中只有一个是符合题目要求的&#xff0c;请将其代码填写在题后的括号内&#xff0c;错选、多选或来选均无分。)1.语言符号可变性的根本原因在于语言符号的…

linux下ceontab不起作用,linux下crontab 不能执行的原因

1.相关sh文件没有x权限2.相关sh文件中&#xff0c;不包含如下的信息&#xff1a;[oracleleiredhat u01]$ cat job.shexport ORACLE_BASE/u01/app/oracleexport ORACLE_HOME/u01/app/oracle/oracle/product/10.2.0/db_1PATH/u01/app/oracle/oracle/product/10.2.0/db_1/bin:$PAT…

drive下载 synology_群晖 Synology Drive 的安装与使用

首先进入“套件中心”&#xff0c;然后在搜索框中输入“drive”&#xff0c;出现的结果中能看到需要安装的套件了&#xff0c;点击“立即安装”即可&#xff0c;剩下就是确认和下一步&#xff0c;如图&#xff1a;当然我们也要安装安装完后该套件会四个选项&#xff1a;立即打开…

dev_open linux,linux 伪终端设备 /dev/ptmx

伪终端(pseudoterminal): ptmx, pts (伪终端master和伪终端slave)./dev/ptmx用于创建伪终端主从设备对.当我们用open打开/dev/ptmx设备后, 返回主设备的文件描述符,并且在/dev/pts/目录下创建一个伪终端从设备.在成功打开/dev/ptmx后, 可以通过函数ptsname()来获取从设备的path…

fetch git pull 切换_git fetch git pull

解析.git文件夹进入正题之前&#xff0c;我们先来看看.git文件夹1.config配置文件[core]repositoryformatversion 0filemode truebare falselogallrefupdates truesharedRepository group[remote "origin"]url https://xxx/xxx/xxx.gitfetch refs/heads/*:ref…

C语言对stm32f103程序,STM32F103WIFI程序C语言

《STM32F103WIFI程序C语言》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《STM32F103WIFI程序C语言(33页珍藏版)》请在人人文库网上搜索。1、实用标准文案 AP模式 AP的SSID &#xff1a; ATWAP11BG,LAUVAN(SSID),CHI AP的KEY: : ATWAKEYWPA2PSK,AES,22222222 AP模式&…

python之路_自定义属性、json及其他js补充

一、自定义属性 我们知道&#xff0c;在前端页面渲染的过程中&#xff0c;我们可能会需要用到一些后端传来的参数&#xff0c;这种参数的获取我们一般是通过模板语言渲染得到。但是当这些参数是在js文件中被用到&#xff08;js代码若是单独以文件形式被引用&#xff0c;模板语言…

python中类型错误、计数不采用关键字的错误怎么改_Python设计错误

你要求链接或其他来源&#xff0c;但实际上没有。这些信息散布在许多不同的地方。什么才是真正构成设计错误的因素&#xff1f;您是只考虑语言定义中的语法和语义问题&#xff0c;还是包括诸如平台和标准库问题以及特定实现问题等实用问题&#xff1f;您可以说&#xff0c;从性…

C语言打印日历总结报告,C语言打印日历

应同学的要求&#xff0c;写了个日历&#xff0c;输入年份&#xff0c;输出12个月份的日历表&#xff0c;代码如下 &#xff1a;#includebool isLeap(int year){if((year%40 && year%100!0) || (year%4000))return 1;elsereturn 0;}void printCalendar(int year){int d…

电文的编码和译码c语言实现,电文的编码及译码.doc

数据结构课程设计题目&#xff1a;电文的编码与译码院系&#xff1a;班级&#xff1a;学号&#xff1a;姓名&#xff1a;2014-2015年度 第1学期目录一&#xff0e;题目&#xff1a;电文的编码与译码3二&#xff0e;设计目标3三&#xff0e;问题描述3四&#xff0e;需求分析3五&…

java中二进制怎么说_面试常用:说清楚Java中synchronized和volatile的区别

回顾一下两个关键字&#xff1a;synchronized和volatile1、Java语言为了解决并发编程中存在的原子性、可见性和有序性问题&#xff0c;提供了一系列和并发处理相关的关键字&#xff0c;比如synchronized、volatile、final、concurren包等。2、synchronized通过加锁的方式&#…

python 日记 day4。

1.为何数据要分类 数据是用来表示状态的&#xff0c;不同的状态应该用不同类型的数据来表示。 2.数据类型 数字 字符串 列表 元组 字典 集合 列表&#xff1a;列表相比于字符串&#xff0c;不仅可以储存不同的数据类型&#xff0c;而且可以储存大量数据&#xff0c;32位python的…

c语言复合语句开始标记字符,国家开放大学C语言程序设计A第一次形考任务及答案(2020年整理)(7页)-原创力文档...

;学 海 无 涯 ;;学 海 无 涯 ;学 海 无 涯 ;学 海 无 涯二、判断题(共 60 分&#xff0c;每小题 2 分。叙述正确则回答“是”&#xff0c;否则回答“否”)题目 21C 语言中的每条简单语句以分号作为结束符。对 题目 22C 语言中的每条复合语句以花括号作为结束符。错 题目 23在 C…

搜索不到投屏设备怎么办_电视投屏搜索不到设备解决方案

手机投屏电视想必许多人都用过&#xff0c;但是仍然有些人不会投屏&#xff0c;或者说投屏不成功。今天小编就给大家讲解&#xff0c;手机投屏电视&#xff0c;搜索不到设备怎么解决呢&#xff1f;在解决这个问题之前&#xff0c;我们先了解一下&#xff0c;手机投屏电视需要哪…

准确率(Accuracy), 精确率(Precision), 召回率(Recall)和F1-Measure(对于二分类问题)

首先我们可以计算准确率(accuracy),其定义是: 对于给定的测试数据集&#xff0c;分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率。 下面在介绍时使用一下例子&#xff1a; 一个班级有20个女生&#xff0c;80个男生。现在一个分类器需要…

js与c语言互相调用,Objc与JS间相互调用

过去3、4年都在进行跨平台的混合应用开发&#xff0c;但一直没有系统梳理跨平台技术的底层原理&#xff0c;趁新工作未正式入职&#xff0c;这里整理一下。跨平台的一种实现是基于webview。所谓webview&#xff0c;实质是在原生app中打开一个内嵌浏览器&#xff0c;具体到iOS平…

swift 拖动按钮_Swift - 单元格滑动按钮库SwipeCellKit使用详解1(基本用法)

在之前的两篇文章中我分别介绍了如何使用 iOS8和 iOS11提供的相关代理方法&#xff0c;来实现 tableView单元格滑动事件按钮&#xff1a;但它们局限性还是比较大的&#xff0c;前者只能实现尾部按钮&#xff0c;且按钮只能使用文字无法使用图片。而后者对系统版本又要求比较高。…