export default()

in packages/build-plugin-alt/src/baseConfig.ts [13:83]


export default (config: WebpackChain, { rootDir, entry, type, pkg, mainFile, generateMeta }: IOptions) => {
  config.target('web');
  config.context(rootDir);
  config.merge({
    entry,
  });
  config.output.filename('[name].js');
  // remove CopyWebpackPlugin (component compile do not have public folder)
  config.plugins.delete('CopyWebpackPlugin');
  config.node.set('fs', 'empty');

  // disable vendor
  config.optimization.splitChunks({ cacheGroups: {} });

  config.plugin('momentLocale').use(MomentLocalesPlugin, [{
    localesToKeep: ['en', 'zh-cn']
  }]);


  // config.resolve.modules
  //   .add(path.join(rootDir, 'node_modules'))
  //   .add('node_modules')
  //   .add(path.join(__dirname, '../node_modules'));

  config.resolve.alias.set(`__lowcode-${type}-demo__`, path.join(rootDir, 'src/index'));

  config.externals({
    "react": "var window.React",
    "react-dom": "var window.ReactDOM",
    "prop-types": "var window.PropTypes",
    "@alifd/next": "var window.Next",
    "@ali/visualengine": "var window.VisualEngine",
    "@ali/visualengine-utils": "var window.VisualEngineUtils",
    "@ali/lowcode-engine": "var window.AliLowCodeEngine",
    "@alilc/lowcode-engine": "var window.AliLowCodeEngine",
    "@ali/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
    "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt",
    "monaco-editor/esm/vs/editor/editor.api": "var window.monaco",
    "monaco-editor/esm/vs/editor/editor.main.js": "var window.monaco",
    "@alilc/lowcode-editor-skeleton": "var window.AliLowCodeEngine.common.skeletonCabin",
    "@alilc/lowcode-editor-core": "var window.AliLowCodeEngine.common.editorCabin",
    "@alilc/lowcode-designer": "var window.AliLowCodeEngine.common.designerCabin",
  });


  // see https://github.com/webpack/webpack/releases/tag/v4.0.0 for details
  config.module.rule('mjs2js')
    .test(/\.mjs$/)
    .include
    .add(/node_modules/)
    .end()
    .type('javascript/auto');

  if (type === 'plugin' && generateMeta && pkg.lcMeta) {
    ['tsx', 'jsx'].forEach((ruleName) => {
      config.module.rule(ruleName).use('babel-loader').tap((options) => {
        return {
          ...options,
          plugins: [
            ...options.plugins,
            [require.resolve('./babelPluginMeta'), {
              filename: mainFile,
              meta: pkg.lcMeta,
            }],
          ]
        }
      })
    })
  }
  
}