受け入れられた答えが役に立たないと思います。私はそれが古い質問であることを知っていますが、同じ問題に遭遇したので、スレッドスターターではなく、同じ状況にある人々のための私の解決策を次に示します。
おそらくあなたが抱えている主な問題は、require-files が間違った方法でセットアップされていることです。grunt ジョブにすべてのファイルが含まれていない理由は、ファイルが適切に必要とされていないか、定義されていないことが原因である可能性が最も高いです。それはうなり声の仕事とは何の関係もありません。
構成ファイル (あなたの場合は app.js) を用意するだけでは十分ではありません。ファイルを要求する必要もあります。たとえば、main.js ファイルでそれを行うことができます。
require(["global","highcharts-chartdata"], function () {});
動作する私のセットアップを見てください。フォルダ構造は次のとおりです。
Project
|
├───dist
| ├───css
| | bundle.css
| ├───fonts
| ├───images
| └───js
| bundle.js
| index.html
|
└───src
├───js
│ └───vendor
│ ├───bootstrap
│ ├───highcharts
│ ├───jquery
│ └───require
| require.js
| charts.js
| global.js
| main.js
| require.config.js
└───less
├───bootstrap
│ └───mixins
├───bootstrap_overrides
└───font-awesome
gruntfile.js
これは私のうなり声です:
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
jshint: {
files: ['src/js/*.js'],
options: {
globals: {
$: false,
console: true,
module: true,
document: true
}
}
},
less: {
compile: {
options: {
paths: ['src/less'],
plugins: [
new (require('less-plugin-autoprefix'))({browsers: ["last 2 versions"]}),
new (require('less-plugin-clean-css'))
]
},
files: {
'dist/css/bundle.css': 'src/less/style.less'
}
}
},
requirejs: {
compile: {
options: {
baseUrl: "src/js",
mainConfigFile: 'src/js/require.config.js',
paths: {
requireLib: "vendor/require/require"
},
include: "requireLib",
name: "require.config",
out: "dist/js/bundle.js"
}
}
},
watch: {
files: ['src/js/*.js','src/less/**/*.less'],
tasks: ['jshint','less','requirejs']
}
});
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-less');
grunt.loadNpmTasks('grunt-contrib-requirejs');
// Default task(s).
grunt.registerTask('default', ['jshint','less','requirejs']);
};
これはrequire.configファイルです:
requirejs.config({
baseUrl: 'js',
paths: {
"jquery": "vendor/jquery/jquery",
"jquery-ui": "vendor/jquery/jquery-ui",
"bootstrap-collapse": "vendor/bootstrap/collapse",
"bootstrap-transition": "vendor/bootstrap/transition",
"highcharts": "vendor/highcharts/highcharts-4.1.4.min",
"highcharts-chartdata": "charts"
},
shim: {
"bootstrap": ["jquery"],
"jquery-ui": ["jquery"],
"bootstrap-collapse": ["jquery"],
"bootstrap-transition": ["jquery"],
"highcharts" : ["jquery"],
"highcharts-chartdata" : ["highcharts"]
}
});
// Load the main app module to start the app
requirejs(["main"]);
上記の行requirejs(["main"]);
が実際に私の main.js ファイル (以下) のコードを「ロード」していることに注意してください。これは、他のファイルをロードしています。
require(["global","highcharts-chartdata"], function () {});
それらがないと、grunt-contrib-requirejs は何を含めるかわかりません。
この例では、単一の js ファイル (optimized.js) を出力して、開始ページ (index.html) に含めたいと考えています。これが機能するためには、require.js-script も追加する必要があることを指摘したいと思います。これがないと、コンソールはrequire is not defined
. これを行うには、gruntfile に次の行を追加するだけです。
paths: {
requireLib: "vendor/require/require"
},
include: "requireLib",
ここでそれについて読むことができます: http://requirejs.org/docs/optimization.html#onejs