webpack-webpackConfig-plugin 配置

ProvidePlugin

  • 语法:
module.export = {
    plugins: [
         new webpack.ProvidePlugin({
             $: ‘jquery‘,
             jQuery: ‘jquery‘,
             ‘window.jQuery‘: ‘jquery‘,
             ‘window.$‘: ‘jquery‘,
        }),
    ]
}
  • 作用:

rovidePlugin的机制是:当webpack加载到某个js模块里,出现了未定义且名称符合(字符串完全匹配)配置中key的变量时,会自动require配置中value所指定的js模块

使用ProvidePlugin还有个好处,就是,你自己写的代码里,再!也!不!用!require!jQuery!啦!

延伸:

{
  test: require.resolve(‘jquery‘), // 此loader配置项的目标是NPM中的jquery
  loader: ‘expose?$!expose?jQuery‘, // 先把jQuery对象声明成为全局变量`jQuery`,再通过管道进一步又声明成为全局变量`$`
},

有了ProvidePlugin为嘛还需要expose-loader?

如果你所有的jQuery插件都是用webpack来加载的话,的确用ProvidePlugin就足够了;

不过总有那么些需求是只能用<script>来加载的

webpack.optimize.CommonsChunkPlugin

  • 语法:
new webpack.optimize.CommonsChunkPlugin({
    name: ‘commons/commons‘,
    filename: ‘[name]/bundle.js‘,
    minChunks: 4,
}),
  • 作用:

抽取出所有通用的部分,参数:

  1. name: ‘commons/commons‘ : 给这个包含公共代码的chunk命个名(唯一标识)
  2. chunks: 表示需要在哪些chunk(也可以理解为webpack配置中entry的每一项)里寻找公共代码进行打包。不设置此参数则默认提取范围为所有的chunk
  3. filename: ‘[name]/bundle.js‘ :如何命名打包后生产的js文件,也是可以用上[name]、[hash]、[chunkhash]这些变量的,  例子就是‘commons/commons/bundle.js‘了 (最终生成文件的路径是根据webpack配置中的ouput.path和上面CommonsChunkPlugin的filename参数来拼的)
  4. minChunks: 4, : 公共代码的判断标准:某个js模块被多少个chunk加载了才算是公共代码

ExtractTextPlugin

  • 语法:
new ExtractTextPlugin(‘[name]/styles.css‘),
  • 作用:

抽取出chunk的css ,

ExtractTextPlugin的初始化参数不多,唯一的必填项是filename参数,也就是如何来命名生成的CSS文件。跟webpack配置里的output.filename参数类似,这ExtractTextPlugin的filename参数也允许使用变量,包括[id]、[name]和[contenthash];理论上来说如果只有一个chunk,那么不用这些变量,写死一个文件名也是可以的,但由于我们要做的是多页应用,必然存在多个chunk(至少每个entry都对应一个chunk啦)

在这里配置的[name]对应的是chunk的name,在webpack配置中把各个entry的name都按index/index、index/login这样的形式来设置了,那么最后css的路径就会像这样:build/index/index/styles.css,跟chunk的js文件放一块了(js文件的路径形如build/index/index/entry.js)

备注: 还要在css-loader , less-loader , postcss-loader 等关于样式的loader 配置里做相应的修改

{
  test: /\.css$/,
  include: /bootstrap/,
  use: ExtractTextPlugin.extract([{
    loader: ‘css-loader‘,
  }]),
}

HtmlWebpackPlugin

  • 语法:
var glob = require(‘glob‘);
var path = require(‘path‘);
var options = {
  cwd: ‘./src/pages‘, // 在pages目录里找
  sync: true, // 这里不能异步,只能同步
};
var globInstance = new glob.Glob(‘!(_)*/!(_)*‘, options); // 考虑到多个页面共用HTML等资源的情况,跳过以‘_‘开头的目录
var pageArr = globInstance.found; // 一个数组,形如[‘index/index‘, ‘index/login‘, ‘alert/index‘]
var configPlugins = [];
pageArr.forEach((page) => {
  const htmlPlugin = new HtmlWebpackPlugin({
    filename: `${page}/page.html`,
    template: path.resolve(dirVars.pagesDir, `./${page}/html.js`),
    // 意思是加载 page 下面的js , 和加载 commons/commons 目录下的js
    chunks: [page, ‘commons/commons‘],
    hash: true, // 为静态资源生成hash值
    xhtml: true,
  });
  configPlugins.push(htmlPlugin);
});
  • 作用:

生成html,参数:

  1. filename  `${page}/page.html`, : 生成的文件名字,多页面就会有多个  HtmlWebpackPlugin ,通常使用循环生成一个数组
  2. template : path.resolve(dirVars.pagesDir, `./${page}/html.js`),   生成的html 基于的模板
  3. chunks : [ page, ‘commons/commons‘] : 意思是加载 变量page 和  commons/commons 目录下的js
  4. hash: true : 为静态资源生成hash值
