monaco-editor使用

· 1 min read

安装

npm i react-monaco-editor monaco-editor

npm i monaco-editor-webpack-plugin -D

Webpack打包

    new MonacoWebpackPlugin({
      // available options are documented at https://github.com/microsoft/monaco-editor/blob/main/webpack-plugin/README.md#options
      languages: ['shell', 'json', 'xml', 'yaml', 'sql', 'dockerfile', 'bat', 'ini', 'markdown', 'javascript'],
      filename: '/monaco-editor/[name].worker.[contenthash].js',
      publicPath: '',
      features: ['coreCommands'],
      globalAPI: false,
    }),

注意:filename配置只影响了主文件,动态加载的语言模块文件名并不受该设置影响。解决办法如下

output:{  
    chunkFilename: ({ chunk }) => {
        const regex = /((?<=esm_)vs_(basic-languages|language)_.+)/;
        const language = chunk.id.match(regex);
        return language ? `vendor/monaco-${language[1]}.[chunkhash].js` : 'vendor/[name].[chunkhash].js';
      },
        },
  ...      
        
     optimization: {
      chunkIds: 'named',       
        ...
     }

相关文档