jjzjj

javascript - Webpack 工作流程有效地拆分 vendor 和应用程序代码

coder 2024-05-14 原文

我很难找到足够的 Webpack 文档和示例来针对我的情况制定理想的开发工作流程。以下是使工作流程变得理想的所有功能:

  1. 观看,最好是通过 Gulp,使用高效的缓存。 (不要认为我需要热模块更换并怀疑它可能不适合我的开发环境。)

  2. 一个。在监视期间不解析和重新编译(因此重新编译更快),

    不接收 sourcemap(因此浏览器开发工具响应速度更快),并且

    写入不同的 vendor.js 包,浏览器可以将其与应用包分开缓存。

  3. 应用模块是

    一个。明确所有依赖项(即 import React from 'react'; 即使 React 实际上是全局公开的或通过 #2 的东西),

    在观看期间重新编译,并且

    确实收到源 map 。

我在文档或示例中阅读的大部分内容似乎都没有触及这个工作流程。

虽然我确实在文档中看到了如何创建特定于 vendor 的 bundle (转载于此处:Simple solution to share modules loaded via NPM across multiple Browserify or Webpack bundles),但提供的简单示例并未解决 2a 和 2b。

我在文档中没有看到任何方法可以为不同的 block 指定不同的编译配置(sourcemaps 等),或者创建完全独立的 Webpack 包和可以相互引用的单独的配置文件,除非通过全局化所有 vendor 库并将它们用作外部(?),这并不理想......

此外,我很好奇 Gulp 用户是使用 gulp-webpack 还是像 http://webpack.github.io/docs/usage-with-gulp.html 中提供的那样的设置. (我不确定 webpack-dev-server 是否适合我的开发环境,所以如果可能的话我想坚持使用 gulp-watch。)

我是否遗漏了其他 Webpack 用户知道的信息?执行此操作的最佳方法是什么?

Webpack 是否可能不是完成这项工作的正确工具?

最佳答案

Watching, ideally through Gulp, with efficient caching. (Don't think I need hot module replacement and suspect it might not fit into my dev environment well.)

使用webpack-dev-server .

你并不真的需要 Gulp,但你可以将它的 Node API 与 Gulp 一起使用(我正在这样做)。

Vendor modules (right now I have only npm packages, not all of them exposing UMD globals in their main file, if it came down to that) that are

a. not parsed & re-compiled during watch (so recompilation is faster),

我不认为未更改的文件会在监视期间被解析或重新编译。

b. do not receive a sourcemap (so browser devtools are faster to respond), and

不知道这个怎么做。我认为 source maps 要么全进要么全出。但是您可以使用 devtool: 'eval',它比源映射快得多。

c. write to a distinct vendor.js bundle that browsers can cache separately from app bundles.

我认为您正在寻找 split-by-name-webpack-plugin .

App modules that are

a. explicit about all dependencies (i.e. import React from 'react'; even if React is actually globally exposed or something via #2),

这会起作用。要要求 全局公开的库,请使用 externals config option .

b. are re-compiled during watch, and

发生变化的内容将被重新编译(如果您使用 webpack-dev-server)。

这并不能回答您的所有问题,但我希望它足以弄清楚它是否适合您。我不认为“不监视库”是一个大问题,就像你说的那样(重建缓存模块的性能损失很小),如果你放弃 sourcemaps 并使用 devtool: 'eval' ,我会说它真的很快。最后,there's a new watching solution in the works for Webpack所以你可能想试一试。它应该有更好的性能。

关于javascript - Webpack 工作流程有效地拆分 vendor 和应用程序代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27592559/

有关javascript - Webpack 工作流程有效地拆分 vendor 和应用程序代码的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  3. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  4. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  5. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  6. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  7. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  8. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  9. ruby - 如何进行排列以有效地定制输出 - 2

    这是一道面试题,我没有答对,但还是很好奇怎么解。你有N个人的大家庭,分别是1,2,3,...,N岁。你想给你的大家庭拍张照片。所有的家庭成员都排成一排。“我是家里的friend,建议家庭成员安排如下:”1岁的家庭成员坐在这一排的最左边。每两个坐在一起的家庭成员的年龄相差不得超过2岁。输入:整数N,1≤N≤55。输出:摄影师可以拍摄的照片数量。示例->输入:4,输出:4符合条件的数组:[1,2,3,4][1,2,4,3][1,3,2,4][1,3,4,2]另一个例子:输入:5输出:6符合条件的数组:[1,2,3,4,5][1,2,3,5,4][1,2,4,3,5][1,2,4,5,3][

  10. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

随机推荐