Javascript 禁止浏览敏感文件

Javascript 禁止浏览敏感文件,javascript,browserify,Javascript,Browserify,Browserify允许在服务器和客户端上使用相同的模块,这很好 但是,有些文件我不希望包含在browserify包中,例如包含敏感数据的属性文件。很明显,我不会故意将其包括在内,但我想更进一步,甚至阻止它成为可能,比如说由于意外或不熟悉设置的开发人员 现在我有这个: // fail browserify but not node try { require('./kill/browserify'); } catch(ex) {} …我认为这应该是可行的,因为node包含动态的,而browse

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

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

现在我有这个:

// fail browserify but not node
try { require('./kill/browserify'); }
catch(ex) {}
…我认为这应该是可行的,因为node包含动态的,而browserify包含静态的,但我想知道是否有一种更简单的方法?类似于某种注释指令:

// is something like this possible?
/* @browserify disallow */
怎么样

--exclude,-u从输出包中省略文件。文件可以是全局文件

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

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

使用别名:

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

var b = browserify();
b.transform(aliasify);
...

这将在运行时生成错误,但不会在捆绑时生成错误。例如,使用这种技术,我不可能使构建失败。构建会运行得很愉快,这将取决于QA或任何人在野外捕获它。关于使用
别名化
,我将投票将其作为一个有效的解决方案,但是我也注意到,它与我提出的一样是一个黑客行为:)@greim是的,这是一个黑客行为,但它是对你的构建的一个黑客行为,而不是你的代码。我认为这是一个小小的进步。