早午餐如何禁用 RequireJS 模块包装
Posted
技术标签:
【中文标题】早午餐如何禁用 RequireJS 模块包装【英文标题】:Brunch how to disable RequireJS module wrapping 【发布时间】:2012-06-19 22:02:03 【问题描述】:更新: 对于任何有兴趣将Brunch 与AngularJS 一起使用的人,我已经整理了一个种子项目angular-brunch-seed
我正在使用 Brunch 和 AngularJS。 AngularJS 提供了一个模块系统,因此使用 commonJS / AMD 导入文件的需要是多余的。是否可以为/app
目录中的文件禁用此功能?本质上,我希望它像 /vendor
目录一样编译未更改的文件。
所以首选的结果是:
joinTo:
'js/app.js': /^app/
'js/vendor.js': /^vendor/
js/app.js
和 js/vender.js
都包含来自每个文件夹的编译文件,但都没有打包。
有人有什么想法吗?
更新 语法从@jcruz 回答时发生了变化。这是现在执行此操作的方法。
最后我选择了@jcruz 答案的修改版本。
exports.config =
modules:
definition: false
wrapper: (path, data) ->
"""
(function()
'use strict';
#data
).call(this);\n\n
"""
files:
javascripts:
defaultExtension: 'coffee'
joinTo:
'js/app.js': /^app/
'js/vendor.js': /^vendor/
默认情况下,“原始”包装器不包括 coffeescript 的标准包装器。通过将 jsWrapper 设置为:
wrapper: (path, data) ->
"""
(function()
'use strict';
#data
).call(this);
"""
文件将按预期包装。
【问题讨论】:
嘿,感谢您使用新语法更新此问题。我刚刚更新了早午餐,旧的 'jsWrapper' 语法不起作用。 【参考方案1】:据我所见,现在已更改为模块配置: https://github.com/brunch/brunch/blob/stable/docs/config.md#modules
exports.config =
paths:
...
files:
...
modules:
wrapper: false
definition: false
【讨论】:
【参考方案2】:最近在https://github.com/brunch/brunch/commit/ec158cffd1b66d5db2093cf766000673aa0dd3a5 中添加了禁用模块包装的功能
我不相信带有这些功能的版本在 npm 上,但你可以从 github repo 重新安装早午餐
完成早午餐后,在 config.coffee 中将 jsWrapper 设置为“raw”
这样的……
exports.config =
jsWrapper: 'raw'
files:
javascripts:
defaultExtension: 'js'
joinTo:
'javascripts/app.js': /^app/
'javascripts/vendor.js': /^vendor/
'brunch b' 和包装代码应该消失
【讨论】:
我最终传递了一个函数来将文件包装在标准的咖啡脚本包装器中,但除此之外它工作得很好。谢谢!【参考方案3】:从(几乎)2017 年 1 月开始,必须将 npm enabled 与模块设置一起声明为 false。不过,我花了一段时间才发现。 (通过GitHub issue 找到这个)。希望这可以帮助。干杯。
这是一个有效的配置文件:
// See http://brunch.io for documentation.
module.exports =
files:
javascripts:
joinTo:
'/js/app.js': /^app/,
'/js/vendor.js': /^(?!app)/
,
stylesheets:
joinTo: 'css/app.css'
,
paths:
public: '/priv/static'
,
npm:
enabled: false
,
modules:
wrapper: false,
definition: false
【讨论】:
以上是关于早午餐如何禁用 RequireJS 模块包装的主要内容,如果未能解决你的问题,请参考以下文章
Karma + Jasmine + Durandal + KnockoutJS + RequireJS 单元测试中不匹配的匿名 define() 模块