首页 > 解决方案 > 使用 Browserify 编译 NPM 包

问题描述

我需要在非节点应用程序中使用 NPM 包 ( fit-file-parser ) 的功能。到目前为止,我已经尝试过

  1. 拉下包,构建它,并将输出包作为脚本标签包含在内。这里的问题是构建的包dist/包含 4 个文件,每个文件都通过require(). 大多数情况下,它们相互依赖,所以我想我可以按正确的顺序包含它们,但一个依赖于buffer.
binary.js
fit-parser.js
fit.js
messages.js
  1. 通过 Browserify运行dist/目录以生成package.bundle.js文件并将其包含脚本标记。这似乎运行没有错误,但我需要实例化我需要的逻辑的主要功能不存在于浏览器中。实际上,包含捆绑文件后,直接运行文件时出现的所有全局变量都不存在。
browserify fit-parser.js -o fit-parser.bundle.js

要使用这个包,需要能够实例化一个新的FitParserusing new FitParser({...options})。该功能来自fit-parser文件,但我似乎无法将其放入浏览器的全局范围内。

标签: javascriptnode.jsbrowserifyes6-modules

解决方案


NPM 包通常是模块,因此它们通常不会影响全局。

通常你会做类似 ->

const FitParser = require("fit-parser");

或者

import {FitParser} from "fit-parser"

现代浏览器现在支持第二个选项,因此理论上您可以使用该选项而不使用 browserfy。

但是如果你想用老式的方式,用一个全局的。这就是--standalone {exportname}选项的用途。 {exportname}一直是你想在全球范围内称呼它的东西。基本上它是一种window.FitParser = FitParser在脚本内部做的事情。


推荐阅读