我上周打开了以下问题,但似乎没有人知道答案:
我真的不明白webpack
/ babel-loader
中node_modules
中转换依赖关系的当前状态,有人可以澄清一下吗?我试图坚持到处开设的每一个问题。
webpack
/ babel-loader
是否正在转发jsnext:main
文件?webpack
位于排除密钥中,babel-loader
中的jsnext:main
/ node_modules
个node_modules
文件是否正在转发?我的情况:
rules: [{
test: /\.(js|mjs)$/i,
exclude: [/node_modules/],
use: [{
loader: 'babel-loader', //settings specified in package.json
},{
loader: 'eslint-loader', //settings specified in package.json
}
}]
在我的依赖项package.json
中,我尝试过:
"main": "index.js", <= not working (not transpiled)
"jsnext:main": "index.js", <= not working (not transpiled)
"module": "index.js", <= not working (not transpiled)
两者都没有删除exclude: [/node_modules/],
,但由于编译时间无限,因此无法在任何中型到大型项目中使用。
但是:为什么https://github.com/lodash/lodash/blob/es/package.json与https://github.com/damianobarbati/react-create-app/blob/master/package.json有什么不同?
lodash-es
即使在node_modules中也被编译(并被排除在外),但我的react-create-app
不是:HELP!
答案 0 :(得分:3)
当您从规则中排除babel-loader
时,node_modules
不会在node_modules
中发送任何内容。 jsnext:main
或module
等字段与加载程序/规则无关。导入包时,webpack根据resolve.mainFields
决定应该使用哪个文件,然后检查它应该应用于该文件的规则。通常这些文件已被转换,但它们包含ES模块(参见Rollup - pkg.module
)。
如果您想要转换任何具有module
或jsnext:main
字段的模块,您可以使用Jason Miller developit/transpile-esnext-modules.js中的规则来确定是否应该包含该模块( include
和exclude
也接受一项功能。)