Prepack CLI

安装

npm install -g prepack

编译文件

编译文件并将其打印到控制台:

prepack script.js

编译文件并输出到另一个文件:

prepack script.js --out script-processed.js

如果要输出源 map 文件 添加 --srcmapOut。如果您的软件包是从其他编译器生成的,则Prepack将自动查找 .map 件,但您也可以使用 --srcmapIn选项进行指定:

prepack script.js --out script-processed.js --srcmapIn script.map --srcmapOut script-processed.map

高级用法, 请参阅 API 选项prepack --help.

prepack [ --out output.js ] [ --compatibility jsc ] [ --mathRandomSeed seedvalue ] [ --srcmapIn inputMap ] [ --srcmapOut outputMap ] [ --speculate ] [ --trace ] [ -- | input.js ] [ --singlePass ] [ --debugNames ] [ --logStatistics ]

REPL

您也可以在REPL模式下运行Prepack。这可能不是很有用,但它可以让您在Prepack的解释器中测试错误。

prepack-repl

Prepack API

您也可以使用编程API作为Node.js模块。

安装

npm install --save-dev prepack
var Prepack = require("prepack");
import { prepack, prepackFileSync } from 'prepack';
import * as Prepack from 'prepack';

字符串

Prepack.prepack(codeString, options) // returns { code: string, map: SourceMap }

Babel 抽象语法树

Prepack.prepackFromAst(babelAstNode, code, options) // returns { code: string, map: SourceMap }

注意:目前,还需要提供源代码 Function.prototype.toString 和错误消息。

文件异步

Prepack.prepackFile(filename, options, callback) // callback(error, { code: string, map: SourceMap })

文件同步

Prepack.prepackFileSync(filename, options) // returns { code: string, map: SourceMap }

选项

选项 类型 默认值 描述
filename string inferred 用于错误堆栈的文件名。
inputSourceMapFilename string null 如果提供,则在生成新的源映射之前,将该输入源映射文件用作输入。
sourceMaps boolean false 确定是否应生成源映射文件。
compatibility "browser" | "jsc-600-1-4-17" "browser" 选择内置的环境兼容性。将来会增加更多的内置环境。
mathRandomSeed string null 如果提供了一个种子串, Math.random() 可以依赖于并在具体代码路径中使用。
speculate boolean false 如果它们是剩余程序的一部分,则可以预先执行更多的`require(...)`调用。
trace boolean false 记录评估的函数调用。
debugNames boolean false 如果为true,请尝试将原始变量和函数名称保留为生成代码的一部分。
singlePass boolean false 目前,串行器进行两次通过以优化输出中的变量命名,但是这很慢,因此可以让您选择单次通过。此选项预计在将来不再需要。
logStatistics boolean false 如果为true,则记录生成的对象,函数和ids数量的统计信息。
logModules boolean false 如果为true,则对模块进行评估。
delayUnsupportedRequires boolean false 如果为true,则推测执行执行失败则不会被执行。
internalDebug boolean false 如果为true,则将Prepack中的JS堆栈与Prepacked程序中的堆栈一起打印出来。用于调试Prepack本身。
uniqueSuffix string null 如果为生成的ID添加了唯一的后缀,这样它们就不会与程序中的其他任何东西相冲突。预计将来会自动尝试添加后缀。
timeout number Infinity 在程序超时之前运行程序的毫秒数。有用的是在Prepacked程序中避免无限循环。
strictlyMonotonicDateNow boolean false 目前只用于运行Test262测试套件,它需要按照递增的顺序读取 Date.now() 。