Могу ли я использовать веб-пакет с 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...

Это хранилище ui5-загрузчика, кажется, то, что вы хотите.

Я только что наткнулся на презентацию 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/**",
        },
      }
    ]),
  ]
}
Другие вопросы по тегам