neutronium 1.9.3 → 1.9.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler/compiler.js +24 -2
- package/package.json +1 -1
- package/src/index.js +5 -3
package/compiler/compiler.js
CHANGED
|
@@ -23,8 +23,12 @@ function compileProject(projectDir = process.cwd()) {
|
|
|
23
23
|
log('⚙️ Compiling JSX with Babel...');
|
|
24
24
|
let { code: transpiled } = babel.transformSync(sourceCode, {
|
|
25
25
|
filename: 'App.js',
|
|
26
|
-
presets: [
|
|
27
|
-
plugins: [
|
|
26
|
+
presets: [],
|
|
27
|
+
plugins: [
|
|
28
|
+
['@babel/plugin-transform-react-jsx', { pragma: '_neutronium.h' }]
|
|
29
|
+
],
|
|
30
|
+
babelrc: false,
|
|
31
|
+
configFile: false,
|
|
28
32
|
});
|
|
29
33
|
|
|
30
34
|
// Remove CommonJS require if present
|
|
@@ -32,6 +36,7 @@ function compileProject(projectDir = process.cwd()) {
|
|
|
32
36
|
/(const|var|let)\s+_neutronium\s*=\s*require\(["']neutronium["']\);?/g,
|
|
33
37
|
''
|
|
34
38
|
);
|
|
39
|
+
transpiled = transpiled.replace("import { createApp } from 'neutronium';", "import { createApp } from '../node_modules/neutronium/src/index.js';")
|
|
35
40
|
|
|
36
41
|
const finalJsCode = `
|
|
37
42
|
import * as _neutronium from '${neutroniumPath}';
|
|
@@ -57,6 +62,23 @@ _neutronium.createApp(App).mount('#app');
|
|
|
57
62
|
}
|
|
58
63
|
}
|
|
59
64
|
|
|
65
|
+
function compileProjectWatch(projectDir = process.cwd(), port = 3000) {
|
|
66
|
+
const appJsPath = path.join(projectDir, 'App.js');
|
|
67
|
+
|
|
68
|
+
const server = serveProject(projectDir, port);
|
|
69
|
+
compileProject(projectDir);
|
|
70
|
+
|
|
71
|
+
log('👀 Watching App.js for changes...');
|
|
72
|
+
chokidar.watch(appJsPath).on('change', () => {
|
|
73
|
+
console.clear();
|
|
74
|
+
log('🔁 Detected change in App.js...');
|
|
75
|
+
compileProject(projectDir);
|
|
76
|
+
if (server.broadcastReload) {
|
|
77
|
+
server.broadcastReload();
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
60
82
|
function serveProject(projectDir = process.cwd(), port = 3000) {
|
|
61
83
|
const distDir = path.join(projectDir, 'dist');
|
|
62
84
|
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -4,7 +4,10 @@ function h(type, props = {}, ...children) {
|
|
|
4
4
|
const el = document.createElement(type);
|
|
5
5
|
|
|
6
6
|
for (const [key, value] of Object.entries(props || {})) {
|
|
7
|
-
if (key
|
|
7
|
+
if (key === 'ref' && typeof value === 'function') {
|
|
8
|
+
// Delay to ensure element is mounted
|
|
9
|
+
setTimeout(() => value(el), 0);
|
|
10
|
+
} else if (key.startsWith('on') && typeof value === 'function') {
|
|
8
11
|
el.addEventListener(key.slice(2).toLowerCase(), value);
|
|
9
12
|
} else {
|
|
10
13
|
el.setAttribute(key, value);
|
|
@@ -38,5 +41,4 @@ function createApp(component) {
|
|
|
38
41
|
};
|
|
39
42
|
}
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
export { h, createApp };
|
|
44
|
+
export { h, createApp };
|