使用 microbundle 的基本实现不起作用
Basic implementation of using microbundle not working
请查看示例回购
https://github.com/inspiraller/webpack-and-microbundle
微捆绑码
mymicrobundle/src/index.js
import React from 'react'
const MyMicroBundle = ({session}) => {
return (
<div>Session = {session}</div>
)
}
export default MyMicroBundle
microbundle/package.json - 用于输出
{
...
"source": "src/index.js",
"main": "dist/index.umd.js",
"module": "dist/index.module.js",
"exports": "dist/index.modern.js",
"unpkg": "dist/index.umd.js"
}
正在导入 Microbundle 代码
webpack-loads-microbundle/package.json
{
"dependencies": {
"@mymicrobundle/example": "file:../mymicrobundle",
}
}
webpack-load-microbundle/src/index.tsx
import React, { useState } from 'react'
import ReactDOM from 'react-dom'
import MyMicroBundle from '@mymicrobundle/example'
import './index.scss'
const App = () => {
const [session, setSession] = useState('')
return (
<div>
<h1>Hello</h1>
</div>
)
}
ReactDOM.render(<App />, document.getElementById('root'))
注意:microbundle 包被捆绑为 javascript,但我正在使用 typescript 导入它。
虽然不应该有任何区别。我也在使用 pnpm 而不是 npm,但这应该没问题,因为所有其他导入都可以工作。
可能是我的路径有问题。
错误
Module not found: Error: Can't resolve '@mymicrobundle/example' in 'C:\baps\react_all\webpack-and-microbundle\webpack-loads-microbundle\src'
webpack 默认从 process.cwd()/node_modules
解析模块。
因此在您的情况下,它正在 webpack-and-microbundle
(当前工作目录)中寻找 @mymicrobundle/example
,这是您的应用程序目录。
你需要让 webpack
知道,除了你的项目的 node_modules
.
它需要搜索的地方
这可以使用 resolve.modules
键完成。请参阅文档:https://webpack.js.org/configuration/resolve/#resolvemodules
所以你的 webpack 配置应该是这样的:
resolve: {
modules: ['node_modules', 'path/to/@mymicrobundle/example'],
},
请查看示例回购 https://github.com/inspiraller/webpack-and-microbundle
微捆绑码
mymicrobundle/src/index.js
import React from 'react'
const MyMicroBundle = ({session}) => {
return (
<div>Session = {session}</div>
)
}
export default MyMicroBundle
microbundle/package.json - 用于输出
{
...
"source": "src/index.js",
"main": "dist/index.umd.js",
"module": "dist/index.module.js",
"exports": "dist/index.modern.js",
"unpkg": "dist/index.umd.js"
}
正在导入 Microbundle 代码
webpack-loads-microbundle/package.json
{
"dependencies": {
"@mymicrobundle/example": "file:../mymicrobundle",
}
}
webpack-load-microbundle/src/index.tsx
import React, { useState } from 'react'
import ReactDOM from 'react-dom'
import MyMicroBundle from '@mymicrobundle/example'
import './index.scss'
const App = () => {
const [session, setSession] = useState('')
return (
<div>
<h1>Hello</h1>
</div>
)
}
ReactDOM.render(<App />, document.getElementById('root'))
注意:microbundle 包被捆绑为 javascript,但我正在使用 typescript 导入它。 虽然不应该有任何区别。我也在使用 pnpm 而不是 npm,但这应该没问题,因为所有其他导入都可以工作。
可能是我的路径有问题。
错误
Module not found: Error: Can't resolve '@mymicrobundle/example' in 'C:\baps\react_all\webpack-and-microbundle\webpack-loads-microbundle\src'
webpack 默认从 process.cwd()/node_modules
解析模块。
因此在您的情况下,它正在 webpack-and-microbundle
(当前工作目录)中寻找 @mymicrobundle/example
,这是您的应用程序目录。
你需要让 webpack
知道,除了你的项目的 node_modules
.
这可以使用 resolve.modules
键完成。请参阅文档:https://webpack.js.org/configuration/resolve/#resolvemodules
所以你的 webpack 配置应该是这样的:
resolve: {
modules: ['node_modules', 'path/to/@mymicrobundle/example'],
},