[英]Can I import everything from a javascript library with parcelJS?
[英]Import from a ParcelJS bundle
上下文:
我创建了一个带有索引资源的库,如下所示:
import {X} from '...'
import {Y} from '...'
import {Z} from '...'
export {X, Y, Z}
可以看出,这个文件收集了库的所有公共资源,并根据 ES6 模块标准将它们公开为可访问的入口点。 当我使用 ParcelJs 从索引文件创建一个名为my-library.js
的包时,一切正常。
问题:
现在,我想从浏览器中使用库,因此我使用以下脚本创建了 index.html(请注意,此代码不是我的项目的一部分,也不是我想要包含在包中的兴趣。它仅用作时间测试):
<script type="module">
import {X} from './my-library.js'
console.log (X)
</script>
结果,控制台发出以下错误消息:
Uncaught SyntaxError: The requested module './my-library.js' does
not provide an export named 'X'
问题是什么? ParcelJS 可以用于根据 ES6 规范捆绑一个库,以便在使用来自外部脚本的导入语句时被调用吗?
截至今天(2020 年 8 月),此功能仅在 Parcel2 中提供测试版。 以下是您如何获得您想要的工作:
npm i -g parcel@next
npm i @babel/core --save-dev
package.json
添加以下配置: "main": "dist/legacy/index.js",
"module": "dist/modern/index.js",
"targets": {
"module": {
"engines": {
"browsers": [
"last 1 Chrome version"
]
}
},
"main": {
"engines": {
"browsers": [
"> 0.25%"
]
}
}
},
parcel build index.js
dist/legacy/index.js
下的 bundle 使用 CommonJS,而dist/modern/index.js
下的 bundle 使用 ESM 语法。
注意:将 JS 包捆绑到多个目标的另一种选择是Microbundle 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.