博主不易,不求赞赏,希望把自己遇到的难点写出来,以及希望自己能有能力写出一篇不错的博文。

前端构建工具本人 bootstrap+jquery用gulp

vue+element 用webpack

本人最近写的一个vue项目的目录结构

一:package.json

{
"name": "szhong",
"version": "1.0.0",
"description": "这是三中建材官网",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack-dev-server --progress --config webpack.config.dev.js --port 6008 --open --hot",
"build": "webpack --progress --config webpack.config.prod.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.18.0",
"element-ui": "^2.3.4",
"iview": "^2.13.0",
"jquery": "^3.3.1",
"v-distpicker": "^1.0.16",
"vue": "^2.5.16",
"vue-lazyload": "^1.2.3",
"vue-router": "^3.0.1",
"moment": "^2.22.1",
"vuex": "^3.0.1"
},
"devDependencies": {
"babel-core": "^6.26.2",
"babel-loader": "^7.1.4",
"babel-plugin-component": "^1.1.0",
"babel-plugin-import": "^1.7.0",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"babel-preset-env": "^1.6.1",
"clean-webpack-plugin": "^0.1.19",
"css-loader": "^0.28.11",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "^1.1.11",
"html-webpack-plugin": "^3.2.0",
"style-loader": "^0.20.3",
"url-loader": "^1.0.1",
"vue-loader": "^14.2.2",
"vue-template-compiler": "^2.5.16",
"webpack": "^3.11.0",
"webpack-dev-server": "^2.11.2"
}
}

二:webpack.config.dev.js

const HtmlWebpackPlugin = require('html-webpack-plugin')
const webpack = require('webpack') module.exports = {
entry: './src/main.js',//入口
module: {
rules: [
{
test: /\.vue$/,
use: ['vue-loader']
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
},
{
test: /\.(ttf|eot|woff|svg|jpg|png|gif)$/,
use: [
{
loader: 'url-loader'
}
]
}
]
},
devServer: {
overlay: true //报错的时候,在页面上弹出一个遮罩,并且把错误显示在上面
},
resolve: {
//给我们导入的文件自动按照从前到后的顺序加后缀
extensions: [".vue", ".js", ".json"]
},
plugins: [
//将来以template为模版,生成一个index.html并且发布到webpack-dev-server开启的node服务器上面去
new HtmlWebpackPlugin({
template: './template.html'
}),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
]
}

三:webpack.config.prod.js

const HtmlWebpackPlugin = require('html-webpack-plugin')
const webpack = require('webpack')
const path = require('path')
//打包之前,删除dist目录
var CleanWebpackPlugin = require('clean-webpack-plugin')
//从bundle.js中抽离css
const ExtractTextPlugin = require("extract-text-webpack-plugin") module.exports = {
entry: {
"axios":['axios'],
"quanjiatong":['vue','vue-router','vuex'],
"jquery":['jquery'],
"moment":['moment'],
"v-distpicker":['v-distpicker'],
"vue-lazyload":['vue-lazyload'],
"bundle":'./src/main.js' //别忘记了我们自己的业务代码
},//多入口配置
output:{//生产阶段,必须要设置它
path:path.resolve(__dirname,"dist"),
filename:'js/[name]-[hash:5].js'
},
module: {
rules: [
{
test: /\.vue$/,
use: ['vue-loader']
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: {
loader:'css-loader',
options:{
minimize: true, //在抽取css的时候同时进行压缩
publicPath:'dist/css'
}
}
})
},
{
test: /\.(jpg|png|gif)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192,//打包的阀值,如果我们的资源小于阀值,就会打包进入bundle.js,如果静态资源超过阀值,单独提取出来,不打包进入bundle.js,阀值根据公司的需要来设置
name:'statics/imgs/[name]-[hash:5].[ext]'
}
}
]
},
{
test: /\.(ttf|eot|woff|svg)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192,//打包的阀值,如果我们的资源小于阀值,就会打包进入bundle.js,如果静态资源超过阀值,单独提取出来,不打包进入bundle.js,阀值根据公司的需要来设置
name:'statics/fonts/[name]-[hash:5].[ext]'
}
}
]
},
{
test: /\.js$/,
exclude: /node_modules/, //排除node_modules里面文件,一定要加上
loader: "babel-loader"
}
]
},
resolve: {
//给我们导入的文件自动按照从前到后的顺序加后缀
extensions: [".vue", ".js", ".json"]
},
plugins: [
//打包之前,删除dist目录,写在其它插件前面
new CleanWebpackPlugin('dist'), //将来以template为模版,生成一个index.html并且发布到webpack-dev-server开启的node服务器上面去
new HtmlWebpackPlugin({
template: './template.html',
minify:{
removeComments: true,//压缩注释
minifyJS: true,//压缩js
minifyCSS: true,//压缩css
collapseWhitespace: true,//去除空格
}
}),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
}),
//设置当前环境为生产环境
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: '"production"'
}
}),
//压缩,必须先转成es5,再压缩
new webpack.optimize.UglifyJsPlugin({
compress: {
warnings: false, //压缩掉警告
drop_debugger: true,
drop_console: true //去除console.log
},
comments: false //去掉版权信息等注释
}), //抽离第三方包的,这里不要写bundle.js
new webpack.optimize.CommonsChunkPlugin({
name: ["vue-lazyload", "v-distpicker", "moment", "jquery", "quanjiatong", "axios"],
// filename: "vendor.js"
// (给 chunk 一个不同的名字) minChunks: Infinity, //可以接一个数字,比如2,只有我们的第三方包至少被引用了2次,我才抽,如果只有一次,就不抽,Infinity代表不管你是使用了多少次我都抽取
// (随着 entry chunk 越来越多,
// 这个配置保证没其它的模块会打包进 vendor chunk)
}),
//把抽离的css放在哪里去
new ExtractTextPlugin("css/styles-[hash:5].css"), //只保留moment中的简体中文
new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /zh-cn/)
]
}

