标签:const version 优化 cdn umijs 开发 import config defineConfig
.umirc.ts
import { defineConfig } from 'umi';
import dev from './config/dev';
import prod from './config/prod';
console.log(process.env.NODE_ENV);
const envConfig = 'development' === process.env.NODE_ENV ? dev : prod;
export default defineConfig({
webpack5: {}, // 使用webpack 5
nodeModulesTransform: {
type: 'none',
},
routes: [{ path: '/', component: '@/pages/index' }],
fastRefresh: {},
...envConfig,
});
config/dev
开发时使用chunk缓存减少打包时间
import { defineConfig } from 'umi';
export default defineConfig({
hash: false,
devServer: {
// writeToDisk: true,
},
chunks: ['vendors', 'umi'],
chainWebpack: function (config, { webpack }) {
config.merge({
optimization: {
moduleIds: 'deterministic',
splitChunks: {
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all',
},
},
},
},
});
},
});
config/prod
打包生产时 能用cdn的就用cdn
import { defineConfig } from 'umi';
import * as pkg from '../package.json';
const externalsConfig: any = {
lodash: {
name: '_',
cdn: (version: string) =>
`https://cdnjs.cloudflare.com/ajax/libs/react/${version}/umd/react.production.min.js`,
},
react: {
name: 'React',
cdn: (version: string) =>
`https://cdnjs.cloudflare.com/ajax/libs/react-dom/${version}/umd/react-dom.production.min.js`,
},
'react-dom': {
name: 'ReactDOM',
cdn: (version: string) =>
`https://cdnjs.cloudflare.com/ajax/libs/lodash.js/${version}/lodash.min.js`,
},
};
const externals: any = {};
const scripts: string[] = [];
for (const pname in externalsConfig) {
externals[pname] = externalsConfig[pname].name;
if (pname in pkg.dependencies) {
const version = (pkg.dependencies as any)[pname].replace(/^\D/, '');
scripts.push(externalsConfig[pname].cdn(version));
}
}
export default defineConfig({
hash: true,
chainWebpack: function (config, { webpack }) {
config.merge({
optimization: {
minimize: true,
usedExports: true,
},
});
},
externals,
scripts,
});
标签:const,version,优化,cdn,umijs,开发,import,config,defineConfig 来源: https://www.cnblogs.com/ajanuw/p/15031752.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。