使用AMD的Webpack,生成单个文件

时间:2015-05-13 19:07:20

标签: javascript requirejs amd webpack

我们实际上是从RequireJS迁移到Webpack,以便能够切换到CommonJS模块而不是AMD,而无需同时重构所有内容。

我们正在使用带有RequireJS的Almond,它允许我们生成客户正在使用的单个.js文件。

我们希望对Webpack做同样的事情,但实际上它会生成两个资产,一个使JSONP调用异步加载另一个资产。

我们得到了:

  • 1.bundle.js
  • bundle.js

bundle.js文件发出加载1.bundle.js文件的JSONP请求,但这不是我们想要做的。我们需要一个独立的文件。

是否可以只生成一个.js文件?

这是我的webpack配置,请注意我们在grunt-webpack文件中使用Gruntfile.coffee任务。

entry: './app/pack.coffee'
target: 'web'
output:
  path: '.webpack/'
  filename: 'app.js'
resolve:
  root: path.resolve './app'
  alias:
    'underscore': path.resolve './vendors/underscore.js'
    'backbone': path.resolve './vendors/backbone/backbone.js'
    'accounting': path.resolve './vendors/accounting.js'
    'moment': path.resolve './vendors/moment.js'
    'tipsy': path.resolve './vendors/jquery.tipsy.js'
    'json2': path.resolve './vendors/json2.js'
    'backbone.wreqr': path.resolve './vendors/backbone.wreqr/lib/backbone.wreqr.js'
    'backbone.babysitter': path.resolve './vendors/backbone.babysitter/lib/backbone.babysitter.js'
    'backbone.marionette': path.resolve './vendors/marionette/lib/backbone.marionette.js'
    'backbone.syphon': path.resolve './vendors/backbone.syphon.js'
    'backbone.paginator': path.resolve './vendors/backbone.paginator.js'
    'backbone.routefilter': path.resolve './vendors/routefilter/src/backbone.routefilter.js'
module:
  loaders: [
    { test: /\.coffee$/, loader: "coffee-loader" },
    { test: /\.html/, loader: "raw-loader" },
    { test: /\.(coffee\.md|litcoffee)$/, loader: "coffee-loader?literate" }
  ]
plugins: [
  new webpack.optimize.LimitChunkCountPlugin
    maxChunks: 1
]

更新

使用LimitChunkCountPlugin似乎可以解决问题!当生成的文件很大时,不知道Webpack是否会创建多个块以进行优化。

1 个答案:

答案 0 :(得分:1)

使用LimitChunkCountPlugin似乎可以解决问题!当生成的文件很大时,不知道Webpack是否会创建多个块以进行优化。

请参阅原始问题中的更新,了解我是如何收录的。