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

前端构建工具本人 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. H264 NALU 使用PS封装 RTP发送

    最近由于项目平台需求,要将H264 NALU封装为PS再用RTP发送,PS封装按照ISO DEC-13818-1标准.一个PS包包含PS Header, PES Header, PS system h ...

  2. [SDOI 2017] 序列计数

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4818 [算法] 考虑容斥 , 用有至少有一个质数的合法序列数 - 没有质数的合法序列 ...

  3. [转]JS内存泄漏排查方法(Chrome Profiles)

    Google Chrome浏览器提供了非常强大的JS调试工具,Heap Profiling便是其中一个.Heap Profiling可以记录当前的堆内存(heap)快照,并生成对象的描述文件,该描述文 ...

  4. vs2015解决fopen、fscanf 要求替换为fopen_s、fscanf_s的办法

    在工程项目设置一下就行:项目属性 -- C/C++-- 预处理器 -- 预处理器定义,添加:_CRT_SECURE_NO_WARNINGS

  5. Velocity的layout功能

    一.从VelocityViewServlet到VelocityLayoutServlet 使用Velocity开发web应用时,需要在web.xml中配置一个Velocity提供的VelocityVi ...

  6. ML 徒手系列 最大似然估计

    1.最大似然估计数学定义: 假设总体分布为f(x,θ),X1,X2...Xn为总体采样得到的样本.其中X1,X2...Xn独立同分布,可求得样本的联合概率密度函数为: 其中θ是需要求得的未知量,xi是 ...

  7. 性能分析工具 DotTrance

    1 本例子采用dotTrace 5.3 版本 运行dotTrace 5.3 .exe 选择独立应用程序 Standalone    Application 选择需要测试的应用程序exe的路径 点击啊开 ...

  8. BluetoothGetRadioInfo 函数

    DWORD BluetoothGetRadioInfo( HANDLE hRadio, PBLUETOOTH_RADIO_INFO pRadioInfo );获取蓝牙设备的信息.参数: hRadio ...

  9. javaScript笔记01

    所谓勇气就是明知前方的路途充满了荆棘险阻,但还是义无反顾的的走下去. 1 Javasrcipt定义的三种方式 ·1 head中的script脚本 <!DOCTYPE html> <h ...

  10. Frequent Pattern 挖掘之二(FP Growth算法)

    Frequent Pattern 挖掘之二(FP Growth算法) FP树构造 FP Growth算法利用了巧妙的数据结构,大大降低了Aproir挖掘算法的代价,他不需要不断得生成候选项目队列和不断 ...