Tag: browserify commonjs

Grunt Browserify – 设置包含,备用path

有没有办法为Browserify创buildGrunt任务来使用回退path? 例如。 require('./module.js) 检查module.js是否在当前目录下,如果没有,检查其他目录? project1 |- dir1 |- mod1.js – has: require('./mod2.js') |- bundle.js – has: require('./mod1.js') and require('./mod2.js') project2 |- dir2 |- mod1.js |- mod2.js 我已经尝试remapify ,但它只能检查一个特定的目录。 而且我不想改变模块内部的requirepath,一切都应该通过Grunt完成。 我想重写一些应用程序(dir2),所以我想获取(复制到dir1)只有我需要更改的模块,并将所有其他人保留在应用程序目录中。 Gruntfile在project1 。 模块是CommonJS 。 我正在使用grunt-browserify 。

如何浏览浏览的模块?

标题似乎令人困惑,但我会举一个例子。 假设我创build了一个使用运行在浏览器中的ES6的模块,所以我使用了带有babelify的browserify来构build一切。 现在我想在使用browserify的项目中包含相同的模块,但不使用Babel来编译ES6,所以我需要编译版本。 我试图要求这样的“browserified”模块: // es5-project.js require('./compiled-module-with-browserify'); 但是,当我运行browserify es5-project.js我开始得到这样的错误: Error: Cannot find module './XXX' from '/Users/mauricio.oliveira/projects/project-name/dist-folder' 这是有道理的,因为browserify将所有模块编译成一个文件,它不会在编译的文件中find模块。 有没有人遇到像这样的问题? 如果你这样做,你是如何解决的? 谢谢!

有没有办法让browserify模块访问全局范围(窗口对象)?

情景 我使用Browserify(或像导入NodeJS / CommonJS)需要一些JavaScript库。 然而,我很难让他们玩的很好,因为默认情况下显然Browserify拒绝全局范围访问所有模块。 例如,这样做不起作用; file1.js require('moment'); file2.js moment(new Date()); // throws moment is undefined 但是,这通过将file1.js的内容更改为以下内容来工作。 window.moment = require('moment'); 问题 到目前为止,这已经运行得很好,但是现在我无法加载时区库(MomentJS的扩展)。 Moment Timezone的文档意味着这两个脚本都应该在窗口全局范围上运行,将它们添加为脚本标签, <script src="moment.js"></script> <script src="moment-timezone-with-data.js"></script> 所以他们可以这样使用; moment().tz("America/Los_Angeles").format(); 然而,这似乎很难实现,因为如果我尝试以下; window.moment = require('moment'); require('./../../node_modules/moment-timezone/builds/moment-timezone-with-data-2010-2020'); // the location of my moment-timezone library 我得到一个运行时错误,说这个moment.tz is undefined (意味着第二个库没有与全局范围运行)。 如果我尝试将window.moment添加到第二行代码,我将重写完整库的第一个实例。 所以,总之, 有没有办法允许某些Browserify导入具有全局作用域访问权限,或者使用window对象作为其作用域运行? 我意识到这有安全隐患,但有select地使用,这将是非常有用的,同时需要像JavaScript库的东西,需要全局访问来正确设置自己。 任何帮助将不胜感激。

客户端模块工作stream程:(Browserify + npm + gulp)或(RequireJS + Bower + gulp)?

我一直在为当前的Node.JS Express项目研究不同的客户端Javascript模块工作stream程,并且在使用Browserify + npm + gulp与RequireJS + Bower + gulp之间做出了决定。 我更愿意使用CommonJS,而不是AMD,因为我更喜欢这个语法,所以一方面我很想去使用前一个选项…但是,我真的不喜欢为服务器共享相同全局模块的想法和客户端(如果我想使用不同的版本),而且,我宁愿保持我的客户端依赖关系而不是npm的方式,所以我更喜欢鲍尔pipe理我的模块…所以我被抓住在这个难题。 有什么办法可以让这两个世界最好? Browserify-shim似乎是相关的…在这个问题上的任何意见?

Browserify包的输出非常大,找不到debugging进程的方法

我正在使用npm的browserify来创build一捆js。 该网站的应用程序使用反应和很多其他模块,所以输出文件约3.4M, 2M加粗和430K gzip。 browserify进程是通过package.json中定义的npm run browserify执行的 "browserify": "browserify client/index.js -u server/**/**/**/* -iq -i express-validation | uglifyjs -o public/javascripts/generated/bundle.js" 我有一种感觉,束输出是太大了,有一种方法来减less它,但我找不到一种方法来debugging进程(尝试-d –list等)。 任何帮助将不胜感激。

如果使用browserify和node.js commonJs,那么只会对css有用

我从这个堆栈溢出问题看到了bower和npm之间的区别: npm用于pipe理Node.js模块,但与Browserify或WebPack结合使用时也可以在前端工作。 npm是嵌套的依赖树,所以你的依赖关系可以有自己的依赖关系,它们可以有自己的…这基本上可以意味着相同模块的许多版本在一起,但不是服务器上的问题,并且Browserify只处理捆绑适当的模块。 鲍尔仅用于前端,并且考虑到了这一点。 它需要一个平坦的依赖关系树,将依赖关系parsing的负担放在用户上,这对客户端来说是有意义的,因为我们希望尽量减less包含的数量, 我的问题: 如果我们使用Browserify,使用bower来pipe理前端依赖关系还有什么意义,除了以下两个好处之外呢? pipe理前端css模块包括,例如pure.css或bootstrap.css, 包括1个或2个大型JavaScript库,例如Angular,React或jQuery作为独立于您的Browserify包的页面上的全局版本 – 即使这意味着额外的http请求,也可以减lessbundle.js的膨胀

浏览器/服务器CommonJS模块与依赖关系打包

比方说,我正在编写一个JavaScript模块,可以在浏览器和服务器上使用(与节点)。 让我们称之为模块 。 并且可以说,该模块将从另一个称为Dependancy的模块中的方法中受益。 这两个模块都已被编写成供浏览器和服务器使用,即CommonJS风格: module.js if (typeof module !== 'undefined' && module.exports) module.exports = Module; /* server */ else this.Module = Module; /* browser */ dependancy.js if (typeof module !== 'undefined' && module.exports) module.exports = Dependancy; /* server */ else this.Dependancy = Dependancy; /* browser */ 很明显,可以在浏览器中直接使用Dependancy 。 但是,如果模块包含var dependancy = require('dependency'); 指令,更“维护”模块变得更麻烦。 我知道我可以对模块中的 […]