导入大括号中的所有模式

问题描述 投票:0回答:2

我正在尝试制作一个编辑器,可以在启动程序之前选择模式。我在我的项目中使用 npm 包

react-ace
brace
。问题是,大括号文档建议使用例如导入模式。
import 'brace/mode/java';
,但我理想情况下希望支持所有 ace 模式。 有谁知道这是否可能?

javascript ecmascript-6 browserify ace-editor
2个回答
3
投票

我也有同样的问题。我没有想出更好的解决方案,但这对我有用。

请注意,这 143 个导入总计达 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';

0
投票

这是我在 Vue 项目中使用的内容,希望对您有所帮助:

require('brace/mode/' + mode);

每次模式改变时都会调用此行。

您需要在某处编写一些代码来了解大括号模式的完整列表,以便用户能够在列表中选择它。

一旦你知道了你想要的模式的名称,你就一切顺利了。

另外,即使调用多次,require 也只会加载同一个文件一次。

我不知道如何从支架加载列表,我在网上找到的几个解决方案仅适用于 ace,我无法使它们适应支架。

我刚刚从此处复制、清理并保存了最佳答案中的模式列表。

© www.soinside.com 2019 - 2024. All rights reserved.