webpack前端自动化构建工具的更多相关文章

  1. 前端自动化构建工具gulp的使用总结

    前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...

  2. 前端自动化构建工具——gulp

    gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...

  3. 前端自动化构建工具 Gulp 使用

    一个月没写博客了,今天有时间,就写个gulp的入门使用吧.. 简介:gulp是一个前端自动化构建工具,可以实现代码的检查.压缩.合并……等等,gulp是基于Node.js的自动任务运行器 一.安装No ...

  4. gulp前端自动化构建工具新手入门篇

    很久没有更新博文了. 经过了一次年前吐血的赶项目,终于在年后回血了.趁着有空,新学到了一个前端自动化构建工具-gulp. 现在我们通过这3个问题来学习一下: 1.什么是gulp? 2.为什么要用gul ...

  5. 前端自动化构建工具--Gulp&&Webpack

    前端构建工具的作用可以认为是对源项目文件或资源进行文件级处理,将文件或资源处理成需要的最佳输出结构和形式. 在处理过程中,我们可以对文件进行模块化引入.依赖分析.资源合并.压缩优化.文件嵌入.路径替换 ...

  6. 前端自动化构建工具-yoman浅谈

    如今随着前端技术的飞速发展,前端项目也变得越来越复杂. 快速的搭建一个集成多种工具和框架的复杂前端项目也越来越成为一种需求. 当然如果你要自己从0开始完全自己diy,绝对可以,只不过需要耗费一些不少的 ...

  7. gulp前端自动化构建工具

    博主不易,不求赞赏,希望把自己遇到的难点写出来,以及希望自己能有能力写出一篇不错的博文. 前端构建工具本人 bootstrap+jquery用gulp vue+element 用webpack 引文 ...

  8. 前端自动化构建工具 gulp 学习笔记 一、

    一.我对gulp的初期理解 是一种前端辅助开发工具 可以帮你把js,css,img等文件 合并.压缩,图片好像是合并为精灵图,合并为精灵图之后,还会生成一个css样式表. 官方解说是:基于流的自动化构 ...

  9. 前端自动化构建工具webpack (一)之webpack安装 和 设置webpack.confi.js

    目的:  模块化开发,组件化开发,让代码符合开发规范,更高效 webpack作用:从pack,就知道这是包的意思,比较专业点叫做前端自动化打包构建工具,代码错误检查,预处理,文件合并(打包),代码压缩 ...

随机推荐

  1. cocos2d-x 中 xml 文件读取

    实现类 CXmlParse 啥也不说了  直接上硬货  believe yourself   一看就明白 CXmlParse.h #ifndef __C_XML_PARSE__ #define __C ...

  2. loj514模拟只会猜题意

    果然是道模拟... 一开始想线段树 看了一眼数据范围:“这tm不是前缀和吗” 然后水过 #include<iostream> #include<cstdio> #include ...

  3. 20179203李鹏举 《Linux内核原理与分析》第一周学习笔记

    Linux基础入门 一.Linux的基础学习 1.1 Linux的重要基础操作 Linux不同于Windows的纯粹的图形化界面,虽然也有图形桌面的操作但是更多的操作还是通过命令行来进行,当然除了命令 ...

  4. long long 与__int64使用总结

    本文摘自网络.原文网址:http://blog.sina.com.cn/s/blog_6aa178410100vlwr.html 前言: 在16位环境下,int/unsigned int 占16位,l ...

  5. 删除老的Azure Blob Snapshot

    客户有这样的需求:每天需要对VM的数据进行备份,但如果备份的时间超过一定的天数,需要进行清除. 本文也是在前一篇Azure Blob Snapshot上的优化. "Azure blob St ...

  6. boost::io_service解读

    boost::io_service解读 asio是boost提供的一个c++异步编程模型库,其核心类io_service,在多线程编程里面提供了任务队列和任务分发功能,在socket.io编程里主要作 ...

  7. java基础知识(11)---多线程

    多线程: 进程:正在进行中的程序.其实进程就是一个应用程序运行时的内存分配空间. 线程:其实就是进程中一个程序执行控制单元,一条执行路径.进程负责的是应用程序的空间的标示.线程负责的是应用程序的执行顺 ...

  8. C#调用ODBC连接SQL Server数据库的存储过程

    OdbcConnection con = new OdbcConnection("Driver={SQL Server};server=PC-200201070359;uid=sa;pwd= ...

  9. 【总结整理】JQuery基础学习---DOM篇

    前言: 先介绍下需要用到的浏览器提供的一些原生的方法(这里不处理低版本的IE兼容问题) 创建流程比较简单,大体如下: 创建节点(常见的:元素.属性和文本) 添加节点的一些属性 加入到文档中 流程中涉及 ...

  10. Servlet编程实例 续2

    -----------------siwuxie095 Servlet 跳转之请求的重定向 继续完善登录实例,如下: login.jsp 不变,修改 LoginServlet,新建两个 JSP 文件 ...