gpt4 book ai didi

javascript - 让 Sprockets 在不在 Rails/Rack 应用程序中时缩小 CSS/JS

转载 作者:行者123 更新时间:2023-11-29 21:53:46 26 4
gpt4 key购买 nike

我正在尝试使用 Sprockets 在 Rails 和 Rack 上下文之外组合和缩小我的 JavaScript 和 CSS 文件。到目前为止,我能够将它们合并到一个文件中,但现在我正在尝试对这些文件运行 JS 压缩器和 CSS 压缩器。

我遵循了 Sprockets 自述文件的说明 ( https://github.com/sstephenson/sprockets#minifying-assets ),但我收到了这个错误:

NoMethodError: undefined method `compress' for :uglify:Symbol

这是我完整的 rakefile:

require 'rubygems'
require 'bundler'
require 'pathname'
require 'logger'
require 'fileutils'
require 'uglifier'

Bundler.require

ROOT = Pathname(File.dirname(__FILE__))
LOGGER = Logger.new(STDOUT)
BUNDLES = %w( combined.css combined.js )
BUILD_DIR = ROOT.join("dist")
SOURCE_DIR = ROOT.join("src")

task :compile do
sprockets = Sprockets::Environment.new(ROOT) do |env|
env.logger = LOGGER
env.append_path SOURCE_DIR.join('javascripts').to_s
env.append_path SOURCE_DIR.join('stylesheets').to_s
env.js_compressor = :uglify
end

BUNDLES.each do |bundle|
assets = sprockets.find_asset(bundle)
prefix, basename = assets.pathname.to_s.split('/')[-2..-1]
FileUtils.mkpath BUILD_DIR.join(prefix)

assets.write_to(BUILD_DIR.join(prefix, basename))
end
end

我尝试了以下方法(剧透警告:它们不起作用):

  1. env.js_compressor = :uglifier
  2. env.js_compressor = Uglifier
  3. env.js_compressor = Uglify

我仍然得到一个 NoMethodError for compress 每个。

开启JS压缩的正确方式是什么? CSS 呢? (我在那里遇到了类似的问题。)

======除了下面标记的答案外,请注意:

对于任何好奇的人,您都可以实例化您的压缩器并确保它响应compress:

env.js_compressor = YUI::JavaScriptCompressor.new  
env.css_compressor = YUI::CssCompressor.new

最佳答案

我试过了(下面的例子),它对我有用。我怀疑您使用的是 Sprockets 的过时版本,因为您要使用的速记缩小符号是最近在 2.7.0 版中引入的。我会做一个 gem upgrade,希望能修复它。


示例 Rakefile(在包含未缩小的 non-min.js 文件的目录中,在运行 rake compile 之后是一个缩小的 min .js 文件已生成):

require 'sprockets'

ROOT = Pathname(File.dirname(__FILE__))

task :compile do
sprockets = Sprockets::Environment.new(ROOT) do |env|
env.append_path './'
env.js_compressor = :uglify
end

assets = sprockets.find_asset("non-min.js")
assets.write_to("./min.js")
end

更新:为了验证我上面的回答,我安装了旧版本的 Sprockets (v2.6.0) 并收到了与您相同的错误消息。

关于javascript - 让 Sprockets 在不在 Rails/Rack 应用程序中时缩小 CSS/JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576034/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com