【问题标题】:Disallow sensitive file from browserify禁止浏览器中的敏感文件
【发布时间】:2014-11-11 22:40:13
【问题描述】:

Browserify 允许在服务器和客户端上使用相同的模块,这很好。

但是,我不想将某些文件包含在 browserify 包中,例如包含敏感数据的属性文件。显然我不会故意包含它,但我想更进一步,甚至阻止它成为可能,比如意外或不熟悉设置的开发人员。

现在我有这个:

// fail browserify but not node
try { require('./kill/browserify'); }
catch(ex) {}

...我认为应该可以工作,因为 node 包含动态但 browserify 包含静态,但我想知道是否有一种不那么骇人听闻的方式?就像某种评论指令:

// is something like this possible?
/* @browserify disallow */

【问题讨论】:

    标签: javascript browserify


    【解决方案1】:

    exclude怎么样?

    --exclude, -u 从输出包中省略一个文件。文件可以是 glob。

    如果您的代码尝试 require() 该文件,除非您提供了另一种加载机制,否则它将抛出该文件。

    如@greim 所述,上述答案仅在运行时有效。另一个应该在捆绑时工作的解决方案是使用 browserify 转换器将受保护的文件别名为不存在的文件。

    使用别名:

    aliasify = require('aliasify').configure({
        aliases: {
            "file-protected": "./path/to/protected"
        }
    });
    
    var b = browserify();
    b.transform(aliasify);
    ...
    

    【讨论】:

    • 这会在运行时产生错误,但不会在捆绑时产生。因此,例如,我将无法使用这种技术使构建失败。构建会顺利运行,这将取决于 QA 或任何在野外捕捉它的人。
    • 关于使用aliasify,我会赞成将其作为一个可行的解决方案,但我也注意到它与我想出的东西一样是一个黑客:)
    • @greim 是的,它是一个 hack,但它是你构建中的一个 hack,而不是你的代码。我认为这是一个小小的改进。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-03
    相关资源
    最近更新 更多