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