learn-webpack4(九)


处理第三方 JS 库&&自动生成 html

第三方库的管理

1.CDN:<script></script>标签引入即可
2.npm 包管理: 目前最常用和最推荐的方法 3.本地 js 文件:一些库由于历史原因,没有提供 es6 版本,需要手动下载,放入项目目录中,再手动引入。
针对第三种方法,如果没有 webpack,则需要手动引入 import 或者 require 来加载文件;但是,webpack 提供了 alias 的配置,配合 webpack.ProvidePlugin 这款插件,可以跳过手动入,直接使用!

webpack 配置

```javascript
// webpack.config.js
const path = require("path");
const webpack = require("webpack");

module.exports = {
  entry: {
    app: "./src/app.js"
  },
  output: {
    publicPath: __dirname + "/dist/",
    path: path.resolve(__dirname, "dist"),
    filename: "[name].bundle.js",
    chunkFilename: "[name].chunk.js"
  },
  resolve: {
    alias: {
      jQuery$: path.resolve(__dirname, "src/vendor/jquery.min.js")
    }
  },
  plugins: [
    new webpack.ProvidePlugin({
      $: "jquery", // npm
      jQuery: "jQuery" // 本地Js文件
    })
  ]
};
```

在 app.js 分别使用\$和 jQuery 添加一个 class,webpack 处理后,class 会被正确的添加

自动生成 html

之前我们打包之后都需要手动引入打包好的文件路径,但是实际工作中,这些操作都是自动完成的,那么应该怎么做呢
借助 HtmlWebpackPlugin 根据指定的 index.html 模板生成对应的 html 文件,还需要配合 html-loader 处理 html 文件中的 `<img>`标签和属性。

app.js 引入 sum.js

```javascript
//sum.js
export function sum(a, b) {
  return a + b;
}
//app.js
import sum from "./vendor.sum.js";
console.log("1 + 2 =", sum(1, 2));
```

webpack 配置

HtmlWebpackPlugin 是在 plugin 这个选项中配置的。常用参数含义如下:

filename:打包后的 html 文件名称
template:模板文件(例子源码中根目录下的 index.html)
chunks:和 entry 配置中相匹配,支持多页面、多入口
minify.collapseWhitespace:压缩选项

```javascript
const path = require("path");
const webpack = require("webpack");
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  entry: {
    app: "./src/app.js"
  },
  output: {
    publicPath: __dirname + "/dist/",
    path: path.resolve(__dirname, "dist"),
    filename: "[name]-[hash:5].bundle.js",
    chunkFilename: "[name]-[hash:5].chunk.js"
  },
  module: {
    rules: [
      {
        test: /\.html$/,
        use: [
          {
            loader: "html-loader"
          }
        ]
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: "11.html",
      template: "./11.html",
      chunks: ["app"], // entry中的app入口才会被打包
      minify: {
        // 压缩选项
        collapseWhitespace: true
      }
    })
  ]
};
```

文章作者: 沐雪
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 沐雪 !
评论
 上一篇
learn-webpack4(十) learn-webpack4(十)
自动清理 dist 目录(clean plugin)&& watch modewebpack 配置把第一个例子搬过来用.注意 webpack 是倒叙的,所以把 CleanWebpackPlugin,放到最后 const we
2017-10-19
下一篇 
learn-webpack4(八) learn-webpack4(八)
字体文件处理安装{ "devDependencies": { "css-loader": "^1.0.0", "extract-text-webpack-plugin": "^4.0.0-beta.0", "fi
2017-10-17
  目录