Skip to content

Commit bfd2fe7

Browse files
committed
fix(babel-preset-ts-lib): 修复总是出现 @babel/plugin-proposal-private-methods loose 警告的缺陷
1 parent 2c76eec commit bfd2fe7

File tree

12 files changed

+990
-831
lines changed

12 files changed

+990
-831
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# 变更说明
22

3+
## v0.14.1 - 2021.8.5
4+
5+
- fix(babel-preset-ts-lib): 修复总是出现 @babel/plugin-proposal-private-methods loose 警告的缺陷
6+
37
## v0.14.0 - 2021.3.25
48

59
- feat: 支持新的 JSX 转换 ([#38](https://github.com/sinoui/ts-lib-scripts/issues/38))

examples/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"lint-staged": "^8.1.7",
2020
"react": "^16.8.6",
2121
"rimraf": "^2.6.3",
22-
"typescript": "^4.2.3"
22+
"typescript": "^4.3.5"
2323
},
2424
"prettier": {
2525
"printWidth": 80,

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121
"husky": "^4.2.5",
2222
"lerna": "^3.16.4",
2323
"lint-staged": "^8.1.7",
24-
"typescript": "^4.2.3",
25-
"typescript-plugin-css-modules": "^3.2.0"
24+
"typescript": "^4.3.5",
25+
"typescript-plugin-css-modules": "^3.4.0"
2626
},
2727
"eslintConfig": {
2828
"extends": "ts-lib",
@@ -49,7 +49,7 @@
4949
"test:coverage": "ts-lib-tools test --coverage",
5050
"build": "tsc --build packages/tsconfig.json",
5151
"clean": "yarn build --clean",
52-
"postinstall": "yarn build",
52+
"postinstall": "yarn-deduplicate yarn.lock && yarn build",
5353
"prepublishOnly": "yarn clean && yarn build"
5454
},
5555
"husky": {
@@ -71,5 +71,8 @@
7171
},
7272
"resolutions": {
7373
"serialize-javascript": "^2.1.1"
74+
},
75+
"dependencies": {
76+
"yarn-deduplicate": "^3.1.0"
7477
}
7578
}

