webpacke

2018-09-07  本文已影响0人  头头_d92d

webpack

安装webpack

基本使用


    var myjack = require('./jack.js')

    var myrose = require('./rose.js')

    console.log(myjack.money)

dist

src

通过配置文件的方式使用webpack


    // 这个webpack的配置文件

    // 要求在这个文件中暴露一个对象

    // 按照node的请求去写就可以了!

    module.exports = {

      // 这个属性表明,整个项目的入口文件是谁

      entry:'./src/app.js',

      // 这个属性表示,我们项目通过webpack打包后的输出文件及输出路径

      output:{

        filename:'./dist/bundle.js' // 指定输出的文件名

      }

    }

将css也合并到js代码中

css-loader 和 style-loader


  output:{

    filename:'./dist/bundle.js' // 指定输出的文件名

  },

  module:{

    loaders:[ // Loaders是提供了一些特定的功能

        {

          // 表明我们(用到的loader)要处理的文件是什么

          test:/\.css$/,  // 要把指定的css加入到js中

          // loader属性指定具体的loader,这个loader其实是一个npm外

          // css-loader就是一个npm 包!

          // `npm install css-loader --save-dev`

          // css-loader只是把css代码加入到js代码(并没把样式添加到dom中)

          // style-loader 这个loader这为了把css-loader得到css样式添加到dom中

          //

          // webpack会先调用!右边的包来处理我们的文件,然后把!右边处理的结果交给左边的包来处理!

          loader:'style-loader!css-loader'

        }

    ]

  }

less-loader


  require('./xxx.less') // 用到的less文件要引入才能生效!


  module.exports = {

  entry: './src/app.js',

  output:{

    filename:'./dist/bundle.js'

  },

  module:{

    loaders:[

      {

        test: /\.less$/ ,// 匹配当前loader要处理的文件

        // less-loader作用:是读取test规则对应的文件,然后把读取到的less文件内容转换为css内容

        loader:'style-loader!css-loader!less-loader'

      }

    ]

  }

}

sass-loader

url-loader

// base64


  module.exports = {

  // 指定入口文件

  entry:'./src/app.js',

  output:{

    path:'dist',// path指定父目录,webpack会把path与filename拼接成一个路径

    // 同时是指定默认文件的生成目录

    filename:'bundle.js'

  },

  module:{

    loaders:[

      {

          test: /\.css$/,

          loader:'style-loader!css-loader',// 从右往左执行!

      },

      {

        test:/\.(jpg|jpeg)/,

        // 这里的./是相对于path属性指定的目录

        // name参数指定如果不生成base64时,文件的输出目录及输出的文件

        // [name]表示原文件名,[ext]表示源文件扩展名

        // 如果不指定name参数,输入的图片名是随机的

        // limit: 限制转换的大小

        // 值的单位是字节,byte

        // 1byte = 8bit (位)  字节

        // 1kb = 1024 字节

        // 1M = 1024kb

        // 1000

        loader:'url-loader?limit=12048&name=./img/[name].[ext]'

      }

    ]

  }

}

babel-loader


    // 配置文件

    module:{

        // 这里是我们webpack打包用到的loaders

        loaders:[

          {

            test:/\.js$/,

            // 也需要一些参数,babel不令是能转换es6,还能将react的语法转换成js

            loader:'babel-loader',

            query:{

              // 这个es2015也是对应了一个npm 包

              // npm install babel-preset-es2015 --save-dev

              presets:['es2015']

          }

        ]

      }}

对第三方包进行分离




// 入口文件目录

  entry:{

    app:path.join(__dirname, 'src/app.js'),

    // 随便写一个属性,值为数组,数据中的元素是我们希望单独打包的第三方包的名字

    vender001:['angular']

  },

  // 输入路径

  output:{

    // 输出的文件目录

    path: path.join(__dirname, 'dist'),

    // 输出的文件名(也就是打包后的文件)

    filename:'bundle.js'

  },

    // 这个属性里写上webpack中要使用到的插件

  plugins:[

    // 要使用webpack自的插件来分离第三方包

    new webpack.optimize.CommonsChunkPlugin(

      // 第一个参数,就是我们在entry写的一个属性名

      // webpack会自动读取对应的值,找到相应的包

      'vender001',

      // 第二个参数,是第三方包单独打包后生成的文件名

      'vender.js'

    )

  ]

webpack 插件

自动打开浏览器插件(open-browser-webpack-plugin)

创建index.html插件(html-webpack-plugin)


  // npm install html-webpack-plugin --save-dev

const  HtmlWebpackPlugin = require('html-webpack-plugin');

  plugins:[

  new HtmlWebpackPlugin({

    template:'./src/index.html'  // 指定模板,最终生成的html会生成到path属性对应的位置

  })

  ]

删除目录插件(clean-webpack-plugin)

拷贝文件插件(copy-webpack-plugin)

webpack 相关参数

react快速开始

上一篇 下一篇

猜你喜欢

热点阅读