Browse Source

Pull request #3469: KERNEL-14316 fix: 打包和处理一些细节上的问题

Merge in VISUAL/fineui from ~TREECAT/fineui:es6 to es6

* commit 'cdd44f4b99bedbdb2d0e3b46c83f863e0691f5b0':
  KERNEL-14316 fix: 取消掉 npm 里面的 cd
  KERNEL-14316 fix: bundle 打包
  KERNEL-14316 fix: bundle打包
  KERNEL-14316 fix: 修复一些细节问题
  KERNEL-14316 fix: 过一遍 Demo,把控制台报错,全部解决掉
es6
treecat-罗群 2 years ago
parent
commit
af9f1f3e64
  1. 14
      package.json
  2. 204
      packages/demo/src/case/combo/demo.text_value_combo.js
  3. 14
      packages/demo/src/demo/base/button/demo.button.js
  4. 1
      packages/demo/src/demo/widget/multiselect/demo.multi_select_combo.js
  5. 4
      packages/demo/src/demo/widget/multiselect/demo.multi_select_list.js
  6. 6
      packages/demo/src/demo/widget/singleselct/demo.single_select_combo.js
  7. 52
      packages/fineui/lessconfig/bi.lessconfig.json
  8. 21
      packages/fineui/lessconfig/jsy.lessconfig.json
  9. 1
      packages/fineui/lodash.md
  10. 13
      packages/fineui/package.json
  11. 7
      packages/fineui/src/base/combination/bubble.js
  12. 13
      packages/fineui/src/bundle.js
  13. 3
      packages/fineui/src/case/ztree/parttree.js
  14. 3
      packages/fineui/src/core/controller/controller.bubbles.js
  15. 3
      packages/fineui/src/core/controller/controller.resizer.js
  16. 2012
      packages/fineui/src/core/controller/popper.js
  17. 4
      packages/fineui/src/core/platform/web/index.js
  18. 6
      packages/fineui/src/index.js
  19. 9
      packages/fineui/src/widget/multiselect/loader.js
  20. 82
      packages/fineui/webpack.prod.js

14
package.json

@ -7,27 +7,35 @@
"license": "ISC",
"scripts": {
"dev": "npm-run-all --parallel dev:*",
"dev:demo": "cd packages/demo && npm run dev",
"dev:fineui": "cd packages/fineui && npm run dev",
"static": "node script/code.static.js"
"dev:demo": "pnpm --dir packages/demo dev",
"dev:fineui": "pnpm --dir packages/fineui dev",
"build": "pnpm --dir packages/fineui build"
},
"devDependencies": {
"@babel/cli": "^7.21.0",
"@babel/core": "^7.21.0",
"@babel/runtime": "^7.21.0",
"@fui/babel-preset-fineui": "^3.0.1",
"autoprefixer": "^10.4.14",
"babel-loader": "^9.1.2",
"babel-plugin-module-resolver": "^5.0.0",
"css-loader": "^6.7.3",
"fork-ts-checker-webpack-plugin": "^8.0.0",
"html-webpack-plugin": "^5.5.0",
"less": "^4.1.3",
"less-loader": "^11.1.0",
"mini-css-extract-plugin": "^2.7.5",
"npm-run-all": "^4.1.5",
"optimize-css-assets-webpack-plugin": "^6.0.1",
"postcss": "^8.4.21",
"style-loader": "^3.3.1",
"terser-webpack-plugin": "^5.3.7",
"typescript": "^4.9.5",
"uglifyjs-webpack-plugin": "^2.2.0",
"webpack": "^5.75.0",
"webpack-bundle-analyzer": "^4.8.0",
"webpack-cli": "^5.0.1",
"circular-dependency-plugin": "^5.2.2",
"webpack-dev-server": "^4.11.1"
}
}

204
packages/demo/src/case/combo/demo.text_value_combo.js

