javascript - NPM 根据构建参数添加额外代码

标签 javascript node.js

好的,我有一些 Node 包。它们包含类,并且可以通过 module.exports 轻松导出。

以下是文件结尾的示例:

module.exports.FlarePlayIcon = FlarePlayIcon;
module.exports.FlarePauseIcon = FlarePauseIcon;
module.exports.VolumeIcon = FlareVolumeIcon;
module.exports.LoadingIcon = FlareLoadingIcon;

完整文件:https://github.com/FlareMediaPlayer/FlareIcons/blob/master/src/flare-icons.js

一切都按预期构建和编译。现在,我已经在谷歌上搜索了几个小时,但无法完全开始工作,正在添加一种以“全局模式”导出类的方法,以便在脚本上添加某种类型以使类成为全局的,可能看起来像这样:

window.Flare = Flare || {};
Flare.FlarePlayIcon = FlarePlayIcon;

所以本质上我希望能够使用构建脚本或 make 文件打开和关闭将类添加到全局范围的方式,但我对任何想法持开放态度。如果该信息有值(value)的话,我通常使用 browserify 来准备供前端使用的脚本。

编辑: 所以我需要的是一种传递变量或标志来执行此操作的方法:

if (mode === "global") {

    window.Flare = Flare || {};
    window.Flare.FlarePlayIcon = FlarePlayIcon;
    window.Flare.FlarePauseIcon = FlarePauseIcon;
    window.Flare.VolumeIcon = FlareVolumeIcon;
    window.Flare.LoadingIcon = FlareLoadingIcon;

} else {

    module.exports.FlarePlayIcon = FlarePlayIcon;
    module.exports.FlarePauseIcon = FlarePauseIcon;
    module.exports.VolumeIcon = FlareVolumeIcon;
    module.exports.LoadingIcon = FlareLoadingIcon;

}

我可以在条件语句中添加什么来使其起作用?

最佳答案

想通了。

需要解析文件,并且环境变量可以替换为字符串文字。有一些插件可以做到这一点,比如 babel。在本例中,我使用 envify。 在 make 文件中:

browserify src/flare-icons.js -t [ envify purge --MODE global ] | \...

那么

console.log(process.env.MODE);

评估为“全局”

https://github.com/hughsk/envify#purging-processenv

http://babeljs.io/docs/plugins/transform-inline-environment-variables/

关于javascript - NPM 根据构建参数添加额外代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38911839/

相关文章:

node.js - 为什么请求以 express 形式保存?

node.js - koa-passport logout() 不是清除 session

javascript - 更改 $scope 时,带有 ng-options 的 EDIT<select> 不会刷新所选内容

javascript - 环回 4 : Join 2 related models

javascript - 使用javascript定位图像

javascript - 访问 JS 私有(private)方法

javascript - Gulp 和 FTP : How to transfer only the content of a folder?

javascript - 获取多维数组类对象中的项目

node.js - 如何使用 Node 强大的 fileWriteStreamHandler 组装流管道?

node.js - 在 Electron 中堆叠上下文菜单