webpack 小记
零、入口与输出
//对像语法
entry: {
aa: __dirname + '/src/aa.js', //(chunkName :path)
bb: __dirname + '/src/bb.js'
},
output: {
filename: '[name]-[hash].js',
path: __dirname + '/dist'
}
//单入口
entry: './src/aa.js',
output: {
filename: 'bundle.js',
path: __dirname + '/dist' //绝对路径(__dirname为文件所在目录的绝对路径)
}
//数组
entry: [ './src/aa.js' , './src/bb.js'],
output: {
filename: [变量] + '.js',
path: __dirname + '/dist'
}
一、提取公共代码
plugins:[
new webpack.optimize.CommonsChunkPlugin({
name: 'common',
filename: 'aa.js', //忽略则以name为输出文件的名字,否则以此为输出文件名字
chunks: ['aa', 'bb'],
minChunks: true
})
]
name 或者 names:创建的chunk的名称,如果是 names 数组,则相当于为数组里的每个chunk 实例化插件;
filename:输出的 chunk的文件名;
chunks:这是一个元素为 chunk.name的数组,插件将会从这些 chunks 里提取 common chunks(若忽略,所有chunk都被选择);
minSize:非必填,common chunk 的文件大小至少有 minSize 才会被创建;
minChunks:至少有minChunks个 chunk 共有的代码 才会被提取(Infinity:chunk里引用的模块不会被提取;true:chunk里的所有公共部分都会提取);
(若想将css从common chunk中 提取出单独的css文件:
loaders:[{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: 'css-loader'
})
},...]
plugins:[
new ExtractTextPlugin({
filename: '[name].css',
allChunks: true
}),
]
)
二、加载器
module: {
loaders: [ {
test: /\.js$/, loader: 'babel-loader', //必须加‘-loader’
exclude: /node_modules/,
query: { presets: ['es2015'] }
},{
test: /\.css$/,
loader: 'style-loader!css-loader'
},{
test: /\.scss$/,
loader: 'style-loader!css-loader!sass-loader?sourceMap=true!postcss-loader' //我们需要在js文件里,通过require的方式来引入css,需要安装css-loader,
style-loader(安装style-loader的目的是为了在html中以style的方式嵌入css)。
}
]
}
三、HTML自动引用 JS/CSS
安装 npm install --save-dev html-webpack-plugin
plugins: [
new HtmlWebpackPlugin({
filename: 'views/list.html',
template: 'src/modules/app/list/index.html',
chunks: ['common', 'List'],
hash: true}),
]
/**
*filename - 输出文件名,相对路径output.path
* template - HTML模板,相对配置文件目录
* chunks - 只包含指定的文件(打包后输出的JS/CSS),不指定的话,它会包含生成的所有js和css文件
* excludeChunks - 排除指定的文件(打包后输出的JS/CSS),比如:excludeChunks: ['dev-helper']
* hash
**/
四、自动添加兼容前缀(使用postcss的autoprefixer插件)
plugins: [
new webpack.LoaderOptionsPlugin({
options: {
postcss: function(){
return [
require("autoprefixer")({
browsers: ['ie>=8','>1% in CN'] , //(['Android >= 2.3','ios>=7'])
cascade: true, //美化属性值(冒号对齐)
})
]
}
}
})
也可以配置 postcss.config.js 而不写在plugins里:
module.exports = {
plugins: [
require('autoprefixer')({ /* ...options */ })
]
}
或直接使用autoprefixer-loader:
loaders: [{
test: /\.css$/,
loader: 'style-loader!css-loader!autoprefixer-loader?{browsers:["last 2 version", "android>=2.3"]}',
//...
}]
五、自动刷新
安装 npm install --save-dev webpack-dev-server
配置
devServer: {
contentBase: "./public", //本地服务器所加载的页面所在的目录
//colors: true, //终端中输出结果为彩色(新版本已取消该属性)
historyApiFallback: true, //不跳转
inline: true, //实时刷新
port : '8008' //默认8080
}
命令:
webpack-dev-server --inline
六、Source Map
devtool: 'eval-source-map' //开发环境 devtool: 'source-map' //生产环境 //具体原理待研究
webpack 小记的更多相关文章
- webpack使用小记
前言 webpack是目前前端开发必不可少的一款模块加载器兼构建工具,它能极其方便的处理各种资源的打包和使用, 让前端开发获得与后端开发几乎一致的体验. webpack特点 webpack 是以 co ...
- 关于webpack下热更新?&自动刷新?的小记(非vue-cli)
写本随笔时:webpack4.6.0 为何标题用?号,因为老衲也不知是否用词正确,大概是这样的说法: webpack4.0引入生产模式和开发模式,在开发时使用 webpack 打包后不压缩,所以只需要 ...
- 小记:vue 及 react 的工程项目入口小结及 webpack 配置多页面应用参考
一.前言 闲暇时间,看了下前端的基础知识,有幸参与了公司公众号项目前面的一个阶段,学习到了一些前端框架的相关知识 小结了一下 自己练习通过新建一个个文件组织起项目的过程中的一些理解 二.项目入口 vu ...
- 从 Webpack 到 Snowpack, 编译速度提升十倍以上——TRPG Engine迁移小记
动机 TRPG Engine经过长久以来的迭代,项目已经显得非常臃肿了.数分钟的全量编译, 每次按下保存都会触发一次10s到1m不等的增量编译让我苦不堪言, 庞大的依赖使其每一次编译都会涉及很多文件和 ...
- 工程优化暨babel升级小记
小记背景 随着业务代码的增多,项目代码的编译时长也在增多,遂针对这个痛点在dev下做些优化 第一部分:优化dev编译时间 这里优化的主要思路是在dev环境下,单独出来一个dll配置文件,将项目中的部分 ...
- webpack + vuecli多页面打包基于(vue-template-admin)修改
转: webpack + vuecli多页面打包基于(vue-template-admin)修改 遇见的问题TypeError: Cannot read property 'tap' of undef ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- webpack之傻瓜式教程
接触webpack也有挺长一段时间了,公司的项目也是一直用着webpack在打包处理,但前几天在教新人的情况下,遇到了一个问题,那就是:尽管网上的webpack教程满天飞,但是却很难找到一个能让新人快 ...
- 细说前端自动化打包工具--webpack
背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.用过Dreamweaver的都知道,做网页就像用word编辑文档 ...
随机推荐
- Android开发——View动画、帧动画和属性动画详解
0. 前言 Android动画是面试的时候经常被问到的话题.我们都知道Android动画分为三类:View动画.帧动画和属性动画. 先对这三种动画做一个概述: View动画是一种渐进式动画,通过图 ...
- 7 tftp
1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点: ...
- Python 3基础教程22-单个列表操作
本文来介绍列表的操作,先看看单个列表的操作,列表有多个方法.以下多行代码,建议你写一个方法,测试运行一个方法,不然看起来很乱. # 元组操作 x = [5,6,2,1,6,7,2,7,9] # app ...
- Ruby中数组的&操作
最近在忙一个项目,好久没有写日志了,项目终于接近尾声,可以适当放松一下,所以记一下在这个项目中发现的有趣事情: 数组的 与 操作 一直以为两个数组A和B相与,谁前谁后都一样,不过这次在项目中突然想试一 ...
- 装机、UEFI双系统安装
装机设置 设置默认中图标显示查看-选项-查看-应用到文件夹 控制面板-语言-管理输入法 word-选项-取消输入法设置处于活动状态word-字体-设置默认值 高DPI的显示屏,需要使用125%的缩放, ...
- Sublime Text 3配置 Python3 开发环境
来自 https://www.cnblogs.com/zhangqinwei/p/6886600.html Sublime Text作为一款支持多种编程语言的文本编辑神器,深受广大开发者的喜爱.通过简 ...
- 用tensorflow实现自然语言处理——基于循环神经网络的神经语言模型
自然语言处理和图像处理不同,作为人类抽象出来的高级表达形式,它和图像.声音不同,图像和声音十分直觉,比如图像的像素的颜色表达可以直接量化成数字输入到神经网络中,当然如果是经过压缩的格式jpeg等必须还 ...
- ORACLE和SQL语法区别归纳
数据类型比较类型名称 Oracle SQLServer 比较字符数据类型 CHAR CHAR 都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb ...
- 基于JWT的无状态分布式授权【本文摘自智车芯官网】
简介 JWT是一种用于HTTP交互双方之间传递安全信息的简洁的.安全的表述性声明规范.JWT作为一个开发的标准,它定义了一种简洁的,自包含的方法用于通信双发之间以JSON形式安全传递.且因为数字证书的 ...
- js表单验证工具包
常用的js表单验证方法大全 /* 非空校验 : isNull() 是否是数字: isNumber(field) trim函数: trim() lTrim() rTrim() 校验字符串是否为空: ch ...