43

application.css で使用している場合、ツリー構成//=require_tree .に頼る以外に特定のファイルを除外する方法はありますか?//=require_directory

おそらく次のようなもの//= require_tree ., {except: 'something'}

4

5 に答える 5

66

stubこれは、Sprocket v2.2.0 以降で利用可能な Sprocket の新しいディレクティブで可能です。ただし、Rails 3.2 は、この機能を持たない Sprockets v2.1.3 のみを使用します。現在、現在の Edge Rails にはこのstubディレクティブがあり、正式には Rails 4.0 以降に含まれます。

使用法:

//= require jquery
//= require_tree .
//= stub unwanted_js

stubrequireディレクティブは、後続のまたはディレクティブによってオーバーライドできませんinclude

Rails 3.2 プロジェクトでディレクティブを使用する場合はstub、Edge Rails に切り替えるか、Sprockets 依存関係をバージョン 2.2.0 に変更して Rails gem を分岐する必要があります。

于 2012-03-08T00:24:51.010 に答える
18

Rails 3.2.9 のリリース以降、//= stub最新のスプロケットのディレクティブを使用できるように、スプロケットをバージョン 2.2.x にロックする機能がサポートされています。

//= stub unwanted_js

http://weblog.rubyonrails.org/2012/11/12/ann-rails-3-2-9-has-been-released/

したがって、それを使用するには、Rails 3.2.9 にアップグレードするだけです

于 2012-11-24T10:39:41.380 に答える
4

注意: この回答は古くなっています。この機能を持つ Sprockets が更新されています。以下の回答を参照してください。

===

これは現在の Sprockets ディレクティブでは不可能ですが、便利な機能のようです。

必要な各ファイルを手動でリストするもう1つの方法。

おそらく、これを機能リクエストとしてSprocketsリポジトリに提出できますか? :-)

于 2011-10-02T01:54:48.587 に答える
0

次のモンキーパッチは私のためにこれを解決します:


module Sprockets
  class DirectiveProcessor
    # support for: require_tree . exclude: "", "some_other"
    def process_require_tree_directive(path = ".", *args)
      if relative?(path)
        root = pathname.dirname.join(path).expand_path

        unless (stats = stat(root)) && stats.directory?
          raise ArgumentError, "require_tree argument must be a directory"
        end

        exclude = args.shift == 'exclude:' ? args.map {|arg| arg.sub(/,$/, '')} : []

        context.depend_on(root)

        each_entry(root) do |pathname|
          if pathname.to_s == self.file or exclude.include?(pathname.basename(pathname.extname).to_s)
            next
          elsif stat(pathname).directory?
            context.depend_on(pathname)
          elsif context.asset_requirable?(pathname)
            context.require_asset(pathname)
          end
        end
      else
        # The path must be relative and start with a `./`.
        raise ArgumentError, "require_tree argument must be a relative path"
      end
    end
  end

end
于 2012-01-06T20:08:32.280 に答える
0

https://github.com/QubitProducts/miniMergeを試してみてください

JSだけでなくベーシックモードスプロケットにも対応。

ファイル レベルだけでなく、ブロックや行でも除外できます。

複数のソース ベースによる完全な依存関係の管理。

私は過去にスプロケットを使用しましたが、これはより優れており、CSS にも使用しています。

于 2014-08-05T14:39:49.383 に答える