Sprockets::Commoner 项目教程
1. 项目的目录结构及介绍
Sprockets::Commoner 是一个用于 Rails 应用的 gem,它允许在 Sprockets 环境下进行 JavaScript 打包和 Babel 转换。以下是该项目的目录结构及其介绍:
sprockets-commoner/
├── bin/
│ └── js/
│ └── babel-plugin-sprockets-commoner-internal
├── lib/
│ └── sprockets/
│ ├── commoner/
│ │ ├── bundle.rb
│ │ ├── json_processor.rb
│ │ └── processor.rb
│ └── commoner.rb
├── test/
│ └── sprockets/
│ └── commoner/
├── .gitignore
├── .nvmrc
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── circle.yml
└── sprockets-commoner.gemspec
bin/
: 包含用于 Babel 插件的脚本。lib/
: 包含项目的主要代码,特别是sprockets/commoner/
目录下的文件,这些文件实现了 Commoner 的核心功能。test/
: 包含项目的测试文件。.gitignore
: 指定 Git 忽略的文件和目录。.nvmrc
: 指定 Node.js 版本。CHANGELOG.md
: 记录项目的变更历史。CODE_OF_CONDUCT.md
: 项目的代码行为准则。Gemfile
: 指定项目的依赖。LICENSE.txt
: 项目的许可证。README.md
: 项目的介绍和使用说明。Rakefile
: 包含 Rake 任务。circle.yml
: 用于 CircleCI 的配置文件。sprockets-commoner.gemspec
: 项目的 gemspec 文件。
2. 项目的启动文件介绍
项目的启动文件主要位于 lib/sprockets/commoner/
目录下,其中 commoner.rb
是主要的启动文件。它负责注册后处理器和转换器,并启用 Babel 支持。
require 'sprockets'
require 'sprockets/commoner/json_processor'
require 'sprockets/commoner/processor'
require 'sprockets/commoner/bundle'
module Sprockets
module Commoner
def self.sprockets4
@@sprockets4 ||= Gem::Version.new(Sprockets::VERSION) >= Gem::Version.new('4.0.0.beta')
end
end
end
Sprockets.register_postprocessor 'application/javascript', ::Sprockets::Commoner::Processor
Sprockets.register_transformer 'application/json', 'application/javascript', ::Sprockets::Commoner::JSONProcessor
Sprockets.register_bundle_metadata_reducer 'application/javascript', :commoner_enabled, false
Sprockets.register_bundle_metadata_reducer 'application/javascript', :commoner_required, Set.new
Sprockets.register_bundle_metadata_reducer 'application/javascript', :commoner_used_helpers, Set.new
3. 项目的配置文件介绍
项目的配置文件主要包括 Gemfile
和 sprockets-commoner.gemspec
。
Gemfile
Gemfile
指定了项目的依赖,例如:
source 'https://rubygems.org'
gem 'sprockets', '~> 4.0'
gem 'babel-transpiler'
sprockets-commoner.gemspec
sprockets-commoner.gemspec
包含了 gem 的详细信息和依赖:
Gem::Specification.new do |spec|
spec.name = "sprockets-commoner"
spec.version = '0.1.0'
spec.authors = ["Shopify"]
spec.summary = "Enable JavaScript package management in Sprockets."
spec.description = "Sprockets::Commoner is a gem that enables JavaScript package