@ -1,93 +1,90 @@
/**
* Created by Dailer on 2017/7/11.
*/
Demo.TextValueCombo = BI.inherit(BI.Widget, {
props: {
baseCls: ""
},
render: function () {
var combo1, combo2;
import { shortcut, Widget, Label, VerticalLayout, TextValueCombo, Button, Selection } from "@fui/core";
@shortcut()
export class TextValueCombo extends Widget {
static xtype = "demo.text_value_combo";
props = {
baseCls: "",
};
render() {
let combo1, combo2;
var items = [
const items = [
{
text: "MVC-1",
iconCls: "date-font",
value: 1
}, {
value: 1,
},
{
text: "MVC-2",
iconCls: "search-font",
value: 2
}, {
value: 2,
},
{
text: "MVC-3",
iconCls: "pull-right-font",
value: 3
}
value: 3,
},
];
// 创建下拉框各种场景用例
return {
type: "bi.vertical",
type: VerticalLayout.xtype,
vgap: 20,
hgap: 20,
items: [
this.createCombo("无初始值,带提示文字", {
type: "bi.text_value_combo",
ref: (ref) => {
this.combo1 = ref;
type: TextValueCombo.xtype,
ref() {
combo1 = ref;
},
defaultText: "请选择",
width: 300,
items: items,
listeners: [
{
eventName: BI.TextValueCombo.EVENT_CHANGE,
eventName: TextValueCombo.EVENT_CHANGE,
action: function () {
console.log(this.getValue());
}
}
]
},
},
],
}),
this.createCombo("自动根据value匹配text", {
type: "bi.text_value_combo",
ref: function () {
combo = this;
},
type: TextValueCombo.xtype,
defaultText: "请选择",
width: 300,
value: 1,
items: items,
listeners: [
{
eventName: BI.TextValueCombo.EVENT_CHANGE,
eventName: TextValueCombo.EVENT_CHANGE,
action: function () {
console.log(this.getValue());
}
}
]
},
},
],
}),
this.createCombo("无初始值,可以清空", {
type: "bi.text_value_combo",
ref: function () {
combo = this;
},
type: TextValueCombo.xtype,
defaultText: "请选择",
width: 300,
items: items,
allowClear: true,
listeners: [
{
eventName: BI.TextValueCombo.EVENT_CHANGE,
action: function () {
eventName: TextValueCombo.EVENT_CHANGE,
action() {
console.log(this.getValue());
}
}
]
},
},
],
}),
this.createCombo("有初始值,可以清空", {
type: "bi.text_value_combo",
ref: function () {
combo = this;
},
type: TextValueCombo.xtype,
defaultText: "请选择",
width: 300,
value: 1,
@ -95,17 +92,17 @@ Demo.TextValueCombo = BI.inherit(BI.Widget, {
allowClear: true,
listeners: [
{
eventName: BI.TextValueCombo.EVENT_CHANGE,
eventName: TextValueCombo.EVENT_CHANGE,
action: function () {
console.log(this.getValue());
}
}
]
},
},
],
}),
this.createCombo("有初始值,value不匹配,自动标红,指定标红文字", {
type: "bi.text_value_combo",
ref: function () {
combo = this;
type: TextValueCombo.xtype,
ref() {
self.combo = this;
},
width: 300,
text: "MVC-111",
@ -116,19 +113,19 @@ Demo.TextValueCombo = BI.inherit(BI.Widget, {
warningTitle: "value值不合法",
listeners: [
{
eventName: BI.TextValueCombo.EVENT_CHANGE,
eventName: TextValueCombo.EVENT_CHANGE,
action: function () {
console.log(this.getValue());
}
}
]
},
},
],
}),
this.createCombo("无初始值,外部受控调用setValue", {
type: "bi.vertical",
type: VerticalLayout.xtype,
items: [
{
type: "bi.text_value_combo",
ref: function () {
type: TextValueCombo.xtype,
ref() {
combo1 = this;
},
width: 300,
@ -137,29 +134,30 @@ Demo.TextValueCombo = BI.inherit(BI.Widget, {
defaultText: "请选择",
listeners: [
{
eventName: BI.TextValueCombo.EVENT_CHANGE,
eventName: TextValueCombo.EVENT_CHANGE,
action: function () {
console.log(this.getValue());
}
}
]
}, {
},
},
],
},
{
el: {
type: "bi.button",
type: Button.xtype,
text: "setValue(1)",
handler: function () {
combo1.setValue(1);
},
},
vgap: 10,
}
]
},
],
}),
this.createCombo("无初始值,外部受控调用setStatus", {
type: "bi.vertical",
items: [
{
type: "bi.text_value_combo",
type: TextValueCombo.xtype,
ref: function () {
combo2 = this;
},
@ -169,92 +167,92 @@ Demo.TextValueCombo = BI.inherit(BI.Widget, {
defaultText: "请选择",
listeners: [
{
eventName: BI.TextValueCombo.EVENT_CHANGE,
eventName: TextValueCombo.EVENT_CHANGE,
action: function () {
console.log(this.getValue());
}
}
]
}, {
},
},
],
},
{
el: {
type: "bi.button",
type: Button.xtype,
text: "setStatus()",
handler: function () {
combo2.setStatus("error");
},
},
vgap: 10,
}
]
},
],
}),
this.createCombo("支持复选", {
type: "bi.vertical",
type: VerticalLayout.xtype,
items: [
{
type: "bi.text_value_combo",
type: TextValueCombo.xtype,
width: 300,
items: items,
allowClear: true,
defaultText: "请选择",
chooseType: BI.Selection.Multi,
chooseType: Selection.Multi,
value: [1],
// allowSelectAll: false,
listeners: [
{
eventName: BI.TextValueCombo.EVENT_CHANGE,
eventName: TextValueCombo.EVENT_CHANGE,
action: function () {
console.log(this.getValue());
}
}
]
}
]
},
},
],
},
],
}),
this.createCombo("支持复选,不要全选功能", {
type: "bi.vertical",
type: VerticalLayout.xtype,
items: [
{
type: "bi.text_value_combo",
type: TextValueCombo.xtype,
width: 300,
items: items,
allowClear: true,
defaultText: "请选择",
chooseType: BI.Selection.Multi,
chooseType: Selection.Multi,
value: [1],
allowSelectAll: false,
listeners: [
{
eventName: BI.TextValueCombo.EVENT_CHANGE,
eventName: TextValueCombo.EVENT_CHANGE,
action: function () {
console.log(this.getValue());
}
}
]
}
]
})
]
};
},
},
],
},
],
}),
],
};
}
createCombo: function (text, combo) {
createCombo(text, combo) {
return {
type: "bi.vertical",
type: VerticalLayout.xtype,
items: [
{
el: {
type: "bi.label",
type: Label.xtype,
textAlign: "left",
text,
},
bgap: 10
}, {
bgap: 10,
},
{
el: combo,
bgap: 10,
},
]
],
};
}
});
BI.shortcut("demo.text_value_combo", Demo.TextValueCombo);
}

