javascriptecmascript-6browserifyace-editor

Import all modes in brace


I'm trying to make an editor where one can choose the mode before starting the program. I'm using the npm packages react-ace and brace for my project. The problem is, that the brace documentation suggests importing the modes one using e.g. import 'brace/mode/java';, but I ideally want to support all ace modes. Does anyone know whether this is possible?


Solution

  • I had the same problem. I didn't come up with a better solution, but here's what works for me.

    Please note that these 143 imports sum up to 6+ MB.

    editor.js:

    import 'acemodes'
    /*
    ...
    */
    

    acemodes.js:

    /*
    cmd to reproduce: ls node_modules/brace/mode/ | awk '{split($9, s, "."); print "import \"brace/mode/"s[1]"\";"}'
    */
    
    import 'brace/mode/ada';
    import 'brace/mode/apache_conf';
    import 'brace/mode/applescript';
    import 'brace/mode/asciidoc';
    import 'brace/mode/assembly_x86';
    import 'brace/mode/autohotkey';
    import 'brace/mode/batchfile';
    import 'brace/mode/bro';
    import 'brace/mode/c9search';
    import 'brace/mode/c_cpp';
    import 'brace/mode/cirru';
    import 'brace/mode/clojure';
    import 'brace/mode/cobol';
    import 'brace/mode/coffee';
    import 'brace/mode/coldfusion';
    import 'brace/mode/csharp';
    import 'brace/mode/css';
    import 'brace/mode/curly';
    import 'brace/mode/dart';
    import 'brace/mode/django';
    import 'brace/mode/d';
    import 'brace/mode/dockerfile';
    import 'brace/mode/dot';
    import 'brace/mode/drools';
    import 'brace/mode/eiffel';
    import 'brace/mode/ejs';
    import 'brace/mode/elixir';
    import 'brace/mode/elm';
    import 'brace/mode/erlang';
    import 'brace/mode/forth';
    import 'brace/mode/fortran';
    import 'brace/mode/ftl';
    import 'brace/mode/gcode';
    import 'brace/mode/gherkin';
    import 'brace/mode/gitignore';
    import 'brace/mode/glsl';
    import 'brace/mode/gobstones';
    import 'brace/mode/golang';
    import 'brace/mode/groovy';
    import 'brace/mode/haml';
    import 'brace/mode/handlebars';
    import 'brace/mode/haskell_cabal';
    import 'brace/mode/haskell';
    import 'brace/mode/haxe';
    import 'brace/mode/hjson';
    import 'brace/mode/html_elixir';
    import 'brace/mode/html';
    import 'brace/mode/html_ruby';
    import 'brace/mode/ini';
    import 'brace/mode/io';
    import 'brace/mode/jack';
    import 'brace/mode/jade';
    import 'brace/mode/java';
    import 'brace/mode/javascript';
    import 'brace/mode/jsoniq';
    import 'brace/mode/json';
    import 'brace/mode/jsp';
    import 'brace/mode/jsx';
    import 'brace/mode/julia';
    import 'brace/mode/kotlin';
    import 'brace/mode/latex';
    import 'brace/mode/less';
    import 'brace/mode/liquid';
    import 'brace/mode/lisp';
    import 'brace/mode/logiql';
    import 'brace/mode/lsl';
    import 'brace/mode/lua';
    import 'brace/mode/luapage';
    import 'brace/mode/lucene';
    import 'brace/mode/makefile';
    import 'brace/mode/markdown';
    import 'brace/mode/mask';
    import 'brace/mode/matlab';
    import 'brace/mode/maze';
    import 'brace/mode/mel';
    import 'brace/mode/mushcode';
    import 'brace/mode/mysql';
    import 'brace/mode/nix';
    import 'brace/mode/nsis';
    import 'brace/mode/objectivec';
    import 'brace/mode/ocaml';
    import 'brace/mode/pascal';
    import 'brace/mode/perl';
    import 'brace/mode/pgsql';
    import 'brace/mode/php';
    import 'brace/mode/powershell';
    import 'brace/mode/praat';
    import 'brace/mode/prolog';
    import 'brace/mode/properties';
    import 'brace/mode/protobuf';
    import 'brace/mode/python';
    import 'brace/mode/razor';
    import 'brace/mode/rdoc';
    import 'brace/mode/rhtml';
    import 'brace/mode/r';
    import 'brace/mode/rst';
    import 'brace/mode/ruby';
    import 'brace/mode/rust';
    import 'brace/mode/sass';
    import 'brace/mode/scad';
    import 'brace/mode/scala';
    import 'brace/mode/scheme';
    import 'brace/mode/scss';
    import 'brace/mode/sh';
    import 'brace/mode/sjs';
    import 'brace/mode/smarty';
    import 'brace/mode/snippets';
    import 'brace/mode/soy_template';
    import 'brace/mode/space';
    import 'brace/mode/sql';
    import 'brace/mode/sqlserver';
    import 'brace/mode/stylus';
    import 'brace/mode/svg';
    import 'brace/mode/swift';
    import 'brace/mode/tcl';
    import 'brace/mode/tex';
    import 'brace/mode/textile';
    import 'brace/mode/toml';
    import 'brace/mode/tsx';
    import 'brace/mode/twig';
    import 'brace/mode/typescript';
    import 'brace/mode/vala';
    import 'brace/mode/vbscript';
    import 'brace/mode/velocity';
    import 'brace/mode/verilog';
    import 'brace/mode/vhdl';
    import 'brace/mode/wollok';
    import 'brace/mode/xml';
    import 'brace/mode/xquery';
    import 'brace/mode/yaml';
    import 'brace/mode/abap';
    import 'brace/mode/abc';
    import 'brace/mode/actionscript';
    import 'brace/mode/lean';
    import 'brace/mode/live_script';
    import 'brace/mode/livescript';
    import 'brace/mode/mavens_mate_log';
    import 'brace/mode/mips_assembler';
    import 'brace/mode/mipsassembler';
    import 'brace/mode/swig';
    import 'brace/mode/diff';
    import 'brace/mode/plain_text';
    import 'brace/mode/text';