在开发中,我在我的 Express 服务器上同时使用 Coffeescript 和 Browserify 中间件来交付我的客户端 JS,如下所示:
app.use browserify mount: '/client.js', entry: './client.coffee', watch: yes
今天我正在升级我的依赖项,并在 browserify v2 网站上注意到了这一点:
browserify 中最糟糕的想法之一,用于托管捆绑包的临时 http 服务器中间件终于消失了。
对咖啡脚本的默认支持已不复存在。您仍然可以在您的程序中使用咖啡脚本,您只需要编译为 js 或自己将源转换挂钩到捆绑管道中。
请记住,如果您不同意我希望很多人会同意的这些削减,那么通过 v2 重构,您可以更轻松地了解 browserify 应该如何使用底层新库作为起点。
很公平。
唯一的问题是,我已经阅读了新 API 的文档,但我对如何实际实现自己的中间件有点茫然。事实上,我什至无法使用browserify.add()
and获得一个基本的独立示例browserify.bundle()
,更不用说作为快速中间件了。
我可以继续使用 v1,但由于这个项目仍在开发中,我想保持我的依赖项是最新的。任何建议都非常感谢。
更新:
我已经做到了这一点:
browserify = require 'browserify'
coffee = require 'coffee-script'
through = require 'through'
app.get '/client.js', (req, res) ->
b = browserify()
b.add './client.coffee'
b.transform (file) ->
write = (buf) ->
data += buf
end = ->
@queue coffee.compile(data)
@queue null
data = ''
return through(write, end)
b.bundle {}, (err, src) ->
res.send src
这行得通,除了我曾经说过的require './module'
地方,我现在必须这样做require './module.coffee'
。这不是很理想,我不想更新我的应用程序中的每个需求。