expose-loader 暴露全局的loader, 内联loader

pre loader
post loader
normal loader
内联loader
import $ from ‘exposr-loader?$!jquery’

  1. new webpack.ProvidePlugin({
  2. $: 'jquery' // 每个模块都可以使用 $
  3. })

url-loader 小于limit 的可以使用base64, 大于limit 的直接使用图片, 可以设置outputPath 输出到文件夹中 file-loader import 或者 require 导入。 直接用地址是 字符串不是图片,


多入口

  1. entry: {
  2. home: './src/home.js',
  3. index: './src/index.js'
  4. },
  5. output: {
  6. filename: '[name].js', // name 对应 extry 的key
  7. path: path.resolve(__dirname, 'dist'),
  8. },
  9. plugins:[
  10. new HtmlWebpackPlugin({
  11. template: 'index.html',
  12. filename: 'home.html',
  13. chunks: ['home'] // 只引入 home.js
  14. }),
  15. new HtmlWebpackPlugin({
  16. template: 'index.html',
  17. filename: 'index.html',
  18. chunks: ['index', 'home']
  19. }),
  20. ]

devtool: ‘source-map’, // 增加映射文件, 调试源代码 大而全 单独文件

devtool: eval-source-map // 不会产生单独文件,但是会显示行和列
devtool: cheap-module-source-map // 不显示行和列 ,生成单独文件, 对应不上
cheap -module-eval-source-map // 不显示列 不生成文件,集成在源码中

watch: true 实时打包

watchOptions: {

},

_
常用插件 cleanWebpackPlugin copyWebpackPlugin webpack.bannerPlugin, 版权声明。打包出来的文件前面加上 文字内容

跨域

  1. devServer: {
  2. before(app) {
  3. app.get('/user, (req, res) => {
  4. res.json()
  5. })
  6. },
  7. ///////////
  8. proxy: {
  9. ......
  10. }
  11. }

resolve 解析第三方包

  1. resolve: { // 解析 第三方包
  2. modules: [path.resolve('node_modules')],
  3. extensions: ['.js','.css'],
  4. mainFields: ['style', 'main'],
  5. alias: {
  6. bootstrap: 'bootstrap/dist/css/bootstrap.css'
  7. }
  8. },
  1. new webpack.DefinePlugin({
  2. DEV: "'dev'",
  3. 'process.env: JSON.stringify('production')
  4. }),

  • webpack-merge 区分不同环境 引用不同文件 ```javascript // webpack.prod.js npm run build — —config webpack.prod.js

const { smart } = require(‘webpack-merge’) let base = require(‘./webpack.base.js’)

module.exports = smart(base, { mode: ‘production’ }) ```