• webpack入门


    一、安装

    1、安装nodeJS

    2、用npm安装webpack

    npm install webpack -g

    此时 Webpack 已经安装到了全局环境下,可以通过命令行 webpack -h 试试。

    # 查看 webpack 版本信息
    $ npm info webpack
    
    # 安装指定版本的 webpack
    $ npm install webpack@1.12.x -g

    3、安装webpack-dev-server

    npm install webpack-dev-server -g

    二、使用

    1、进入项目目录,运行npm init生成package.json文件

    2、通常我们会将 Webpack 安装到项目的依赖中,这样就可以使用项目本地版本的 Webpack。运行完后会生成node_modules文件夹

    npm install webpack --save-dev
    npm install webpack-dev-server --save-dev

    3、如果不使用配置文件webpack.config.js则执行第4步,否则执行第5步

    4、运行下面的命令将a.js文件打包生成b.js文件

    webpack a.js b.js

    在a.js文件中如果需要引入某个模块文件中的内容,则使用require引入

    // a.js
    document.write(require('./module.js'));

    Webpack 会分析入口文件,解析包含依赖关系的各个文件。这些文件(模块)都打包到 bundle.js 。Webpack 会给每个模块分配一个唯一的 id 并通过这个 id 索引和访问模块。在页面启动时,会先执行 entry.js 中的代码,其它模块会在运行 require 的时候再执行。

    5、在package.json中加入我们需要的依赖项,然后运行

    npm intall // 安装package.json中所需要的依赖

    新建配置文件webpack.config.js,

    var webpack = require('webpack')
    
    module.exports = {
      entry: './entry.js', // 指定入口文件
      output: {
        path: __dirname, // 两个下划线
        filename: 'bundle.js'  // 指定打包后输出文件
      },
      module: {
        loaders: [
          {test: /.css$/, loader: 'style!css'}
        ]
      }
    } 

    最后运行webpack命令,就可以编译。

    如果需要添加插件,插件可以完成更多 loader 不能完成的功能。插件的使用一般是在 webpack 的配置信息 plugins 选项中指定。Webpack 本身内置了一些常用的插件,还可以通过 npm 安装第三方插件。接下来,我们利用一个最简单的 BannerPlugin 内置插件来实践插件的配置和运行,这个插件的作用是给输出的文件头部添加注释信息。

    修改 webpack.config.js,添加 plugins

    var webpack = require('webpack')
    
    module.exports = {
      entry: './entry.js',
      output: {
        path: __dirname,
        filename: 'bundle.js'
      },
      module: {
        loaders: [
          {test: /.css$/, loader: 'style!css'}
        ]
      },
      plugins: [
        new webpack.BannerPlugin('This file is created by zhaoda')
      ]
    }

    然后运行 webpack,打开 bundle.js,可以看到文件头部出现了我们指定的注释信息:

    6、进入项目目录,启动服务器

    webpack-dev-server

    在浏览器中打开localhost:8080

    三、webpack其他指令

    当项目逐渐变大,webpack 的编译时间会变长,可以通过参数让编译的输出内容带有进度和颜色。

    webpack --progress --colors

    如果不想每次修改模块后都重新编译,那么可以启动监听模式。开启监听模式后,没有变化的模块会在编译后缓存到内存中,而不会每次都被重新编译,所以监听模式的整体速度是很快的。

    webpack --progress --colors --watch

    当然,使用 webpack-dev-server 开发服务是一个更好的选择。它将在 localhost:8080 启动一个 express 静态资源 web 服务器,并且会以监听模式自动运行 webpack,在浏览器打开 http://localhost:8080/ 或http://localhost:8080/webpack-dev-server/ 可以浏览项目中的页面和编译后的资源输出,并且通过一个 socket.io 服务实时监听它们的变化并自动刷新页面。

     webpack-dev-server --progress --colors

    Webpack 的配置比较复杂,很容易出现错误,下面是一些通常的故障处理手段。

    一般情况下,webpack 如果出问题,会打印一些简单的错误信息,比如模块没有找到。我们还可以通过参数--display-error-details 来打印错误详情。

    webpack --display-error-details

    Webpack 的配置提供了 resolve 和 resolveLoader 参数来设置模块解析的处理细节,resolve 用来配置应用层的模块(要被打包的模块)解析,resolveLoader 用来配置 loader 模块的解析。

    当引入通过 npm 安装的 node.js 模块时,可能出现找不到依赖的错误。Node.js 模块的依赖解析算法很简单,是通过查看模块的每一层父目录中的 node_modules 文件夹来查询依赖的。当出现 Node.js 模块依赖查找失败的时候,可以尝试设置 resolve.fallback 和 resolveLoader.fallback 来解决问题。

    module.exports = {
      resolve: { fallback: path.join(__dirname, "node_modules") },
      resolveLoader: { fallback: path.join(__dirname, "node_modules") }
    };

    Webpack 中涉及路径配置最好使用绝对路径,建议通过 path.resolve(__dirname, "app/folder") 或path.join(__dirname, "app", "folder") 的方式来配置,以兼容 Windows 环境。

    四、参考链接

    教程:

    webpack中文指南:http://webpackdoc.com/

    实例:

    阮一峰:https://github.com/ruanyf/webpack-demos

  • 相关阅读:
    [BZOJ 2144]跳跳棋
    [NOIp 2015]信息传递
    [JLOI 2014]松鼠的新家
    [Luogu 2062]分队问题
    [Luogu 2090]数字对
    [NOIp 2015]运输计划
    [USACO 03FEB]Farm Tour
    [TJOI 2010]中位数
    IO密集型 计算密集型
    python 编码
  • 原文地址:https://www.cnblogs.com/YangqinCao/p/6213968.html
Copyright © 2020-2023  润新知