zoukankan      html  css  js  c++  java
  • webpack4升级webpack5

    首先来个忠告,先升级webpack,再逐步把各个包升级(因为我们所有依赖升级最新版本,不过可能会带来个问题,包不稳定只能等作者更新,算激进派)

    去掉 new webpack.NamedModulesPlugin(), webpack5已内置;

    module.exports.node 去掉,需要配置在 resolve.fallback 下,如有需要的,则配置一下:
    因为webpack5更专注于浏览器,将node部分移除
     
    fallback: {
          dgram: false,
          fs: false,
          net: false,
          tls: false,
          child_process: false,
          stream: require.resolve('stream-browserify'),
          tty: require.resolve('tty-browserify'),
          crypto: require.resolve('crypto-browserify'),
        },
    alias配置 process: 'process/browser',
    alias: {
    
          // Support React Native Web
          // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
          'react-native': 'react-native-web',
          // crypto: false,
          process: 'process/browser',
        },

    plugins下增加:

    new webpack.ProvidePlugin({
          process: 'process/browser',
        }),

    postcss-loader配置更改

    // 旧的配置:
    {
                loader: require.resolve('postcss-loader'),
                options: {
                  ident: 'postcss',
                  plugins: () => [
                    require('postcss-flexbugs-fixes'),
                    autoprefixer({
                      flexbox: 'no-2009',
                    }),
                  ],
                },
              },
    
    // 新的配置:
    {
                    loader: require.resolve('postcss-loader'),
                    options: {
                      postcssOptions: {
                        plugins: [
                          require('postcss-flexbugs-fixes'),
                          autoprefixer({
                            flexbox: 'no-2009',
                          }),
                        ],
                      },
                    },
                  },

    如果有用到webpack-cli 请升级到最新可用的版本。

    提示loaders不存在,改为分别require

    {
    test: /.scss$/,
    use: [
    require.resolve('style-loader'),
    require.resolve('css-loader'),
    require.resolve('sass-loader'),
    ],
    // loaders: ['style-loader', 'css-loader', 'sass-loader']
    },
    loader: 'url-loader?limit=1234',
    参数形式已废除,改为
    options: {
    limit: 1234,
    },
     
    const { merge } = require('webpack-merge');
    module.exports = merge( 
    改为:
    const webpackMerge = require('webpack-merge');
    module.exports = webpackMerge.merge(

    提示 

    outputFileSystem.mkdirp is not a function
    自己引入一下
    const mkdirp = require('mkdirp');
    配置下:
    let compiler = webpack(config);
    compiler.outputFileSystem.mkdirp = mkdirp;
    原因看了下,现在的webpack5去掉了mkdirp(webpack安装目录--》node文件夹下的某个文件内),可能导致了一些兼容问题,没找到具体影响哪个包。
     
    报错:
    No package 'libsecret-1' found
    安装对应包即可


    ts报错: Property 'contentRect' must be of type 'DOMRectReadOnly', but here has type 'DOMRectReadOnly'.
     
    因为类型冲突:
    自己代码中用到则:
    const ResizeObserverPolyfill = require('resize-observer-polyfill');
    
    const observer: ResizeObserver = new ResizeObserverPolyfill();
    第三方项目中用到则等作者升级或者降级typescript版本(我的是3.9.7)


    typescript报错:类型xxx必须为yyyy,但他是yyy:
    Subsequent property declarations must have the same type.  Property 'td' must be of type 'DetailedHTMLProps<TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement>', but here has type 'DetailedHTMLProps<TdHTMLAttributes<HTMLTableDataCellElement>, HTMLTableDataCellElement>'

    此错误一般是版本不一致,将版本锁定到dependencies,参考链接:https://stackoverflow.com/questions/52399839/duplicate-identifier-librarymanagedattributes

     
     
  • 相关阅读:
    LeetCode5 Longest Palindromic Substring
    LeetCode4 Median of Two Sorted Arrays
    LeetCode3 Longest Substring Without Repeating Characters
    LeetCode2 Add Two Numbers
    LeetCode1 Two Sum
    算法总结—深度优先搜索DFS
    c++ 设计模式9 (Abstract Factory 抽象工厂模式)
    题解 P3374 【【模板】树状数组 1】
    题解 HDU1565 【方格取数(1)】
    题解 P2431 【正妹吃月饼】
  • 原文地址:https://www.cnblogs.com/juexin/p/14667561.html
Copyright © 2011-2022 走看看