继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

webpack2.2 概念部分总结分析

resharpe
关注TA
已关注
手记 102
粉丝 7244
获赞 3476
introduce
  • concepts

    webpack是现代js应用的模块打包器,它是非常可配置,但要明确以下四个概念。

    1. Entry
      webpack构建一个你应用程序依赖的图,起点便是所谓的erntry point。它告诉wenpack从哪开始并且
      按照依赖图去知道什么要打包。可以将此比作 contextual root or the first file to kick off your app.。
      The simplest example:
      //webpack.config.js  
      module.exports={
      entry:'./path/to/my/entry/file.js'
      };
    2. Output
      一旦打包好了资源,依然需要告诉webpack哪里打包应用程序,output属性告诉webpack如何处理打包过的代码。
      The simplest example:
      //webpack.config.js  
      module.exports={
          entry:'./path/to/my/entry/file.js',
          output: {
              path: path.resolve(__dirname, 'dist'),
              filename: 'my-first-webpack.bundle.js'
            }
      };

      示例中用output.filename和output.path属性告诉webpack包名和将之emit to哪。

    3. Loaders
      目的在于将所有项目中的资源作为webpack而非浏览器关心的。webpack眼中一切(.css,.hmtl,.scss,.jpg,etc)
      皆模块。但其只知道js,而Loaders在webpack中将这些文件转化成依赖图中的模块。有两个目的在高水准要求上:
      a.确定什么文件该被相应loader转换(test),b:转换相应文件以加入到依赖图(use)。
      
      const path = require('path');

    const config = {
    entry: './path/to/my/entry/file.js',
    output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
    },
    module: {
    rules: [
    {test: /.(js|jsx)$/, use: 'babel-loader'}
    ]
    }
    };
    module.exports = config;

    4. Plugins
    因loaders仅基于每个文件转换,故plugins是最常用的对打包模块的 "compilations" or "chunks"执行操作和自定义功能等。
    要用plugin需要用require()且将其放入plugins数组。多数plugins可按需自定义
    因可在配置中按不同目的多次使用,此时需要用new来构建它的一个实例。

    const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
    const webpack = require('webpack'); //to access built-in plugins
    const path = require('path');

    const config = {
    entry: './path/to/my/entry/file.js',
    output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'my-first-webpack.bundle.js'
    },
    module: {
    rules: [
    {test: /.(js|jsx)$/, use: 'babel-loader'}
    ]
    },
    plugins: [
    new webpack.optimize.UglifyJsPlugin(),
    new HtmlWebpackPlugin({template: './src/index.html'})
    ]
    };

    module.exports = config;

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP

热门评论

这篇文章是不是直接把官网的英语用谷歌翻译了一遍后直接搬过来的?很多句子读都读不通顺。

另外,这篇文章好歹也是二个月前扔上来的。我想告诉你的是webpack2.0官方网站已经有中文文档了。不需要使用谷歌翻译了。

查看全部评论