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

前端构建工具本人 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. hashCode之二--Java:重写equals()和hashCode()

    以下内容总结自<Effective Java>. 1.何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念). 2.设计equals() [1]使用in ...

  2. 纯js+html+css实现模拟时钟

    前几天没事写的个模拟时钟,代码仅供小白参考,大神请自动绕过. <!DOCTYPE html> <html lang="en"> <head> & ...

  3. ResultSetMetaData和ResultSet

    我现在有一张表t_product;我们查询所有的商品:SELECT * FROM t_product; 上述所有的数据都可以封装成一个对象,我们称这个查询出来的对象为结果集对象:ResultSet. ...

  4. java多态和强制类型转换

    子类可以赋值给超类,称之为向上转型,这个是自动的. 超类不可以赋值给子类,这个是向下转型,需要我们手动实现. 赋值给超类的子类引用在运行期间将表现出不同的特性,这就是多态. 小类型    可转换为   ...

  5. 23. CTF综合靶机渗透(十六)

    靶机说明: VM Name: JIS-CTF : VulnUpload Difficulty: Beginner Description: There are five flags on this m ...

  6. 4.XXE (XML External Entity Injection)

    XXE (XML External Entity Injection) 0x01 什么是XXE XML外部实体注入 若是PHP,libxml_disable_entity_loader设置为TRUE可 ...

  7. HN669打包工具--调试文档

    调试有两种方式,一是直接在游戏工程上面调试,这比较麻烦,需要根据插件配置文件和脚本文件去配置好工程选项后,才能调试.简单一点就是通过脚本文件打包后会有生成游戏工程对应每个渠道的工程. 如下图:这个工程 ...

  8. 网页DIV+CSS布局和动画美化全程实例 (陈益材) 随书光盘

    网站的建站技术近几年得到迅速的发展,网页的布局与特效动画技术层出不穷,网站建设已经从简单的技术支持时代衍变到现在的视觉美化时代.但如何使设计的网页高人一筹,达到让人过目不忘的境界,如何追求以最简单的特 ...

  9. jQuery :odd 选择

    <!DOCTYPE html><html><head><meta charset="utf-8"><script src=&q ...

  10. 1、jquery_属性和选择器

    1.ID选择器 2.attr和val和removeattr 3.attr和removeattr和val <html> <head> <meta charset=" ...