Pet*_*ter 8 amd requirejs js-amd almond r.js
在我的grunt.js文件中,我有
requirejs: {
dist: {
options: {
almond: true,
wrap: true,
modules: [{name: 'main'}],
mainConfigFile: "src/js/main.js",
baseUrl: "src/js",
dir: "tmp/js",
inlineText: true,
preserveLicenseComments: false
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行使用一些缩小的文件grunt requirejs:dist填充tmp/js目录 - 其中包括一个大的main.js文件(所有内容似乎都按预期捆绑在此文件中) - 但是当我想要包含此文件时
<script type="text/javascript" src="tmp/main.js"></script>
Run Code Online (Sandbox Code Playgroud)
它导致了 "Uncaught ReferenceError: define is not defined"
使用杏仁的意图是我不需要加载require.js文件来加载我的opimized文件 - 任何想法如何让它工作?
脚注:我已经设法这样做,除了之前main-built.js已经编译了一个文件,但是这似乎不再是这种情况了(更新... -.-)
所以我尝试使用以下文件和文件夹设置一个空目录
/grunt.js
/src/js/main.js
/tmp/js
Run Code Online (Sandbox Code Playgroud)
这是我的 grunt.js:
module.exports = function(grunt) {
grunt.loadNpmTasks("grunt-requirejs");
grunt.initConfig({
requirejs: {
dist: {
options: {
almond: true,
wrap: true,
modules: [{name: 'main'}],
mainConfigFile: "src/js/main.js",
baseUrl: "src/js",
dir: "tmp/js",
inlineText: true,
preserveLicenseComments: false
}
}
}
});
grunt.registerTask("default", "requirejs");
};
Run Code Online (Sandbox Code Playgroud)
这是我的 main.js:
define(function() {
console.log('hi');
});
Run Code Online (Sandbox Code Playgroud)
我在控制台中运行了这些命令:
npm install grunt
npm install requirejs
npm install grunt-requirejs
grunt --gruntfile grunt.js
Run Code Online (Sandbox Code Playgroud)
咕噜输出:
Running "requirejs:dist" (requirejs) task
>> RequireJS optimizer finished
Uncompressed size: 14234 bytes.
Compressed size: 1265 bytes gzipped. (2633 bytes minified)
Run Code Online (Sandbox Code Playgroud)
/tmp/js/main.js 中的结果文件确实引用了杏仁。但它没有提到定义函数,因为 js 已被最小化。我对 的调用define(被重写为n(.
我怀疑您可能在调用定义的最小化文件之外有代码。
另外,在我的其他项目中,我的 mainConfigFile 仅作为配置文件引用,而不作为模块加载。