时间: 2024-10-19 12:26:40

webpack-webpackConfig-plugin 配置的相关文章

vue-cli的webpack模版,相关配置文件dev-server.js与webpack.config.js配置解析

1.下载vue-cli [html] view plain copy npm install vue-cli -g vue-cli的使用与详细介绍,可以到github上获取https://github.com/vuejs/vue-cli 2.安装webpack项目模版 [html] view plain copy vue init <template-name> <project-name> 比如: [html] view plain copy vue init webpack m

[转] vue&amp;webpack多页面配置

前言 最近由于项目需求,选择使用vue框架,webpack打包直接使用的vue-cli,因为需要多页面而vue-cli只有单页面,所以就决定修改vue-cli的配置文件来满足开发需求. html-webpack-plugin 实现需求需要用到这个插件, 具体信息请看这里 对于多页面入口我们需要在插件数组中多次声明该插件To generate more than one HTML file, declare the plugin more than once in your plugins arr

webpack window下配置的hello world

峰回路转 一区九折 先看效果:(此效果是webpack执行完之后会生成build文件夹已经它下面的index.html,点击index.html就是下图的效果) 安装 先装好node和npm,因为webpack是一个基于node的项目.然后 npm install -g webpack 总览 官网对webpack的定义是MODULE BUNDLER,他的目的就是把有依赖关系的各种文件打包成一系列的静态资源. 请看下图 webpack简单点来说就就是一个配置文件,所有的魔力都是在这一个文件中发生的

webpack + vuejs 基本配置(一)

开始之前 本文包含以下技术,文中尽量给与详细的描述,并且附上参考链接,读者可以深入学习: 1.webpack2.Vue.js3.npm4.nodejs —- 这个就不给连接了,因为上面的连接都是在你实践的过程中要去不断访问的5.ES6语法 另外,这套教程的代码都在我的github上,读者可以对照着代码来看,不过还是希望大家自己亲手搭建,体验这个过程,git地址: git地址 前言 在对着产品高举中指怒发心中之愤后,真正能够解决问题的是自身上的改变,有句话说的好:你虽然改变不了全世界,但是你有机会

webpack 4+ vue-loader 配置

webpack 4+ vue-loader 配置 写的demo,clone下来后,npm dev即可, 可能会由于版本问题,配置会有些许改动,暂时都是可用的 具体配置文件在webpack.config.js 配置步骤的话可以查看webpack官方文档指南,非常详细 1 const HtmlWebpackPlugin = require('html-webpack-plugin'); 2 const CleanWebpackPlugin = require('clean-webpack-plugi

webpack的简单配置

本人刚开始也不会写webpack配置,刚开始在网上搜索了了一些,看的也是刚刚理解,所以准备自己写下来,已作纪念和贡献给像我一样不会配置的“童鞋”们! 1.创建webpack配置文件 在项目文件下创建一个webpack.config的js文件. 2.配置文件创建好了,我们就开始正式配置webpack了. 1.我们要安装nodejs,应为webpack基于nodejs,nodejs可以点击这里下载: 2.安装完nodejs之后,我们打开命令窗口,找到你的项目文件,在项目文件webpack.confi

2.1 Hadoop Eclipse Plugin 配置及安装

Hadoop Eclipse 开发工具 主要分为 1.根据Hadoop版本生成插件 2.安装Hadoop Eclipse插件 3.配置Hadoop目录 4.配置Hadoop连接 5.新一个MapReduce工程 WordCount.java MapReduce--WordCount问题总结 参考:http://blog.sina.com.cn/s/blog_7fcb1aef0100zpux.html 正成功输入出后信息: 14/05/21 23:06:47 INFO input.FileInpu

Gitlab Merge Request Builder Plugin 配置小记

以前在给一些开源项目贡献代码的时候,在github上一提交pull request或者提交的分支代码更新了的时候,jenkins就会自动把代码进行merge并且运行单元测试,当时看了心里就2个字: NB! 那个时候心里就想,啥时候我也得弄这么一个高大上的玩意儿.随着 gitlab 在工作中的逐渐使用,这个想法越来越强烈.上周末搜来搜去,发现jenkins还真有一款针对gitlab的merge request的插件:Gitlab Merge Request Builder Plugin 当时就心痒

webpack 多entry 配置

// webpack 多entry 配置var path = require('path'); module.exports = { entry: { entry2: './entry.js', demo2: './demo.js' }, output: { path: __dirname, filename: '[name].js' } };

Maven的发布plugin配置

<build> <plugins> <plugin> <!-- 编译插件 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.