packages/babel-preset-ts-lib/create.js

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@ module.exports = function create(_api, _opts, env) {
2525
// Set the corejs version we are using to avoid warnings in console
2626
// This will need to change once we upgrade to corejs@3
2727
corejs: 3,
28-
// Do not transform modules to CJS
29-
modules: false,
3028
// Exclude transforms that make all code slower
3129
exclude: ['transform-typeof-symbol'],
3230
targets: '> 0.25%, not dead, not op_mini all',
@@ -41,8 +39,6 @@ module.exports = function create(_api, _opts, env) {
4139
// Set the corejs version we are using to avoid warnings in console
4240
// This will need to change once we upgrade to corejs@3
4341
corejs: 3,
44-
// Do not transform modules to CJS
45-
modules: false,
4642
// Exclude transforms that make all code slower
4743
exclude: ['transform-typeof-symbol'],
4844
},
@@ -63,23 +59,42 @@ module.exports = function create(_api, _opts, env) {
6359
require('@babel/preset-typescript'),
6460
].filter(Boolean),
6561
plugins: [
62+
// 支持可选链操作符,规范见:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining
6663
require('@babel/plugin-proposal-optional-chaining'),
64+
// 支持空值合并运算符,规范见:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator
6765
require('@babel/plugin-proposal-nullish-coalescing-operator'),
66+
// 优化 styled-components 打包和开发体验
6867
!isEnvTest && require('babel-plugin-styled-components'),
68+
// babel 支持从 tsconfig.json 文件中读取`paths`,作为自定义的模块路径映射
6969
require('babel-plugin-module-resolver'),
70+
// 支持宏编程
7071
require('babel-plugin-macros'),
7172
require('babel-plugin-annotate-pure-calls'),
7273
require('babel-plugin-dev-expression'),
7374
[require('babel-plugin-transform-rename-import'), { replacements }],
7475
// 添加装饰器语法支持(typescript支持的语法)
7576
[require('@babel/plugin-proposal-decorators').default, false],
76-
// 添加类属性语法支持(typescript支持的语法)
77+
// 启用 loose 模式
7778
[
7879
require('@babel/plugin-proposal-class-properties').default,
7980
{
8081
loose: true,
8182
},
8283
],
84+
[
85+
require('@babel/plugin-proposal-private-methods').default,
86+
{
87+
loose: true,
88+
},
89+
],
90+
[
91+
require('@babel/plugin-proposal-private-property-in-object').default,
92+
{
93+
loose: true,
94+
},
95+
],
96+
// 支持数字分隔符,规范:https://github.com/tc39/proposal-numeric-separator
97+
require('@babel/plugin-proposal-numeric-separator').default,
8398
// 添加一些babel、async/await的helpers
8499
[
85100
require('@babel/plugin-transform-runtime').default,
@@ -88,6 +103,7 @@ module.exports = function create(_api, _opts, env) {
88103
helpers: true,
89104
regenerator: true,
90105
useESModules: false,
106+
version: require('@babel/runtime/package.json').version,
91107
},
92108
],
93109
// 添加import()语法支持

packages/babel-preset-ts-lib/package.json

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,33 @@
1212
"type": "git",
1313
"url": "git+https://github.com/sinoui/ts-lib-scripts.git"
1414
},
15+
"scripts": {
16+
"test": "node ../ts-lib-tools/dist/index.js test"
17+
},
1518
"dependencies": {
16-
"@babel/core": "^7.13.10",
17-
"@babel/plugin-proposal-class-properties": "^7.13.0",
18-
"@babel/plugin-proposal-decorators": "^7.13.5",
19-
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
20-
"@babel/plugin-proposal-object-rest-spread": "^7.13.8",
21-
"@babel/plugin-proposal-optional-chaining": "^7.13.12",
19+
"@babel/core": "^7.15.0",
20+
"@babel/plugin-proposal-class-properties": "^7.14.5",
21+
"@babel/plugin-proposal-decorators": "^7.14.5",
22+
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
23+
"@babel/plugin-proposal-numeric-separator": "^7.14.5",
24+
"@babel/plugin-proposal-object-rest-spread": "^7.14.7",
25+
"@babel/plugin-proposal-optional-chaining": "^7.14.5",
26+
"@babel/plugin-proposal-private-methods": "^7.14.5",
27+
"@babel/plugin-proposal-private-property-in-object": "^7.14.5",
2228
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
23-
"@babel/plugin-transform-runtime": "^7.13.10",
29+
"@babel/plugin-transform-runtime": "^7.15.0",
2430
"@babel/polyfill": "^7.12.1",
25-
"@babel/preset-env": "^7.13.12",
26-
"@babel/preset-react": "^7.12.13",
27-
"@babel/preset-typescript": "^7.13.0",
28-
"@babel/runtime": "^7.13.10",
29-
"@types/babel__core": "^7.1.14",
31+
"@babel/preset-env": "^7.15.0",
32+
"@babel/preset-react": "^7.14.5",
33+
"@babel/preset-typescript": "^7.15.0",
34+
"@babel/runtime": "^7.14.8",
35+
"@types/babel__core": "^7.1.15",
3036
"babel-plugin-annotate-pure-calls": "^0.4.0",
3137
"babel-plugin-dev-expression": "^0.2.2",
3238
"babel-plugin-dynamic-import-node": "^2.3.3",
33-
"babel-plugin-macros": "^3.0.1",
39+
"babel-plugin-macros": "^3.1.0",
3440
"babel-plugin-module-resolver": "^4.1.0",
35-
"babel-plugin-styled-components": "^1.12.0",
41+
"babel-plugin-styled-components": "^1.13.2",
3642
"babel-plugin-transform-rename-import": "^2.3.0"
3743
},
3844
"gitHead": "a0ec9d27b2f24cb228993286530f89957d055b9b"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { transform, TransformOptions } from '@babel/core';
2+
import tsLibBabelPreset from '../index';
3+
4+
const transformOptions: TransformOptions = {
5+
presets: [[tsLibBabelPreset]],
6+
filename: 'test.ts',
7+
};
8+
9+
/**
10+
* 编译源码
11+
* @param source 源码
12+
*/
13+
export default function buildSource(source: string) {
14+
const babelFileResult = transform(source, transformOptions);
15+
return babelFileResult.code;
16+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import buildSource from './build-source';
2+
3+
const expected1 = `"use strict";
4+
5+
var _interopRequireDefault = /*#__PURE__*/require("@babel/runtime/helpers/interopRequireDefault").default;
6+
7+
var _core = /*#__PURE__*/_interopRequireDefault( /*#__PURE__*/require("@babel/core"));
8+
9+
console.log(_core.default);`;
10+
11+
const expected2 = `"use strict";
12+
13+
Object.defineProperty(exports, "__esModule", {
14+
value: true
15+
});
16+
console.log('123');`;
17+
18+
it('import编译为require().default', () => {
19+
const source = `import babel from '@babel/core';\nconsole.log(babel);`;
20+
21+
const actual = buildSource(source);
22+
23+
expect(actual).toBe(expected1);
24+
});
25+
26+
it('忽略 import type', () => {
27+
const source = `import type { TransformOptions } from '@babel/core';console.log('123');`;
28+
29+
const actual = buildSource(source);
30+
31+
expect(actual).toBe(expected2);
32+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import buildSource from './build-source';
2+
3+
it('编译数字分隔符', () => {
4+
const source = `const num = 123_123_123;`;
5+
const expected = `"use strict";\n\nconst num = 123123123;`;
6+
7+
const result = buildSource(source);
8+
9+
expect(result).toBe(expected);
10+
});
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"compilerOptions": {
3+
"allowJs": true,
4+
"esModuleInterop": true,
5+
"allowSyntheticDefaultImports": true
6+
},
7+
"include": ["src"]
8+
}

packages/eslint-config-ts-lib/rules/import-rules.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const importRules = {
2424
'stories/**/*',
2525
'docs/**/*',
2626
'scripts/**/*',
27+
'docusaurus/**/*',
2728
],
2829
},
2930
],

0 commit comments

Comments
 (0)