Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"ui5ts.manifestlocation": "webapp\\manifest.json"
}
68 changes: 51 additions & 17 deletions lib/transpile.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
const path = require("path");
const babel = require("@babel/core");
const log = require("@ui5/logger").getLogger("builder:customtask:transpile");
const pathregen = require("regenerator-runtime/path").path;
const resourceFactory = require("@ui5/fs").resourceFactory;
const fs = require('fs');

/**
* Task to transpiles ES6 code into ES5 code.
Expand All @@ -13,22 +16,53 @@ const log = require("@ui5/logger").getLogger("builder:customtask:transpile");
* @param {string} [parameters.options.configuration] Task configuration if given in ui5.yaml
* @returns {Promise<undefined>} Promise resolving with undefined once data has been written
*/
module.exports = function({workspace, dependencies, options}) {
return workspace.byGlob("/**/*.js").then((resources) => {
return Promise.all(resources.map((resource) => {
return resource.getString().then((value) => {
log.info("Transpiling file " + resource.getPath());
return babel.transformAsync(value, {
sourceMap: false,
presets: ["@babel/preset-env"],
plugins: [["@babel/plugin-transform-modules-commonjs", {
"strictMode": false
}]]
});
}).then((result) => {
resource.setString(result.code);
workspace.write(resource);
});
}));
module.exports = async function ({
workspace,
dependencies,
options
}) {
let resources = await workspace.byGlob("/**/*.js");
//get path of Component
const componentResource = resources.find((jsResource) => jsResource.getPath().includes("Component.js"));
const toPath = componentResource.getPath();
const pathPrefix = toPath.replace("Component.js", "");
//get path of regenerator in node_modules
const pathRegenerator = pathregen.substr(pathregen.indexOf("node_modules") + 13).replace("\\", "/");
//build full path for regenerator in current project
const virtualPathRegenerator = pathPrefix + pathRegenerator;
//get code of regenereator
const runtimeCode = fs.readFileSync(pathregen, 'utf8');
//create resource
const runtimeResource = resourceFactory.createResource({
path: virtualPathRegenerator,
string: runtimeCode
});
//save regenerator to workspace
await workspace.write(runtimeResource);

//add require regenerator for development prupose
let componentSource = await componentResource.getString();
const requirePath = virtualPathRegenerator.replace("/resources/","").replace(".js","");
componentSource = "// development mode: load the regenerator runtime synchronously\nif(!window.regeneratorRuntime){sap.ui.requireSync(\""+requirePath+"\")}" + componentSource;
componentResource.setString(componentSource);
await workspace.write(componentResource);

resources = await workspace.byGlob("/**/*.js");
return await Promise.all(resources.map((resource) => {
return resource.getString().then((value) => {
log.info("Transpiling file " + resource.getPath());
return babel.transformAsync(value, {
sourceMap: false,
presets: ["@babel/preset-env"],
plugins: [
["@babel/plugin-transform-modules-commonjs", {
"strictMode": false
}]
]
});
}).then((result) => {
resource.setString(result.code);
workspace.write(resource);
});
}));
};
Loading