webpack/babel 转译删除对象键
webpack/babel transpilation removing object keys
我正在使用 webpack/babel 转译代码,但出于某种原因,第三方软件包删除了一些代码。
第三方代码在其源代码中定义了一个类似于以下内容的常量:
const NOUNS = {
people: {
a: [1, 2],
b: [3, 4],
},
places: {
a: [5, 6],
b: [7, 8],
},
};
该包的 babel 编译步骤使用 运行time-corejs3 最终输出以下内容:
import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
var NOUNS = {
people: (
_people = {},
/*#__PURE__*/_defineProperty(_people, 'a', [1, 2]),
/*#__PURE__*/_defineProperty(_people, 'b', [3, 4]),
_people
),
places: (
_places = {},
/*#__PURE__*/_defineProperty(_places, 'a', [5, 6]),
/*#__PURE__*/_defineProperty(_places, 'b', [7, 8]),
_places
),
};
鉴于 _defineProperty
导入似乎委派给 Object.defineProperty
。
,到目前为止情况看起来不错
然而,一旦我 运行 webpack 在我自己的项目上,生成的代码最终看起来更像下面这样:
pa = {
people: (zn = {},
'a',
1,
2,
'b',
3,
4,
zn),
places: (wn = {},
'a',
5,
6,
'b',
7,
8,
zn)
}
本质上,_defineProperty
调用已被视为空操作,因为它们现在已丢失,传递给这些调用的参数仅被视为不执行任何操作的单独命令。结果是对象是空的,我基本上是这样结束的:
var NOUNS = {
people: {},
places: {},
};
我不清楚我的 babel 转译是什么导致了这种情况发生。如果需要,很乐意分享更多详细信息。
我想我明白了。该软件包在其构建中包含 babel-plugin-annotate-pure-calls
,它可能需要排除。这就是添加 #__PURE__
评论的原因,这些评论又会在我的应用 webpack/babel 转译过程中被删除。
我正在使用 webpack/babel 转译代码,但出于某种原因,第三方软件包删除了一些代码。
第三方代码在其源代码中定义了一个类似于以下内容的常量:
const NOUNS = {
people: {
a: [1, 2],
b: [3, 4],
},
places: {
a: [5, 6],
b: [7, 8],
},
};
该包的 babel 编译步骤使用 运行time-corejs3 最终输出以下内容:
import _defineProperty from '@babel/runtime-corejs3/helpers/esm/defineProperty';
var NOUNS = {
people: (
_people = {},
/*#__PURE__*/_defineProperty(_people, 'a', [1, 2]),
/*#__PURE__*/_defineProperty(_people, 'b', [3, 4]),
_people
),
places: (
_places = {},
/*#__PURE__*/_defineProperty(_places, 'a', [5, 6]),
/*#__PURE__*/_defineProperty(_places, 'b', [7, 8]),
_places
),
};
鉴于 _defineProperty
导入似乎委派给 Object.defineProperty
。
然而,一旦我 运行 webpack 在我自己的项目上,生成的代码最终看起来更像下面这样:
pa = {
people: (zn = {},
'a',
1,
2,
'b',
3,
4,
zn),
places: (wn = {},
'a',
5,
6,
'b',
7,
8,
zn)
}
本质上,_defineProperty
调用已被视为空操作,因为它们现在已丢失,传递给这些调用的参数仅被视为不执行任何操作的单独命令。结果是对象是空的,我基本上是这样结束的:
var NOUNS = {
people: {},
places: {},
};
我不清楚我的 babel 转译是什么导致了这种情况发生。如果需要,很乐意分享更多详细信息。
我想我明白了。该软件包在其构建中包含 babel-plugin-annotate-pure-calls
,它可能需要排除。这就是添加 #__PURE__
评论的原因,这些评论又会在我的应用 webpack/babel 转译过程中被删除。