首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Zepto兼容Browserify?

如何让Zepto兼容Browserify?
EN

Stack Overflow用户
提问于 2013-07-22 00:22:46
回答 1查看 1.5K关注 0票数 0

我对Zepto做了一些修改,希望我能在Browserify中使用它:

代码语言:javascript
复制
➤➤ git diff
diff --git a/package.json b/package.json
index 294af90..e4f8fd1 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,7 @@
     , "dist": "coffee make dist"
     , "start": "coffee test/server.coffee"
   }
+  , "main": "dist/zepto.js"
   , "repository": {
       "type": "git"
     , "url": "https://github.com/madrobby/zepto.git"
diff --git a/src/zepto.js b/src/zepto.js
index 93bfe18..cdf8929 100644
--- a/src/zepto.js
+++ b/src/zepto.js
@@ -787,6 +787,17 @@ var Zepto = (function() {
   return $
 })()

-// If `$` is not yet defined, point it to `Zepto`
-window.Zepto = Zepto
-'$' in window || (window.$ = Zepto)
+// detect module loader like jQuery
+// http://code.jquery.com/jquery-2.0.3.js
+if ( typeof module === "object" && module && typeof module.exports === "object" ) {
+  module.exports = Zepto;
+} else {
+  if ( typeof define === "function" && define.amd ) {
+    define( "zepto", [], function () { return Zepto; } );
+  }
+}
+if ( typeof window === "object" && typeof window.document === "object" ) {
+  window.Zepto = Zepto
+  // If `$` is not yet defined, point it to `Zepto`
+  '$' in window || (window.$ = Zepto)  
+}

但是我得到了错误:

代码语言:javascript
复制
/usr/lib/node_modules/watchify/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:91
                        var dir = path.resolve(x, pkg.main);
                                                     ^
TypeError: Cannot read property 'main' of undefined
    at /usr/lib/node_modules/watchify/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:91:54
    at load (/usr/lib/node_modules/watchify/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:54:43)
    at /usr/lib/node_modules/watchify/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:60:22
    at /usr/lib/node_modules/watchify/node_modules/browserify/node_modules/browser-resolve/node_modules/resolve/lib/async.js:16:47
    at Object.oncomplete (fs.js:107:15)

有什么解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-31 08:38:13

您可以手动将module.exports = window.$添加到zepto文件的底部,或者使用browserify-shim使您的模块适应动态browserify。

我会推荐后一个选项,因为编辑第三方模块是有问题的,特别是如果你计划以后升级它们的话。

browserify-shim是tested to work with zepto in particular

花点时间研究自述文件和示例,以了解如何正确设置内容。当然,您可以填充几乎任何将变量附加到全局上下文的库,例如jquery。

另外,由于浏览器中的错误而导致的错误,在此期间已被修复。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17774381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档