Javascript CasperJS和x2B的捆绑代码;使用Browserify的SlimerJS?
TLDR;我的问题是:有没有办法让browserify不使用自己的实现覆盖Javascript CasperJS和x2B的捆绑代码;使用Browserify的SlimerJS?,javascript,node.js,browserify,casperjs,slimerjs,Javascript,Node.js,Browserify,Casperjs,Slimerjs,TLDR;我的问题是:有没有办法让browserify不使用自己的实现覆盖require,而是让它为自己的所有内部需求使用不同的方法名(例如browserifyRequire)。要了解我为什么需要这样做,请继续阅读 情景 我正在尝试使用CasperJS编写一些自动化测试,并在SlimerJS中运行它们——这与默认的PhantomJS不同(尽管据我所知,PhantomJS会遇到以下相同的问题) 我真的想弄清楚如何在CoffeeScript中写这些。事实证明,CasperJS或SlimerJS在当今
require
,而是让它为自己的所有内部需求使用不同的方法名(例如browserifyRequire
)。要了解我为什么需要这样做,请继续阅读
情景
我正在尝试使用CasperJS编写一些自动化测试,并在SlimerJS中运行它们——这与默认的PhantomJS不同(尽管据我所知,PhantomJS会遇到以下相同的问题)
我真的想弄清楚如何在CoffeeScript中写这些。事实证明,CasperJS或SlimerJS在当今的CoffeeScript中表现不佳。文档建议在运行casper之前编译为JS。好啊不是很方便,但我能处理。事实上,我还发现,require
在这些工具中解析路径的方式并不像在Node中那样简单,因此在运行之前进行绑定也会有所帮助
但现在我在尝试运行捆绑代码时遇到了一系列新问题。我用的是Browserify
问题
在我的测试代码中,我需要require('casper')
。CasperJS world的标准实践。因此,我不得不告诉browserify不要捆绑CasperJS,方法是在我的包中放入“browser”:{“casper”:false}
。到目前为止没有问题。但接下来的问题是:
Browserify覆盖了内置的require
功能,提供了自己的require
实现,完成了Browserify的所有功能。CasperJS在遇到require('casper')
指令之前可以使用它。这是CasperJS必须执行要求的操作的一次,而不是浏览。但这失败了
不完全解
我很确定CasperJS无法处理Browserify覆盖require
的事实,因为CasperJS实现了自己的require
ing方法。为了验证这个假设,我手动编辑了生成的包,将require
的每次出现都重命名为browserifyRequire
——包括browserify对require
的实现。我唯一没有改变的require
是对require('casper')
的调用,因为这是我需要CasperJS处理require
的一次。事实上,这让事情如预期般运转
问题
同样,有没有办法让browserify为自己的内部require
使用不同的名称?我想我可以在捆绑后编写一个脚本来进行更改,但我更愿意通过配置来了解如何进行更改
另一个问题
也许有另一种解决方案可以代替Browserify在CasperJS中捆绑和运行CoffeeScript?我还没有找到一个…找到了一个合理的解决方案-一个可以作为npm
脚本运行的解决方案,例如npm运行构建测试包
,通过添加到package.json
"scripts": {
"build-test-bundle": "browserify -t coffeeify casper-coffee-test.coffee | derequire | sed 's/_dereq_..casper../require(\"casper\")/g' > casper-coffee-test.compiled.js"
},
此命令序列执行以下操作:
browserify-t coffeefy casper coffee test.coffee
构建捆绑包
|derequire
将browserify输出输送到一个npm
,该npm将所有出现的require
函数重命名为\u dereq
|sed's/\u dereq\..casper../require(\“casper\”)/g'
将以前的输出传输到命令,该命令将替换为正常require所有出现的\u dereq\(“casper”)
找到了一个合理的解决方案-一个可以作为npm
脚本运行的解决方案,例如npm运行构建测试包
,通过添加到package.json
"scripts": {
"build-test-bundle": "browserify -t coffeeify casper-coffee-test.coffee | derequire | sed 's/_dereq_..casper../require(\"casper\")/g' > casper-coffee-test.compiled.js"
},
此命令序列执行以下操作:
browserify-t coffeefy casper coffee test.coffee
构建捆绑包
|derequire
将browserify输出输送到一个npm
,该npm将所有出现的require
函数重命名为\u dereq
|sed's/\u dereq\..casper../require(\“casper\”)/g'
将以前的输出传输到命令,该命令将替换为正常require所有出现的\u dereq\(“casper”)