mirror of
https://github.com/strapi/strapi.git
synced 2025-07-25 18:05:07 +00:00
91 lines
2.6 KiB
JavaScript
91 lines
2.6 KiB
JavaScript
'use strict';
|
|
|
|
/* eslint-disable import/no-extraneous-dependencies */
|
|
|
|
const path = require('path');
|
|
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');
|
|
const { DuplicateReporterPlugin } = require('duplicate-dependencies-webpack-plugin');
|
|
const { getPlugins } = require('./utils/plugins');
|
|
const webpackConfig = require('./webpack.config');
|
|
|
|
module.exports = () => {
|
|
const analyzeBundle = process.env.ANALYZE_BUNDLE;
|
|
const analyzeDuplicateDependencies = process.env.ANALYZE_DEPS;
|
|
const entry = path.join(__dirname, 'admin', 'src');
|
|
const dest = path.join(__dirname, 'build');
|
|
|
|
// When running the analyze:bundle command, it needs a production build
|
|
// to display the tree map of modules
|
|
const env = analyzeBundle ? 'production' : 'development';
|
|
const options = {
|
|
backend: 'http://localhost:1337',
|
|
adminPath: '/admin/',
|
|
|
|
/**
|
|
* Ideally this would take more scenarios into account, such
|
|
* as the `telemetryDisabled` property in the package.json
|
|
* of the users project. For builds based on an app we are
|
|
* passing this information throgh, but here we do not have access
|
|
* to the app's package.json. By using at least an environment variable
|
|
* we can make sure developers can actually test this functionality in
|
|
* dev-mode.
|
|
*/
|
|
|
|
telemetryDisabled: process.env.STRAPI_TELEMETRY_DISABLED === 'true',
|
|
};
|
|
const plugins = getPlugins();
|
|
|
|
const args = {
|
|
entry,
|
|
plugins,
|
|
dest,
|
|
env,
|
|
options,
|
|
tsConfigFilePath: path.resolve(__dirname, 'admin', 'tsconfig.build.json'),
|
|
};
|
|
|
|
const config = webpackConfig(args);
|
|
|
|
return {
|
|
...config,
|
|
|
|
resolve: {
|
|
...config.resolve,
|
|
alias: {
|
|
...config.resolve.alias,
|
|
/**
|
|
* These aliases mean that we're actually looking at the source of the code
|
|
* as opposed to the compiled version of the code. This is useful for a better local DX.
|
|
*/
|
|
...plugins.reduce((acc, plugin) => {
|
|
acc[`${plugin.pathToPlugin}/strapi-admin`] = path.join(plugin.directory, 'admin', 'src');
|
|
|
|
return acc;
|
|
}, {}),
|
|
'@strapi/helper-plugin$': path.resolve(__dirname, '..', 'helper-plugin', 'src'),
|
|
},
|
|
},
|
|
|
|
plugins: [
|
|
...config.plugins,
|
|
analyzeBundle === 'true' && new BundleAnalyzerPlugin(),
|
|
analyzeDuplicateDependencies === 'true' && new DuplicateReporterPlugin(),
|
|
],
|
|
|
|
devServer: {
|
|
port: 4000,
|
|
client: {
|
|
logging: 'none',
|
|
overlay: {
|
|
errors: true,
|
|
warnings: false,
|
|
},
|
|
},
|
|
historyApiFallback: {
|
|
index: '/admin/',
|
|
disableDotRule: true,
|
|
},
|
|
},
|
|
};
|
|
};
|