Commit 0c7489e4 authored by 郭志伟's avatar 郭志伟

feat: 优化构建测试

parent d1c26369
...@@ -63,7 +63,6 @@ export default { ...@@ -63,7 +63,6 @@ export default {
ie: 11, ie: 11,
}, },
// devtool: process.env.SENTRY_ENV === 'test' ? false : 'hidden-source-map', // devtool: process.env.SENTRY_ENV === 'test' ? false : 'hidden-source-map',
devtool: false,
// umi routes: https://umijs.org/zh/guide/router.html // umi routes: https://umijs.org/zh/guide/router.html
routes: [ routes: [
{ {
......
...@@ -7,6 +7,7 @@ import generate from '@ant-design/colors/lib/generate'; ...@@ -7,6 +7,7 @@ import generate from '@ant-design/colors/lib/generate';
import path from 'path'; import path from 'path';
const SentryPlugin = require('@qg/sentry-webpack-plugin'); const SentryPlugin = require('@qg/sentry-webpack-plugin');
const SentryConfig = require('../.sentryclirc'); const SentryConfig = require('../.sentryclirc');
import webpack from 'webpack';
function getModulePackageName(module) { function getModulePackageName(module) {
if (!module.context) return null; if (!module.context) return null;
const nodeModulesPath = path.join(__dirname, '../node_modules/'); const nodeModulesPath = path.join(__dirname, '../node_modules/');
...@@ -30,6 +31,14 @@ function getModulePackageName(module) { ...@@ -30,6 +31,14 @@ function getModulePackageName(module) {
export default config => { export default config => {
if (process.env.NODE_ENV === 'production') { if (process.env.NODE_ENV === 'production') {
config.plugin('sentry-webpack-plugin').use(SentryPlugin, [SentryConfig]); config.plugin('sentry-webpack-plugin').use(SentryPlugin, [SentryConfig]);
if (process.env.SENTRY_ENV === 'prod') {
config.plugin('source-map-dev-tool-plugin').use(webpack.SourceMapDevToolPlugin, [
{
exclude: /(antdesigns|vendors|mapvgl).*/,
filename: '[file].map[query]',
},
]);
}
} }
// preview.pro.ant.design only do not use in your production; // preview.pro.ant.design only do not use in your production;
if ( if (
...@@ -63,42 +72,40 @@ export default config => { ...@@ -63,42 +72,40 @@ export default config => {
} // optimize chunks } // optimize chunks
config.optimization // share the same chunks across different modules config.optimization // share the same chunks across different modules
.runtimeChunk(false)
.splitChunks({ .splitChunks({
chunks: 'async', chunks: 'all', //async异步代码分割 initial同步代码分割 all同步异步分割都开启
name: 'vendors', automaticNameDelimiter: '.',
maxInitialRequests: Infinity, name: true,
minSize: 0, minSize: 30000, // 引入的文件大于30kb才进行分割
minChunks: 1, // 模块至少使用次数
cacheGroups: { cacheGroups: {
antdesigns: {
name: 'antdesigns',
chunks: 'all',
test: /[\\/]node_modules[\\/](@antv|antd|@ant-design|rc-*|[\\@]ctrl[\\/]tinycolor|tinycolor2)/,
priority: 10,
},
vendors: { vendors: {
test: module => { name: 'vendors',
const packageName = getModulePackageName(module) || ''; chunks: 'all',
test: /[\\/]node_modules[\\/](lodash|moment|react|dva|postcss|mapbox-gl|date-fns|sentry|react-sortablejs|sortablejs)/,
if (packageName) { priority: 10,
return [ enforce: true,
'bizcharts', },
'gg-editor', mapvgl: {
'g6', name: 'mapvgl',
'@antv', chunks: 'all',
'gg-editor-core', test: /[\\/]node_modules[\\/](mapvgl|react-bmapgl|react-amap)/,
'bizcharts-plugin-slider', priority: 11,
].includes(packageName); },
} commons: {
name: 'commons',
return false; // 其余同步加载包
}, chunks: 'all',
minChunks: 2,
name(module) { priority: 1,
const packageName = getModulePackageName(module); // refer: https://github.com/webpack-contrib/mini-css-extract-plugin/issues/257#issuecomment-432594711
enforce: true,
if (packageName) {
if (['bizcharts', '@antv_data-set'].indexOf(packageName) >= 0) {
return 'viz'; // visualization package
}
}
return 'misc';
},
}, },
}, },
}); });
......
This diff is collapsed.
{ {
"name": "merchant-manage-ui", "name": "merchant-manage-ui",
"version": "1.0.0", "version": "1.0.0",
"private": true, "private": true,
"description": "商户管理后台", "description": "商户管理后台",
"scripts": { "scripts": {
"analyze": "cross-env ANALYZE=1 umi build", "analyze": "cross-env ANALYZE=1 SENTRY_ENV=prod umi build",
"build": "umi build", "build": "umi build",
"build:pre": "cross-env PRE_ENV=pre umi build", "build:pre": "cross-env PRE_ENV=pre umi build",
"build:test": "cross-env SENTRY_ENV=test umi build", "build:test": "cross-env SENTRY_ENV=prod umi build",
"deploy": "npm run site && npm run gh-pages", "deploy": "npm run site && npm run gh-pages",
"fetch:blocks": "pro fetch-blocks && npm run prettier", "fetch:blocks": "pro fetch-blocks && npm run prettier",
"format-imports": "cross-env import-sort --write '**/*.{js,jsx,ts,tsx}'", "format-imports": "cross-env import-sort --write '**/*.{js,jsx,ts,tsx}'",
"gh-pages": "cp CNAME ./dist/ && gh-pages -d dist", "gh-pages": "cp CNAME ./dist/ && gh-pages -d dist",
"i18n-remove": "pro i18n-remove --locale=zh-CN --write", "i18n-remove": "pro i18n-remove --locale=zh-CN --write",
"lint": "npm run lint:js && npm run lint:style && npm run lint:prettier", "lint": "npm run lint:js && npm run lint:style && npm run lint:prettier",
"lint-staged": "lint-staged", "lint-staged": "lint-staged",
"lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ", "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ",
"lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && npm run lint:style", "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && npm run lint:style",
"lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src", "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src",
"lint:prettier": "check-prettier lint", "lint:prettier": "check-prettier lint",
"lint:style": "stylelint --fix \"src/**/*.less\" --syntax less", "lint:style": "stylelint --fix \"src/**/*.less\" --syntax less",
"prettier": "prettier -c --write \"**/*\"", "prettier": "prettier -c --write \"**/*\"",
"start": "umi dev", "start": "umi dev",
"start:no-mock": "cross-env MOCK=none umi dev", "start:no-mock": "cross-env MOCK=none umi dev",
"start:no-ui": "cross-env UMI_UI=none umi dev", "start:no-ui": "cross-env UMI_UI=none umi dev",
"test": "umi test", "test": "umi test",
"test:all": "node ./tests/run-tests.js", "test:all": "node ./tests/run-tests.js",
"test:component": "umi test ./src/components", "test:component": "umi test ./src/components",
"ui": "umi ui" "ui": "umi ui"
}, },
"husky": { "husky": {
"hooks": { "hooks": {
"pre-commit": "npm run lint-staged" "pre-commit": "npm run lint-staged"
} }
}, },
"lint-staged": { "lint-staged": {
"**/*.less": "stylelint --syntax less", "**/*.less": "stylelint --syntax less",
"**/*.{js,jsx,tsx,ts,less,md,json}": [ "**/*.{js,jsx,tsx,ts,less,md,json}": [
"prettier --write", "prettier --write",
"git add" "git add"
], ],
"**/*.{js,jsx}": "npm run lint-staged:js", "**/*.{js,jsx}": "npm run lint-staged:js",
"**/*.{js,ts,tsx}": "npm run lint-staged:js" "**/*.{js,ts,tsx}": "npm run lint-staged:js"
}, },
"browserslist": [ "browserslist": [
"> 1%", "> 1%",
"last 2 versions", "last 2 versions",
"not ie <= 10" "not ie <= 10"
], ],
"dependencies": { "dependencies": {
"@ant-design/colors": "^3.1.0", "@ant-design/colors": "^3.1.0",
"@ant-design/compatible": "^1.1.0", "@ant-design/compatible": "^1.1.0",
"@ant-design/icons": "^4.7.0", "@ant-design/icons": "^4.7.0",
"@ant-design/pro-layout": "^4.11.4", "@ant-design/pro-layout": "^4.11.4",
"@ant-design/pro-table": "^1.0.31", "@ant-design/pro-table": "^1.0.31",
"@antv/data-set": "^0.10.2", "@antv/data-set": "^0.10.2",
"@sentry/react": "^7.41.0", "@sentry/react": "^7.41.0",
"antd": "^4.19.3", "antd": "^4.19.3",
"antd-img-crop": "4.12.2", "antd-img-crop": "4.12.2",
"antd-virtual-select": "^1.1.2", "antd-virtual-select": "^1.1.2",
"array-move": "^4.0.0", "array-move": "^4.0.0",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"classnames": "^2.2.6", "classnames": "^2.2.6",
"date-fns": "^2.16.1", "date-fns": "^2.16.1",
"dva": "^2.4.1", "dva": "^2.4.1",
"file-saver": "^2.0.5", "file-saver": "^2.0.5",
"lodash": "^4.17.11", "lodash": "^4.17.11",
"moment": "^2.24.0", "moment": "^2.24.0",
"omit.js": "^1.0.2", "omit.js": "^1.0.2",
"path-to-regexp": "^3.1.0", "path-to-regexp": "^3.1.0",
"pubsub-js": "^1.9.4", "pubsub-js": "^1.9.4",
"qs": "^6.9.0", "qs": "^6.9.0",
"react": "^16.8.6", "react": "^16.8.6",
"react-amap": "^1.2.8", "react-amap": "^1.2.8",
"react-bmapgl": "^0.2.17", "react-bmapgl": "^0.2.17",
"react-copy-to-clipboard": "^5.0.1", "react-copy-to-clipboard": "^5.0.1",
"react-dnd": "10.0.2", "react-dnd": "10.0.2",
"react-dnd-html5-backend": "10.0.2", "react-dnd-html5-backend": "10.0.2",
"react-dom": "^16.8.6", "react-dom": "^16.8.6",
"react-helmet": "^5.2.1", "react-helmet": "^5.2.1",
"react-router-dom": "^5.1.2", "react-router-dom": "^5.1.2",
"react-sortable-hoc": "^2.0.0", "react-sortable-hoc": "^2.0.0",
"react-sortablejs": "^6.0.0", "react-sortablejs": "^6.0.0",
"react-window": "^1.8.8", "react-window": "^1.8.8",
"slash2": "^2.0.0", "slash2": "^2.0.0",
"sortablejs": "^1.13.0", "sortablejs": "^1.13.0",
"umi": "^3.0.0", "umi": "^3.0.0",
"umi-request": "^1.2.7", "umi-request": "^1.2.7",
"webpack-theme-color-replacer": "^1.2.15" "webpack-theme-color-replacer": "^1.2.15"
}, },
"devDependencies": { "devDependencies": {
"@ant-design/pro-cli": "^1.0.13", "@ant-design/pro-cli": "^1.0.13",
"@qg/sentry-webpack-plugin": "^1.19.0", "@qg/sentry-webpack-plugin": "^1.19.0",
"@types/classnames": "^2.2.7", "@types/classnames": "^2.2.7",
"@types/express": "^4.17.0", "@types/express": "^4.17.0",
"@types/history": "^4.7.2", "@types/history": "^4.7.2",
"@types/jest": "^24.0.13", "@types/jest": "^24.0.13",
"@types/lodash": "^4.14.144", "@types/lodash": "^4.14.144",
"@types/qs": "^6.5.3", "@types/qs": "^6.5.3",
"@types/react": "^16.8.19", "@types/react": "^16.8.19",
"@types/react-dom": "^16.8.4", "@types/react-dom": "^16.8.4",
"@types/react-helmet": "^5.0.13", "@types/react-helmet": "^5.0.13",
"@umijs/fabric": "^1.2.0", "@umijs/fabric": "^1.2.0",
"@umijs/plugin-blocks": "^2.0.5", "@umijs/plugin-blocks": "^2.0.5",
"@umijs/preset-ant-design-pro": "^1.0.1", "@umijs/preset-ant-design-pro": "^1.0.1",
"@umijs/preset-react": "^1.3.0", "@umijs/preset-react": "^1.3.0",
"@umijs/preset-ui": "^2.0.9", "@umijs/preset-ui": "^2.0.9",
"chalk": "^2.4.2", "chalk": "^2.4.2",
"check-prettier": "^1.0.3", "check-prettier": "^1.0.3",
"cross-env": "^6.0.0", "cross-env": "^6.0.0",
"cross-port-killer": "^1.1.1", "cross-port-killer": "^1.1.1",
"enzyme": "^3.9.0", "enzyme": "^3.9.0",
"eslint": "5.16.0", "eslint": "5.16.0",
"express": "^4.17.1", "express": "^4.17.1",
"gh-pages": "^2.0.1", "gh-pages": "^2.0.1",
"husky": "^3.0.0", "husky": "^3.0.0",
"import-sort-cli": "^6.0.0", "import-sort-cli": "^6.0.0",
"import-sort-parser-babylon": "^6.0.0", "import-sort-parser-babylon": "^6.0.0",
"import-sort-parser-typescript": "^6.0.0", "import-sort-parser-typescript": "^6.0.0",
"import-sort-style-module": "^6.0.0", "import-sort-style-module": "^6.0.0",
"jest-puppeteer": "^4.2.0", "jest-puppeteer": "^4.2.0",
"lint-staged": "^9.0.0", "lint-staged": "^9.0.0",
"mockjs": "^1.0.1-beta3", "mockjs": "^1.0.1-beta3",
"node-fetch": "^2.6.0", "node-fetch": "^2.6.0",
"prettier": "^1.17.1", "prettier": "^1.17.1",
"pro-download": "1.0.1", "pro-download": "1.0.1",
"stylelint": "^10.1.0" "stylelint": "^10.1.0",
}, "webpack": "^4.46.0"
"engines": { },
"node": ">=10.0.0" "engines": {
}, "node": ">=10.0.0"
"checkFiles": [ },
"src/**/*.js*", "checkFiles": [
"src/**/*.ts*", "src/**/*.js*",
"src/**/*.less", "src/**/*.ts*",
"config/**/*.js*", "src/**/*.less",
"scripts/**/*.js" "config/**/*.js*",
], "scripts/**/*.js"
"author": "congmin.hao" ],
"author": "congmin.hao"
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment