Могу ли я использовать веб-пакет с openUI5?
Могу ли я использовать веб-пакет и его пакетные функции в проекте openUI5? Как?
Я в курсе openui5_preload
а также gulp-ui5-preload
но я хочу больше, чем просто поместить весь мой код в один файл preloader: мне также нравится "ходить" по всем используемым зависимостям и объединять весь мой openUI5-проект в один файл.
До сих пор я смог запустить веб-пакет с UI5:
npm i -g webpack
webpack.config.js:
module.exports = {
entry: {
packed: './webapp/Component.js'
},
output: {
path: './built',
filename: '[name].built.js'
},
resolve: {
modulesDirectories: [
'node_modules',
'bower_components'
]
}
};
и беги webpack
файл built/packed.built.js
создано. Но он просто содержит мой component.js-файл. Зачем?
2 ответа
UI5 использует свои собственные реализации / модификации CommonJS и AMD: jQuery.sap.require()
/jQuery.sap.declare()
а новее и сейчас рекомендую AMD sap.ui.require()
/sap.ui.declare()
,
Ходьба в зависимости от Webpacks поддерживает CommonJS и AMD ( 1). Но я бы предположил, что он не понимает модули UI5. Без этого он не может извлечь зависимости каждого модуля. Так что застрял в вашем Component.js...
Я только что наткнулся на презентацию UI5Con, в которой упоминается поддержка OpenUI5 Webpack.
Вы устанавливаете его с помощью: npm install --save-dev openui5-webpack-plugin
Пример конфигурации взят из проектной документации:
const OpenUI5Plugin = require("openui5-webpack-plugin");
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
resolve: {
modules: [
"node_modules/@openui5/sap.m/src",
"node_modules/@openui5/sap.ui.core/src",
"node_modules/@openui5/sap.ui.core/src/sap/ui/thirdparty",
"node_modules/@openui5/themelib_sap_belize/src",
"node_modules"
],
},
plugins: [
new OpenUI5Plugin({
modulePath: 'my/resource/module/path',
libs: ['sap.ui.core', 'sap.m'],
translations: ['en', 'de'],
theme: ['sap_belize'],
requireSync: [],
manifest: "./manifest.json"
}),
new CopyWebpackPlugin([
{
context: path.resolve(__dirname, "node_modules/@openui5/sap.ui.core/src"),
from: {
glob: "sap/ui/core/themes/base/fonts/**",
},
},
{
context: path.resolve(__dirname, "node_modules/@openui5/themelib_sap_belize/src"),
from: {
glob: "sap/ui/core/themes/sap_belize_plus/fonts/**",
},
}
]),
]
}