webpack整体了解

一、下载

新建一个文件夹,在cmd中npm init->npm install->npm install webpack --save-dev

下载完成之后,新建一个webpack.config.js文件,在这个里面写配置

开始准备:http://www.cnblogs.com/GainLoss/p/7198953.html

webpack踩坑:http://www.cnblogs.com/GainLoss/p/7473585.html

vue+webpack:http://www.cnblogs.com/GainLoss/p/6592729.html

       http://www.cnblogs.com/GainLoss/p/6927626.html

二、基础

1.一个入口一个出口

2.多个入口多个出口

3.将第三方文件单独成一个文件夹

4.css文件 js文件 图片 压缩

三、功能

1.基本 一个入口一个出口 将ES6转成ES5

var path=require('path');
var HtmlWebpackPlugin=require('html-webpack-plugin')
module.exports={
    entry:{
        index:'index.js',
    },
    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'[name].[hash].js',
    },
    resolve:{
        extensions:['.js'],//js文件引入的时候可以不用加后缀
    },
    module:{
        rules:[
            {
                test:/\.js$/,
                exclude:/node_modules/,
                loader:'babel-loader',
                query:{
                    presets:['es2015']
                }
            },
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:'./index.html'
        }),
    ]
    
}

2.将css转成单独的文件

在cmd中下载 npm install style-loader css-loader --save-dev

...module
{ test:
/\.css$/, exclude:/node_modules/, loader:ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }), },
...plugin中
 new ExtractTextPlugin('style.css'),
 

3.将代码中的图片转成base64

在 cmd中下载 npm install url-loader --save-dev

...module
{ test:
/\.(png|jpg|gif)$/, exclude:/node_modules/, loader:'url-loader' }

4.将第三方插件单独成文件

module.exports={
    entry:{
        index:'index.js',
        vendor:['./web/jquery']
    },
    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'[name].[hash].js',
    },
    resolve:{
        extensions:['.js'],
    },
    module:{
        rules:[
            ...
        ]
    },
    plugins:[
        ...new webpack.optimize.CommonsChunkPlugin({
            name:['vendor','manifest']
        }),
    ]  
}

5.实现多个入口文件

...
function getfile(){//这里面需要获取全部符合的文件
    var entry=[];
    glob.sync(__dirname+'/web/*.js').forEach(function(file){
        var name=file.split('main')[1]
        if(name){
            var filename=file.split('main')[0]+"main"+name;
            entry.push(filename)
        }
    })
    return entry
}
module.exports={
    entry:{
        index:getfile(),
        vendor:['./web/jquery']
    },
   ...
}

总的代码:

var path=require('path');
var HtmlWebpackPlugin=require('html-webpack-plugin')
var ExtractTextPlugin=require('extract-text-webpack-plugin')
var glob=require('glob')
var webpack=require('webpack')
var CleanWebpackplugin=require('clean-webpack-plugin')

function getfile(){
    var entry=[];
    glob.sync(__dirname+'/web/*.js').forEach(function(file){
        var name=file.split('main')[1]
        if(name){
            var filename=file.split('main')[0]+"main"+name;
            entry.push(filename)
        }
    })
    return entry
}

module.exports={
    entry:{
        index:getfile(),
        vendor:['./web/jquery']
    },
    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'[name].[hash].js',
    },
    resolve:{
        extensions:['.js'],
    },
    module:{
        rules:[
            {
                test:/\.js$/,
                exclude:/node_modules/,
                loader:'babel-loader',
                query:{
                    presets:['es2015']
                }
            },
            {
                test:/\.css$/,
                exclude:/node_modules/,
                loader:ExtractTextPlugin.extract({ fallback: 'style-loader', use: 'css-loader' }),
            },
            {
                test:/\.(png|jpg|gif)$/,
                exclude:/node_modules/,
                loader:'url-loader'
            }
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:'./index.html'
        }),
        new ExtractTextPlugin('style.css'),
        new webpack.optimize.CommonsChunkPlugin({
            name:['vendor','manifest']
        }),
        new CleanWebpackplugin(
            ['dist/index.*.js'],
            {
                root:__dirname,
                verbose:true,
                dry:true
            }
        ),
    ]
    
}

 

转载于:https://www.cnblogs.com/GainLoss/p/7477700.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript逆向工程涉及到逆向分析、代码还原、代码修改等多个方面,其中Webpack作为一个重要的静态模块打包器,也是逆向工程中需要重点关注的一部分。以下是一些关于Webpack逆向的笔记: 1. Webpack的打包过程是从入口文件开始的,Webpack会递归地遍历所有依赖模块,并将它们打包成一个或多个Bundle文件。因此,逆向工程的第一步就是找到Webpack打包的入口文件。 2. 在入口文件中,Webpack会通过require或import语句加载其他模块,并递归地遍历所有依赖模块。因此,我们可以通过分析入口文件来了解应用的整体结构和模块依赖关系。 3. 在Webpack的打包过程中,每个模块都会被赋予一个唯一的标识符,这个标识符可以通过module.id来获取。因此,我们可以通过分析打包后的代码,来了解每个模块的标识符和依赖关系。 4. 在Webpack的打包过程中,Loader和Plugin是非常重要的扩展机制,它们可以对模块进行转换和优化。因此,我们可以通过分析Loader和Plugin的源代码,来了解它们的作用和实现原理。 5. 在逆向工程中,我们可以使用Webpack的source-map选项来生成源映射文件,从而方便我们进行代码还原和调试。同时,我们也可以使用Webpack的devtool选项来设置不同的调试工具,以便更好地进行逆向分析和调试。 总的来说,Webpack作为静态模块打包器,在JavaScript逆向工程中扮演着重要的角色。通过对Webpack的逆向分析,我们可以更加深入地了解应用的整体结构和模块依赖关系,从而更好地进行代码还原和调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值