14
packages/demo/src/demo/base/button/demo.button.js

@ -403,20 +403,6 @@ export class ButtonDemo extends Widget {
console.log("我是无法被触发的!");
},
},
{
type: Button.xtype,
text: "自定义图标按钮(点我修改)",
icon: {
type: "demo.joker.icon",
},
handler() {
console.log("触发点击事件");
this.loading();
setTimeout(() => {
this.loaded();
}, 5 * 1000);
},
},
{
type: Button.xtype,
text: "文字偏左的按钮",

1
packages/demo/src/demo/widget/multiselect/demo.multi_select_combo.js

@ -17,6 +17,7 @@ import {
@shortcut()
export class MultiSelectComboDemo extends Widget {
static xtype = "demo.multi_select_combo";
static EVENT_CONFIRM = "EVENT_CONFIRM";
props = { baseCls: "demo-multi-select-combo" };

4
packages/demo/src/demo/widget/multiselect/demo.multi_select_list.js

@ -76,8 +76,8 @@ export class MultiSelectListDemo extends Widget {
});
if (options.selectedValues) {
// 过滤
const filter = makeObject(options.selectedValues, true);
items = filter(items, (i, ob) => !filter[ob.value]);
const filterItems = makeObject(options.selectedValues, true);
items = filter(items, (i, ob) => !filterItems[ob.value]);
}
if (options.type == MultiSelectCombo.REQ_GET_ALL_DATA) {
callback({

6
packages/demo/src/demo/widget/singleselct/demo.single_select_combo.js

@ -1,6 +1,6 @@
import { CONSTANTS } from "@/config/constant";
import { SingleSelectCombo, AbsoluteLayout, Button, shortcut, Widget, Func, createWidget, bind, each, makeObject } from "@fui/core"
import { SingleSelectCombo, AbsoluteLayout, Button, shortcut, Widget, Func, createWidget, bind, each, makeObject, filter, delay } from "@fui/core"
@shortcut()
@ -56,8 +56,8 @@ export class SingleSelectComboDemo extends Widget {
});
if (options.selectedValues) {
// 过滤
const filter = makeObject(options.selectedValues, true);
items = filter(items, (i, ob) => !filter[ob.value]);
const filterItems = makeObject(options.selectedValues, true);
items = filter(items, (i, ob) => !filterItems[ob.value]);
}
if (options.type == SingleSelectCombo.REQ_GET_ALL_DATA) {
callback({

52
packages/fineui/lessconfig/bi.lessconfig.json

@ -0,0 +1,52 @@
{
"@color-primary": "#2C60DB",
"@color-green-100": "#3FC47B",
"@color-light-blue-100": "#19B8EA",
"@color-orange-100": "#FAAA39",
"@color-red-100": "#E65251",
"@color-black": "#091E40",
"@color-light-gray": "#ECEEF3",
"@color-light-gray-theme-dark": "#292F45",
"@border-color-line": "rgba(9, 30, 64, 0.15)",
"@border-color-light-line": "#E6E9EF",
"@border-color-dark-line": "#2E3A4D",
"@color-sliver-theme-dark": "#363E55",
"@border-color-disabled": "rgba(9, 30, 64, 0.07)",
"@font-color-normal": "#091E40",
"@font-color-gray": "rgba(9, 30, 64, 0.9)",
"@font-color-light-gray": "rgba(9, 30, 64, 0.66)",
"@font-color-tips": "rgba(9, 30, 64, 0.47)",
"@font-color-disabled": "rgba(9, 30, 64, 0.25)",
"@background-color-normal": "#F8F9FC",
"@color-bi-background-active-radio": "transparent",
"@color-bi-border-radio": "rgba(9, 30, 64, 0.37)",
"@color-bi-border-disabled-radio": "rgba(9, 30, 64, 0.19)",
"@color-bi-background-active-radio-content": "#2C60DB",
"@color-bi-border-checkbox-theme-dark": "rgba(255, 255, 255, 0.37)",
"@color-bi-border-hover-active-radio-theme-dark": "#3869DC",
"@color-bi-background-active-radio-content-theme-dark": "#3869DC",
"@color-bi-background-disabled-active-radio-content": "#FFFFFF",
"@color-bi-background-disabled-active-radio-content-theme-dark": "#606479",
"@color-bi-background-disabled-active-checkbox-content": "#FFFFFF",
"@color-bi-background-disabled-active-checkbox-content-theme-dark": "#606479",
"@color-bi-background-tooltip-success": "#3F506A",
"@color-bi-background-tooltip-failure": "#E65251",
"@color-bi-border-tooltip-success": "#2E3A4D",
"@color-bi-background-toast-success": "#FFFFFF",
"@color-bi-background-toast-warning": "#FFFFFF",
"@color-bi-background-toast-error": "#FFFFFF",
"@color-bi-background-toast-normal": "#FFFFFF",
"@color-bi-color-toast-success": "#3FC47B",
"@color-bi-color-toast-warning": "#FAAA39",
"@color-bi-color-toast-error": "#E65251",
"@color-bi-color-toast-normal": "#2C60DB",
"@color-bi-color-toast-text": "#000A19",
"@color-bi-text-header-background": "rgba(9, 30, 64, 0.9)",
"@color-bi-text-header-background-theme-dark": "rgba(255, 255, 255, 0.9)",
"@font-date": "e733",
"@font-trigger-triangle": "e924",
"@font-solid-bottom": "e905",
"@font-solid-right": "e906",
"@font-dot": "e762",
"@font-down-triangle": "e70b"
}

21
packages/fineui/lessconfig/jsy.lessconfig.json

@ -0,0 +1,21 @@
{
"@background-color-card-primary": "#003D4D",
"@color-primary": "#00acbe",
"font-color-normal": "#0d1540",
"font-color-light-gray": "#0d1540",
"font-color-disabled": "fade(#0d1540, 40)",
"font-color-light-disabled": "fade(#0d1540, 20)",
"font-color-success": "#28b668",
"font-color-negative": "#e65251",
"font-color-warning": "#faaa39",
"font-color-tips": "fade(#0d1540, 40)",
"background-color-light-disabled": "fade(#0d1540, 5)",
"background-color-dark-success": "#28b668",
"background-color-negative": "#e65251",
"background-color-warning": "#faaa39",
"border-color-disabled": "#e8eaed",
"border-color-success": "#28b668",
"border-color-negative": "#e65251"
}

1
packages/fineui/lodash.md

@ -0,0 +1 @@
lodash core plus="debounce,throttle,get,set,findIndex,findLastIndex,findKey,findLastKey,isArrayLike,invert,invertBy,uniq,uniqBy,omit,omitBy,zip,unzip,rest,range,random,reject,intersection,drop,countBy,union,zipObject,initial,cloneDeep,clamp,isPlainObject,take,takeRight,without,difference,defaultsDeep,trim,merge,groupBy,uniqBy,before,after,unescape,chunk,pick,pickBy,identity"

13
packages/fineui/package.json

@ -5,18 +5,21 @@
"main": "dist/fineui_without_conflict.min.js",
"module": "dist/es/index.js",
"types": "dist/type/index.d.ts",
"bin": {
"fui-cli": "./bin/cli/cli.js"
},
"sideEffects": [
"src/**/*.js",
"dist/es/core/*.js",
"dist/es/polyfill/**/*.js",
"dist/es/core/element/**/*.js",
"dist/es/core/platform/**/*.js",
"dist/es/polyfill/**/*.js",
"dist/es/case/ztree/jquery.ztree.core-3.5.js",
"dist/es/case/ztree/jquery.ztree.excheck-3.5.js"
],
"bin": {
"fui-cli": "./bin/cli/cli.js"
},
"scripts": {
"dev": "babel src -d dist/es --config-file ./esm.babel.js -w"
"dev": "babel src -d dist/es --config-file ./esm.babel.js -w",
"build": "webpack --config=webpack.prod.js"
},
"repository": {
"type": "git",

7
packages/fineui/src/base/combination/bubble.js

@ -19,8 +19,9 @@ import {
emptyFn,
LogicFactory,
EVENT_RESPONSE_TIME,
EVENT_BLUR
EVENT_BLUR,
} from "@/core";
import { createPopper } from "@popperjs/core";
@shortcut()
export class Bubble extends Widget {
@ -427,7 +428,7 @@ export class Bubble extends Widget {
options: {
offset: () => [adjustXOffset, (showArrow ? 12 : 0) + (adjustYOffset + adjustLength)],
},
}
},
];
if (this.options.showArrow) {
modifiers.push({
@ -438,7 +439,7 @@ export class Bubble extends Widget {
},
});
}
this.popper = BI.Popper.createPopper(this.combo.element[0], this.popupView.element[0], {
this.popper = createPopper(this.combo.element[0], this.popupView.element[0], {
placement,
strategy: "fixed",
modifiers,

13
packages/fineui/src/bundle.js

@ -1,4 +1,4 @@
import * as fineui from "./index";
import * as fuiExport from "./index";
import { shortcut, provider } from "@/core/5.inject";
import { _global } from "@/core/0.foundation";
import * as Decorators from "@/core/decorator";
@ -6,9 +6,10 @@ import * as Decorators from "@/core/decorator";
_global.BI = _global.BI || {};
_global.BI.Decorators = Decorators;
_global.Fix = fineui.Fix;
_global._ = fineui._;
Object.assign(_global, {
Fix: fuiExport.Fix,
_: fuiExport._,
$: fuiExport.$,
});
_global.$ = fineui.$;
Object.assign(_global.BI, fineui, { shortcut, provider });
Object.assign(_global.BI, fuiExport, { shortcut, provider });

3
packages/fineui/src/case/ztree/parttree.js

@ -65,7 +65,8 @@ export class PartTree extends Asynctree {
}),
function (res) {
self.options.paras.selectedValues = res;
this.seMethos(...args);
// 看起来应该是 self
self.seMethos(...args);
}
);
} else {

3
packages/fineui/src/core/controller/controller.bubbles.js

@ -7,6 +7,7 @@
import { Controller } from "./0.controller";
import { isNotNull, each } from "../2.base";
import { createWidget } from "../5.inject";
import { createPopper } from "@popperjs/core";
export class BubblesController extends Controller {
init() {
@ -57,7 +58,7 @@ export class BubblesController extends Controller {
if (this.storePoppers[name]) {
this.storePoppers[name].destroy();
}
this.storePoppers[name] = BI.Popper.createPopper(context.element[0], bubble.element[0], {
this.storePoppers[name] = createPopper(context.element[0], bubble.element[0], {
placement: ({
left: "top-start",
center: "top",

3
packages/fineui/src/core/controller/controller.resizer.js

@ -7,6 +7,7 @@ import { Controller } from "./0.controller";
import { isNull, each, debounce, isNotNull, isFunction } from "../2.base";
import { Widget } from "../4.widget";
import { _global } from "../0.foundation";
import { Layout } from "../wrapper/layout";
import $ from "jquery";
export class ResizeController extends Controller {
@ -32,7 +33,7 @@ export class ResizeController extends Controller {
return;
}
if (resizer instanceof BI.Layout) {
if (resizer instanceof Layout) {
resizer.resize();
return;

2012
packages/fineui/src/core/controller/popper.js

File diff suppressed because it is too large Load Diff

4
packages/fineui/src/core/platform/web/index.js

@ -2,5 +2,5 @@ export * from "./detectElementResize";
export * from "./function";
export * from "./load";
import "./jquery/index";
import "./config";

6
packages/fineui/src/index.js

@ -1,7 +1,11 @@
// sideEffects
import "./polyfill";
import "./core/platform/web/jquery";
import "./core/system";
import "./core/element";
import "./core/platform";
import "./core/platform/web/jquery"
// 必须要等上面的准备好, 才初始化 config
import "./core/platform/web/config";
import _jquery from "jquery";

9
packages/fineui/src/widget/multiselect/loader.js

@ -16,7 +16,8 @@ import {
isFunction,
makeObject,
isArray,
each
each,
Element
} from "@/core";
@shortcut()
@ -117,7 +118,7 @@ export class MultiSelectInnerLoader extends Widget {
});
const renderEngine = Widget._renderEngine;
Widget.registerRenderEngine(BI.Element.renderEngine);
Widget.registerRenderEngine(Element.renderEngine);
this.cachGroup = createWidget(o.el, {
type: ButtonGroup.xtype,
root: true,
@ -192,7 +193,7 @@ export class MultiSelectInnerLoader extends Widget {
}
}
const renderEngine = Widget._renderEngine;
Widget.registerRenderEngine(BI.Element.renderEngine);
Widget.registerRenderEngine(Element.renderEngine);
this.cachGroup.addItems(...arguments);
Widget.registerRenderEngine(renderEngine);
this.button_group.addItems(...arguments);
@ -238,7 +239,7 @@ export class MultiSelectInnerLoader extends Widget {
this.cachItems = items.slice(firstItemsCount);
}
const renderEngine = Widget._renderEngine;
Widget.registerRenderEngine(BI.Element.renderEngine);
Widget.registerRenderEngine(Element.renderEngine);
this.cachGroup.populate.call(this.cachGroup, items, keyword);
Widget.registerRenderEngine(renderEngine);
this.button_group.populate.call(this.button_group, items.slice(0, firstItemsCount), keyword);

82
packages/fineui/webpack.prod.js

@ -1,21 +1,43 @@
const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
const webpack = require("webpack");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const TerserPlugin = require("terser-webpack-plugin");
const path = require("path");
const autoprefixer = require("autoprefixer");
const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
const CircularDependencyPlugin = require("circular-dependency-plugin");
const childProcess = require("child_process");
function git(command) {
return childProcess.execSync(`git ${command}`).toString().trim();
}
let lessVariables = {};
if (process.env.LESS_CONFIG_PATH) {
const lessConfigPath = path.isAbsolute(process.env.LESS_CONFIG_PATH)
? process.env.LESS_CONFIG_PATH
: path.resolve(__dirname, "lessconfig", process.env.LESS_CONFIG_PATH);
lessVariables = fs.existsSync(lessConfigPath) ? require(lessConfigPath) || {} : {};
}
module.exports = {
mode: 'production',
entry: './src/index.js',
devServer: {
port: 3000,
liveReload: true,
mode: "production",
entry: {
"fineui.min": "./src/bundle.js",
},
output: {
path: path.resolve(__dirname, "dist"),
filename: "[name].js",
},
devtool: 'hidden-source-map',
devtool: "hidden-source-map",
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
loader: "babel-loader",
},
},
{
@ -23,19 +45,19 @@ module.exports = {
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
loader: "css-loader",
options: {
url: false,
},
},
{
loader: 'postcss-loader',
loader: "postcss-loader",
options: {
plugins: [autoprefixer],
},
},
{
loader: 'less-loader',
loader: "less-loader",
options: {
relativeUrls: false,
modifyVars: lessVariables,
@ -46,32 +68,24 @@ module.exports = {
],
},
resolve: {
extensions: ['.js', '.ts'],
extensions: [".js", ".ts"],
alias: {
'@': path.resolve(__dirname, '../src'),
"@": path.resolve(__dirname, "src"),
},
},
plugins: [
new MiniCssExtractPlugin({
path: dirs.DEST,
filename: '[name].css',
plugins: [new CircularDependencyPlugin()],
optimization: {
usedExports: false,
minimize: true,
minimizer: [
new TerserPlugin({
include: /\.js$/i,
}),
new ForkTsCheckerWebpackPlugin({}),
new OptimizeCssAssetsPlugin({
assetNameRegExp: /\.css$/g,
cssProcessor: require('cssnano'),
cssProcessorPluginOptions: {
preset: [
'default',
{
discardComments: {
removeAll: true,
},
normalizeUnicode: false,
},
],
},
canPrint: true,
new webpack.BannerPlugin({
banner: `time: ${new Date().toLocaleString()}; branch: ${git(
"name-rev --name-only HEAD"
)} commit: ${git("rev-parse HEAD")}`,
}),
],
},
};

Loading…
Cancel
Save