babel

解析ES6

  • 下载包
    • npm i @babel/preset-core @babel/preset-env babel-loader -D ```javascript // webpack.config.js ‘use strict’; const path = require(‘path’);

module.exports = { entry: { index: ‘./src/index.js’, search: ‘./src/search.js’, }, output: { path: path.join(__dirname, ‘dist’), filename: ‘[name].js’, }, module: { rules: [ { test: /.js$/, use: ‘babel-loader’, } ] }, mode: ‘production’ }

  1. ```json
  2. {
  3. "presets": [
  4. "@babel/preset-env",
  5. ]
  6. }

解析ReactJSX

  • 在上面的安装的基础上,继续下载包

    • npm i react react-dom @babel/preset-react -D
      1. // .babelrc
      2. {
      3. "presets": [
      4. "@babel/preset-env",
      5. "@babel/preset-react"
      6. ]
      7. }

      解析样式

      解析css——style-loader、css-loader

  • css-loader 用于加载.css文件,并转换成commonjs对象

  • style-loader 将样式通过<style>标签插入head中
  • 下载包
    • npm i style-loader css-loader -D ```javascript // webpack.config.js ‘use strict’; const path = require(‘path’);

module.exports = { entry: { index: ‘./src/index.js’, search: ‘./src/search.js’, }, output: { path: path.join(__dirname, ‘dist’), filename: ‘[name].js’, }, module: { rules: [ { test: /.js$/, use: ‘babel-loader’, }, { test: /.css$/, use: [‘style-loader’, ‘css-loader’] }, ] }, mode: ‘production’ }

  1. <a name="DJBBw"></a>
  2. ## 解析less和sass
  3. - 解析less
  4. - 下载包:`npm i less less-loader -D`
  5. - 作用将:less转为css
  6. ```javascript
  7. 'use strict';
  8. const path = require('path');
  9. module.exports = {
  10. entry: {
  11. index: './src/index.js',
  12. search: './src/search.js',
  13. },
  14. output: {
  15. path: path.join(__dirname, 'dist'),
  16. filename: '[name].js',
  17. },
  18. module: {
  19. rules: [
  20. {
  21. test: /\.js$/,
  22. use: 'babel-loader',
  23. },
  24. {
  25. test: /\.css$/,
  26. use: ['style-loader', 'css-loader']
  27. },
  28. {
  29. test: /\.less$/,
  30. use: ['style-loader', 'css-loader', 'less-loader'],
  31. }
  32. ]
  33. },
  34. mode: 'production'
  35. }
  • 解析sass
    • 下载包:npm i sass sass-loader -D
    • webpack.config.js配置同理


file-loader

  • 作用:用于处理文件
  • 下载包:npm i file-loader -D

    解析图片

    ```javascript // webpack.config.js ‘use strict’; const path = require(‘path’);

module.exports = { entry: { index: ‘./src/index.js’, search: ‘./src/search.js’, }, output: { path: path.join(__dirname, ‘dist’), filename: ‘[name].js’, }, module: { rules: [ { test: /.js$/, use: ‘babel-loader’, }, { test: /.css$/, use: [‘style-loader’, ‘css-loader’] }, { test: /.less$/, use: [‘style-loader’, ‘css-loader’, ‘less-loader’], }, { test: /.(scss|sass)$/, use: [‘style-loader’, ‘css-loader’, ‘sass-loader’], }, { test: /.(png|jpg|gif|jpeg|svg)$/, use: [‘file-loader’] }, ] }, mode: ‘production’ }

  1. <a name="PwsCq"></a>
  2. ## 解析字体
  3. ```javascript
  4. // webpack.config.js
  5. 'use strict';
  6. const path = require('path');
  7. module.exports = {
  8. entry: {
  9. index: './src/index.js',
  10. search: './src/search.js',
  11. },
  12. output: {
  13. path: path.join(__dirname, 'dist'),
  14. filename: '[name].js',
  15. },
  16. module: {
  17. rules: [
  18. {
  19. test: /\.js$/,
  20. use: 'babel-loader',
  21. },
  22. {
  23. test: /\.css$/,
  24. use: ['style-loader', 'css-loader']
  25. },
  26. {
  27. test: /\.less$/,
  28. use: ['style-loader', 'css-loader', 'less-loader'],
  29. },
  30. {
  31. test: /\.(scss|sass)$/,
  32. use: ['style-loader', 'css-loader', 'sass-loader'],
  33. },
  34. {
  35. test: /\.(png|jpg|gif|jpeg|svg)$/,
  36. use: ['file-loader']
  37. },
  38. {
  39. test: /\.(woff|woff2|eot|ttf|otf)$/,
  40. use: ['file-loader']
  41. }
  42. ]
  43. },
  44. mode: 'production'
  45. }

url-loader处理图片、字体

  • 可设置较小资源自动转成base64
  • 据说其内部也用了file-loader,但其实删掉file-loader一样能打包 ```javascript ‘use strict’; const path = require(‘path’);

module.exports = { entry: { index: ‘./src/index.js’, search: ‘./src/search.js’, }, output: { path: path.join(__dirname, ‘dist’), filename: ‘[name].js’, }, module: { rules: [ { test: /.js$/, use: ‘babel-loader’, }, { test: /.css$/, use: [‘style-loader’, ‘css-loader’] }, { test: /.less$/, use: [‘style-loader’, ‘css-loader’, ‘less-loader’], }, { test: /.(scss|sass)$/, use: [‘style-loader’, ‘css-loader’, ‘sass-loader’], }, { test: /.(png|jpg|gif|jpeg|svg)$/, use: [ { loader: ‘url-loader’, options: { limit: 30000 } } ] }, { test: /.(woff|woff2|eot|ttf|otf)$/, use: [ { loader: ‘url-loader’, options: { limit: 70000 } } ] } ] }, mode: ‘production’ } ```