我可以在openUI5上使用webpack吗?

时间:2016-04-26 07:57:41

标签: webpack sapui5

我可以将webpack及其捆绑功能与openUI5项目一起使用吗?怎么样?

我知道openui5_preloadgulp-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文件。为什么呢?

3 个答案:

答案 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/**",
        },
      }
    ]),
  ]
}