美文网首页
webpack由浅入深

webpack由浅入深

作者: 淡漠_微雨 | 来源:发表于2017-01-09 23:11 被阅读0次

背景

在阅读这篇文章之前,我们先来看看下面这个webpack的配置文件,如果�在此之前你已经在熟练使用webpack了,那本文给你的收获也许就比较有限,你可以快速浏览或直接跳过;如果你还对很多选项存在着疑惑,那花一段时间慢慢阅读本文,你的疑惑一定一个一个都会消失;如果你以前没怎么接触过Webpack,而你又你对webpack感兴趣,那么动手用wenpack写一个demo,写完以后你会发现你已明明白白的走进了Webpack的大门。

var webpack=require('webpack');
var path=require('path');
var fs=require('fs');
var HtmlWebpackPlugin=require('html-webpack-plugin');
var OpenBrowserPlugin=require('open-browser-webpack-plugin');
var entry={"common/core":[
'react','react-dom','react-router','react-redux','react-router-redux','redux- thunk','classnames','superagent',],
'index':'./src/entry/index.js'
};
module.exports = {
entry: entry,
resolve: {
modulesDirectories: ['', 'src', 'node_modules', path.join(__dirname, '../node_modules')],
extensions: ['', '.web.js', '.js', '.json',] },
output: {
path: path.join(__dirname, 'dist'),
publicPath: "/dist/",
filename: '[chunkhash:5].[name].js' },
module: {
loaders: [
{
test: /.js$/,
exclude: /(node_modules|typings)/,
include: /src/,
loaders: ['react-hot','babel-loader'],
},
{
test: /.json$/,
loader: 'json-loader'
},
{
test: /.less/,
loader: ExtractTextPlugin.extract( 'style', 'css!less')
},
{
test: /.css$/,
loader: ExtractTextPlugin.extract('style', 'css!postcss' )
},
{
test: /ts-helpers/,
loader: 'imports?this=>window'
},
{
test: /.(jpe?g|png|gif|svg)$/i,
loader: 'url-loader?limit=8192'
}
]
},
postcss: [ ],
plugins: [
new webpack.optimize.CommonsChunkPlugin('common/core', 'common/core.js'),
new ExtractTextPlugin('styles.css'),
new webpack.NoErrorsPlugin(),
new HtmlWebpackPlugin({
inject: false,
template: require('./src/entry/html-template'),
appMountId: 'app',
files: {
"js": ["assets/head_bundle.js", "assets/main_bundle.js"],
},
hash:true,
cache:false,
minify:{
removeComments:true,//移除HTML中的注释
collapseWhitespace:false//删除空白符与换行符
}
}),
new webpack.DefinePlugin({
DEV: true,
'process.env.NODE_ENV': true }),
new OpenBrowserPlugin({url: http://localhost:8890}),
]};

entry

  1. entry的值是字符串,这个字符串对应的模块会在启动的时候加载
  2. entry的值是数组,这个数组内所有模块会在启动的时候加载,数组的最后一个元素作为export
  3. entry的值是对象,可以构建多个bundle

output

输出文件,publicPath 输出文件存放路径 filename 输出文件名称

plugins

插件项,这里我们使用了一个 CommonsChunkPlugin的插件,它用于提取多个入口文件的公共脚本部分,然后生成一个 core.js 来方便多页面之间进行复用。

ExtractTextPlugin

抽取css,less到指定的文件,减小js文件包大小

module.loaders

最关键的一块配置。它告知 webpack 每一种文件都需要使用什么加载器来处理。 所有加载器需要使用npm来加载

相关文章

  • webpack由浅入深

    背景 在阅读这篇文章之前,我们先来看看下面这个webpack的配置文件,如果�在此之前你已经在熟练使用webpac...

  • webpack教程_由浅入深的webpack配置

    前言 少侠,愿你页底归来,已习得webpack精要。 那些你熟悉的概念 入口起点 字符串语法 数组语法向 entr...

  • webpack开发- webpack 插件(Flag贴)

    感觉光讲webpack插件开发,也聊不了几句,给自己玩点有难度的,之后由浅入深带源码阅读的那种 简单而敷衍的后续更新

  • 由浅入深

    所谓“由浅入深”,其实是我近来画画的一个感悟——先上浅色,再叠加深色。同时伴随着修饰形态和材质。这个道理对于很多绘...

  • Block

    参考文献 Block本质Block由浅入深(5):三种类型的BlockBlock由浅入深(3):Block捕获局部...

  • 由浅入深Runtime

    了解OC方法的调用 OC方法的调用本质是消息机制。任何方法的调用都会转成运行时的 第一个必须参数:消息接受者;第二...

  • 线程:由浅入深

    线程 操作系统在分配资源时候是把资源分配给进程的,但是 CPU 资源就比较特殊,它是分派到线程的,因为真正要占用 ...

  • 正则-由浅入深

    前言 本篇多以网上资料参考及个人理解为主,希望能帮助到大家,当然在不足的地方请多多包含。 一、介绍 正则表达式,又...

  • Block 由浅入深

    Block是对象。 如何判断mrc,arc 1.delloc 能否调用super,能mrc,不能arc。 2.re...

  • grunt由浅入深

    Grunt是一个任务管理器,能大大提高您运行前端开发工作流程。使用大量的Grunt插件可以自动执行任务,例如编译S...

网友评论

      本文标题:webpack由浅入深

      本文链接:https://www.haomeiwen.com/subject/wcghbttx.html