webpack总结

webpack是一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX)、coffee、样式(含less/sass)、图片等都作为模块来使用和处理。

安装

npm install webpack --save-dev

配置文件

webpack的配置文件一般长这样,稍后再对每一部份做讲解。

//webpack.config.js

var path = require("path");

module.exports = {
    entry: path.resolve(__dirname,"src/main.js"),
    output:{
       path: path.resolve(__dirname,"dist/js"),
       filename:"bundle.js"
    },
    module:{
        loaders:[{
            test:"/\.js$/",
            loader:"babel-loader",
            exclude: path.resolve(__dirname,"node_modules"),
            include:path.resolve(__dirname,"src"),
            query:{
                 presets:["env"]
            }
        }]
    }
}

path:是nodejs自带的模块,需要引入
__dirName: 当前文件(webpack.config.js)所在目录

entry: 入口文件所在路径。可以是string、array或者object
output:输出文件所在路径及输出文件名称

下面配置entry是对象(object)时的情况:

var path = require("path");

module.exports = {
    entry: {
        main:path.resolve(__dirname,"src/main.js"),
        a:path.resolve(__dirname,"src/a.js")
    },
    output:{
       path: path.resolve(__dirname,"dist/js"),
       filename:"[name].js"
    },
    module:{
        loaders:[{
            test:"/\.js$/",
            loader:"babel-loader",
            exclude: path.resolve(__dirname,"node_modules"),
            include:path.resolve(__dirname,"src"),
            query:{
                 presets:["env"]
            }
        }]
    }
}

注意:我改了两个地方。第一个是在entry下,路径前加了属性(name,a);第二个是在output下的filename处,我把bundle改成了[name]--(这里name可以使用hash、chunkhash或者3者随意组合)代替。

这样设置配置文件后,运行webpack命令后,会在输出目录处得到两个文件(main.js a.js)。

如果[name]改成[hash]或者[chunkhash],那么输出目录的文件名就是随机的了(具体是怎么样的,我也不清楚)

运行

webpack
webpack --config "config file's path"

另外,还可以通过npm命令来运行,需要先在package.json文件中的script属性下加入以下脚本:

“webpack”:"webpack --progress --display-modules --colors"
然后运行npm run webpack

loader

配置文件里都有一个loaders属性,它是一个数组,可以配置多个loader。

我们可以看到已经配置了一个叫babel-loader的东东了,babel-loader是用来转换es6语法的。

使用babel-loader需要事先引入babel-loader和babel-core,所以

npm install babel-loader babel-core --save-dev

loaders:[{
    test:"/\.js$/",
    loader:"babel-loader",
    exclude: path.resolve(__dirname,"node_modules"),
    include:path.resolve(__dirname,"src"),
    query:{
         presets:["env"]
    }
}]

test: 正则表达式(只处理js文件)
exclude:排除某些文件
include:包含的文件\文件夹
query: //TODO

插件

//TODO

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Vue.js - Day5 - Webpack 在网页中会引用哪些常见的静态资源? JS .js .jsx ....
    跌倒的小黄瓜阅读 1,346评论 0 1
  • Webpack学习总结 此文只是自己学习webpack的一些总结,方便自己查阅,阅读不变,非常抱歉!! 下载安装:...
    Lxs_597阅读 4,629评论 0 0
  • 一、webpack简介 1.1 webpack是什么 1.2 webpack五个核心概念 1.2.1 Entry ...
    Liffery_cxy阅读 3,885评论 1 0
  • 博客链接 http://blog.poetries.top/2018/11/21/webpack-review/ ...
    前端进阶之旅阅读 5,248评论 0 11
  • configuration webpack 的配置文件,是导出一个对象的 JavaScript 文件 因为 web...
    wfield阅读 3,003评论 0 0

友情链接更多精彩内容