Skip to content

Commit e14902e

Browse files
authoredJun 20, 2023
fix: Fix vite build and webpack warning (#5192)
* rename css.js files to not confuse vite bundler * add default exports to keys * fix typing * remove undecidable require call
1 parent 5eb78ad commit e14902e

File tree

96 files changed

+69
-65
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+69
-65
lines changed
 

‎ace.d.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,7 @@ export namespace Ace {
884884
setStyle(style: string): void;
885885
unsetStyle(style: string): void;
886886
getFontSize(): string;
887-
setFontSize(size: number): void;
887+
setFontSize(size: number|string): void;
888888
focus(): void;
889889
isFocused(): boolean;
890890
blur(): void;
@@ -1097,6 +1097,9 @@ export const EditSession: {
10971097
export const UndoManager: {
10981098
new(): Ace.UndoManager;
10991099
};
1100+
export const Editor: {
1101+
new(): Ace.Editor;
1102+
};
11001103
export const Range: {
11011104
new(startRow: number, startColumn: number, endRow: number, endColumn: number): Ace.Range;
11021105
fromPoints(start: Ace.Point, end: Ace.Point): Ace.Range;

‎src/config.js

+16-7
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,26 @@ exports.setModuleUrl = function(name, subst) {
7777
var loader = function(moduleName, cb) {
7878
if (moduleName === "ace/theme/textmate" || moduleName === "./theme/textmate")
7979
return cb(null, require("./theme/textmate"));
80-
return console.error("loader is not configured");
80+
if (typeof module.require == "function") {
81+
// backwards compatibility for node
82+
try {
83+
var req = "require";
84+
return cb(null, module[req](moduleName));
85+
} catch (e) {
86+
}
87+
}
88+
if (customLoader)
89+
return customLoader(moduleName, cb);
90+
console.error("loader is not configured");
8191
};
82-
92+
var customLoader;
8393
exports.setLoader = function(cb) {
84-
loader = cb;
94+
customLoader = cb;
8595
};
8696

8797
exports.dynamicModules = Object.create(null);
8898
exports.$loading = {};
99+
exports.$loaded = {};
89100
exports.loadModule = function(moduleName, onLoad) {
90101
var module, moduleType;
91102
if (Array.isArray(moduleName)) {
@@ -105,6 +116,7 @@ exports.loadModule = function(moduleName, onLoad) {
105116

106117
var afterLoad = function() {
107118
loader(moduleName, function(err, module) {
119+
if (module) exports.$loaded[moduleName] = module;
108120
exports._emit("load.module", {name: moduleName, module: module});
109121
var listeners = exports.$loading[moduleName];
110122
exports.$loading[moduleName] = null;
@@ -130,10 +142,7 @@ exports.loadModule = function(moduleName, onLoad) {
130142
}
131143
});
132144
} else {
133-
try {
134-
module = require(moduleName);
135-
} catch (e) {}
136-
load(module);
145+
load(module || exports.$loaded[moduleName]);
137146
}
138147
};
139148

1 commit comments

Comments
 (1)

barisusakli commented on Jun 26, 2023

@barisusakli

We've been using ace-editor 1.22.1 with webpack for a while. We use the below file to load ace-editor.

/* eslint-disable import/first */

export * from 'ace-builds';

// only import the modes and theme we use
import 'ace-builds/src-noconflict/mode-javascript';
import 'ace-builds/src-noconflict/mode-scss';
import 'ace-builds/src-noconflict/mode-html';
import 'ace-builds/src-noconflict/ext-searchbox';
import 'ace-builds/src-noconflict/theme-twilight';

/* eslint-disable import/no-webpack-loader-syntax */
/* eslint-disable import/no-unresolved */
import htmlWorkerUrl from 'file-loader!ace-builds/src-noconflict/worker-html';
import javascriptWorkerUrl from 'file-loader!ace-builds/src-noconflict/worker-javascript';
import cssWorkerUrl from 'file-loader!ace-builds/src-noconflict/worker-css';

ace.config.setModuleUrl('ace/mode/html_worker', htmlWorkerUrl);
ace.config.setModuleUrl('ace/mode/javascript_worker', javascriptWorkerUrl);
ace.config.setModuleUrl('ace/mode/css_worker', cssWorkerUrl);

After that we can use it in our own modules like

require(['ace/ace'], function (ace) {
	const editorEl = ace.edit('#my-ace-editor', {
		mode: 'ace/mode/javascript',
		theme: 'ace/theme/twilight',
		maxLines: 30,
		minLines: 30,
		fontSize: 14,
	});
});

Same code on 1.23.0 results in 404 errors for the mode and theme files.

image

Please sign in to comment.