我可以将webpack及其捆绑功能与openUI5项目一起使用吗?怎么样?
我知道openui5_preload
和gulp-ui5-preload
但我想要的不只是将所有我的代码放在一个preloader文件中:我喜欢“走”所有使用过的dedendencies同时将我的整个openUI5项目捆绑在一个文件中。
到目前为止,我能够使用UI5运行webpack:
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文件。为什么呢?
答案 0 :(得分:5)
UI5使用自己对CommonJS和AMD的实现/修改:jQuery.sap.require()
/ jQuery.sap.declare()
以及更新且现在推荐的AMD sap.ui.require()
/ sap.ui.declare()
。
Webpacks dependecy walking支持CommonJS和AMD(1)。但我猜它不理解UI5模块。没有它,它无法提取每个模块的依赖关系。所以它会卡在你的Component.js ......
答案 1 :(得分:2)
这ui5-loader repository似乎就是你想要的。
答案 2 :(得分:0)
我刚遇到presentation from UI5Con,提到OpenUI5 Webpack support。
您通过以下方式安装它: 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/**",
},
}
]),
]
}