javascript - 使用 Browserify 编译 NPM 包
问题描述
我需要在非节点应用程序中使用 NPM 包 ( fit-file-parser ) 的功能。到目前为止,我已经尝试过
- 拉下包,构建它,并将输出包作为脚本标签包含在内。这里的问题是构建的包
dist/
包含 4 个文件,每个文件都通过require()
. 大多数情况下,它们相互依赖,所以我想我可以按正确的顺序包含它们,但一个依赖于buffer
.
binary.js
fit-parser.js
fit.js
messages.js
- 通过 Browserify运行
dist/
目录以生成package.bundle.js
文件并将其包含为脚本标记。这似乎运行没有错误,但我需要实例化我需要的逻辑的主要功能不存在于浏览器中。实际上,包含捆绑文件后,直接运行文件时出现的所有全局变量都不存在。
browserify fit-parser.js -o fit-parser.bundle.js
要使用这个包,需要能够实例化一个新的FitParser
using new FitParser({...options})
。该功能来自fit-parser
文件,但我似乎无法将其放入浏览器的全局范围内。
解决方案
NPM 包通常是模块,因此它们通常不会影响全局。
通常你会做类似 ->
const FitParser = require("fit-parser");
或者
import {FitParser} from "fit-parser"
现代浏览器现在支持第二个选项,因此理论上您可以使用该选项而不使用 browserfy。
但是如果你想用老式的方式,用一个全局的。这就是--standalone {exportname}
选项的用途。 {exportname}
一直是你想在全球范围内称呼它的东西。基本上它是一种window.FitParser = FitParser
在脚本内部做的事情。
推荐阅读
- ios - 设置 > iCloud > 管理存储应用信息
- highcharts - Highcharts 导出服务器不服务两个并行请求
- c++ - 超过时限
- java - 我正在尝试使用不同类中的方法,但它会产生错误
- unix - Unix将所有文件从主目录移动到另一个文件夹
- python - 气流:ExternalTaskSensor 无法按预期工作。不同的任务计划
- node.js - 挂钩 assert.* 函数
- rust - 产生数量合理的 Tokio 任务
- flutter - Flutter GeoLocator PermissionRequestInProgressException
- security - 如何使用实例给出的相同 access_token 在画布 lms 中保护我的 lti 工具?