私はgrunt-requirejsを使用しており、アプリの構造は次のようになります。
site/
dev/
index.html
config.coffee
app.coffee
etc.
srv_dev/
index.html
config.js
app.js
etc.
dist/
node_modules/
Gruntfile.coffee
ファイルを実行grunt dev
すると、他のタスクの中でコーヒーから js にコンパイルされ、dev/ から srv_dev/ にコピーされ、そこから提供されます。
私のgrunt dist
タスクは、アプリのすべての主要な依存関係をコンパイル/結合する必要がありますが、後で実行するための呼び出しをdev
許可する必要があるrequirejsタスクを実行します。基本的に、ユーザーがリンクをクリックするまでロードされない単一ページアプリの一部があり、それが起動して呼び出されます。require(somevar)
define
requrire()
define()
私の現在の問題は非常に基本的なようです...次のようにrequirejs gruntタスクを設定しました:
requirejs:
options:
baseUrl: './'
mainConfigFile: 'srv_dev/config.js'
dist:
options:
out: 'dist/script.js'
これはスローしますError: Error: Missing either a "name", "include" or "modules" option
ほとんどのオプティマイザ ドキュメントとサンプル ビルド ファイルを読みましたが、このエラーで何が起こっているのかわかりません。このプロジェクトのtkellen はalmond.js の name オプションを使用していますが、私はそれをしたくないと思います。ビルド ファイルの例には、「モジュール名を指定するだけで、そのモジュールがその依存関係をすべて含むビルド ファイルに変換されることを意味します」と記載されています。それが私の次の試みでした:
requirejs:
options:
baseUrl: './'
name: 'srv_dev/config.js'
dist:
options:
out: 'dist/script.js'
これで私は得るError: ENOENT, no such file or directory >> '/Users/user/Desktop/project/site/app.js'
そのため、config.js は見つかりますが、require.js 構成の baseUrl を使用しているため、構成にリストされているパスを見つけることができません。
また、requirejs タスク構成で「./srv_dev」の baseUrl を指定すると、config.js ファイルが見つかりません。これをうまく機能させるために、さまざまな方法を試しました。gruntfile は config.js ファイルと同じディレクトリにある必要があると思いますが、それは私のプロジェクトの設定方法ではありません。
ありがとう!
ここに私のconfig.coffeeファイルの全文があります
config =
baseUrl: './'
paths:
# require plugins
text : '/components/requirejs-plugins/lib/text'
json : '/components/requirejs-plugins/src/json'
# lib
jquery : '/components/jquery/jquery'
bootstrap : '/components/bootstrap/dist/js/bootstrap'
lodash : '/components/lodash/dist/lodash'
backbone : '/components/backbone/backbone'
marionette : '/components/marionette/lib/backbone.marionette.min'
handlebars : '/components/handlebars/handlebars'
prism : '/components/customPrism/prism'
coffeescript : '/components/coffee-script/extras/coffee-script'
# app
app : '/app/app'
appSettings : '/app/appSettings'
AppController : '/app/AppController'
AppRouter : '/app/AppRouter'
postMasterRecord : '/posts/postMasterRecord'
util : '/scripts/util'
templates : '/templates'
handlebarsHelpers: '/scripts/handlebarsHelpers'
shim:
# lib
bootstrap:
deps: ['jquery']
backbone:
deps: ['lodash', 'jquery']
exports: 'Backbone'
marionette:
deps: ['backbone', 'lodash', 'jquery']
exports : 'Marionette'
handlebars:
exports: 'Handlebars'
templates:
deps: ['handlebars']
# app
app:
deps: [
'marionette'
'bootstrap'
'handlebars'
'templates'
]
# deps: ['app']
require.config(config)
require(['app'])