【问题标题】:use grunt to concat ember files in proper order使用 grunt 以正确的顺序连接 ember 文件
【发布时间】:2013-12-13 05:21:53
【问题描述】:

我正在使用 Grunt 将我的 javascript 编译成一个文件。

在我的Gruntfile.js 我有一个 concat 方法

concat: {
        libs: {
            src: [
                'js/vendor/jquery-1.10.2.js',
                'js/vendor/handlebars-1.1.2.js',
                'js/vendor/bootstrap.js',
                'js/vendor/ember-1.2.0.js',
                'js/vendor/ember-data.js',
                'js/vendor/ember-localstorage-adapter.js',
                'js/vendor/moment.js'
            ],
            dest: 'js/libs.js'
        },
        app: {
            src:'js/app/**/*.js',
            dest:'js/app.js'
        }
    }

对于我的文件结构:

js
 | --app
      | --controllers
      | --models
      | --routes
      | --views
      | --app.js
      | --store.js
      | --router.js
  | --vendor
      | ...libraries etc.

当 grunt 连接我的 javascript 文件时,它会生成 js/app.js:

App = Ember.Application.create();

App.Router.map(function(){
    this.resource('bookmarks');
});

App.Store = DS.LSAdapter;

我如何确保商店在路由器之前加载到js/app.js,或者这有关系吗?

【问题讨论】:

    标签: javascript node.js ember.js gruntjs npm


    【解决方案1】:

    文件按照它们在您的 concat 规则的 src 部分中列出的顺序进行连接。就商店首先加载而言,订单应该无关紧要,但这只是一个有根据的猜测,因此请谨慎对待该建议。

    如果您确实希望商店行位于路由器之前,您可以将您的串联修改为:

        app: {
            src:[
               'js/app/app.js',
               'js/app/store.js',
               'js/app/router.js'
            dest:'js/app.js'
        }
    

    这样应用程序首先被附加,然后是存储,然后是路由器。

    【讨论】:

    • 请记住,您还可以在此列表中的任何位置添加星号/通配符模式,它将丢弃任何先前声明的匹配文件。很适合说“首先包括这个,最后一个,以及两者之间的所有其他内容”。
    • @Jon :我想您应该将此作为答案。我几乎错过了你的评论,我相信这是最好的方法
    猜你喜欢
    • 2020-10-23
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多