gpt4 book ai didi

node.js - 强制 Browserify 转换依赖项?

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:02 26 4
gpt4 key购买 nike

我同时处理两个 Node 包,我们称它们为 Library 和 Consumer。库负责在浏览器中渲染一堆东西。所有 Consumer 所做的就是 import Library from 'library' 并调用 Library(someConfigHere) —— 它基本上只是一个测试,以确保 Library 在浏览器中执行我期望的操作。

我已经npm linked Library into Consumer 并试图在 Consumer 上运行 Browserify,但是我得到这个错误:ParseError: 'import' and 'export' may appear only with 'sourceType:模块'。 Library 确实包含 ES6 export 语句,所以我猜测 Browserify 仅针对 Consumer 而不是 Library 运行。

所以我的问题是:是否有任何方法可以强制 Browserify 也转换依赖关系

这是我的package.json:

{
"name": "consumer",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "budo index.js --port $PORT",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-preset-es2015": "^6.13.2",
"babel-preset-react": "^6.11.1",
"babelify": "^7.3.0",
"browserify-shim": "^3.8.12"
},
"browserify": {
"transform": [
"babelify"
]
},
"babel": {
"presets": [
"es2015",
"react"
]
}
}

这是消费者的index.js:

import Library from 'library'  // <= this is what isn't getting babelified

console.log(Library);

这是库的 index.js:

export default (config) => {
console.log('Testing testing')
}

最佳答案

Browserify 转换可以配置为全局转换,这意味着它们也将应用于 node_modules 中的文件。

配置是每次转换。使用 babelify,你可以像这样配置它:

browserify().transform("babelify", {
global: true
})

或者,如果您正在使用命令行,如下所示:

browserify ... -t [ babelify --global ] ...

或者,要在 package.json 中配置它,它应该是这样的(注意添加的方括号):

"browserify": {
"transform": [
["babelify", { "global": true }]
]
}

Babelify 还实现了一个 ignore 选项,因此可以将其配置为仅转换 node_modules 中您希望它转换的文件。还有更多信息here .

另一种解决方案是在您的 library 模块的 package.json 中包含类似的 browserify/babelify 配置.在处理依赖项时,Browserify 将检查所述依赖项的 pacakge.json 文件以进行转换,并将应用任何已配置的文件。

关于node.js - 强制 Browserify 转换依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41107756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com