製品版で amd の必要性を完全に取り除くために、requirejs と AMDClean を使用してプロジェクトを構築しようとしています。ファイルをまとめるためにrequirejsオプティマイザーを取得することはできますが、amdcleanを使用してrequire/defineを削除することはできません。これが私のrequirejsコードです(coffeescriptを使用してうなり声で書かれています):
requirejs:
compile:
options:
baseUrl: './client'
mainConfigFile: "client/main.js"
name: 'main'
out: 'build/main.js'
ここで、client/main.js はアプリケーションへのエントリ ポイントです。script タグを使用してこのファイルを呼び出すことができます。
<script src="client/vendor/require.js" data-main="build/main.js"></script>
これは、amdclean を使用した grunt の requirejs タスクです。
fs = require 'fs'
amdclean = require 'amdclean'
module.exports = (grunt) ->
'use strict'
grunt.initConfig(
#Read Package.json
pkg: grunt.file.readJSON('package.json')
#Build task
requirejs:
compile:
options:
baseUrl: './client'
mainConfigFile: "client/main.js"
name: 'main'
out: 'build/main.js'
onModuleBundleComplete: (data) ->
outputFile = data.path
fs.writeFileSync(outputFile, amdclean.clean(
'filePath': 'client/main.js'
'globalModules': []
'wrap':
'start': '(function(){\n',
'end': '\n}());'
))
このタグを使用してこのファイルを呼び出すことができると思います:
<script src="build/main.js"></script>
これは起こっていません。これはmodels_MenuItem is not defined
、モジュールが正しい順序でロードされていない場合に通常発生するエラーです。requirejs オプティマイザーでビルドされたファイルと、ビルド前の元の JavaScript は正常に動作します。amdclean の構成を修正するか、問題が実際にどこにあるのかを特定するのを手伝ってください。