gpt4 book ai didi

requirejs - 如何使用 yeoman、grunt、usemin 2 和 requirejs?

转载 作者:行者123 更新时间:2023-12-03 06:50:18 24 4
gpt4 key购买 nike

我正在尝试使用 Grunt、usemin 2、requirejs 和 uglify。我在构建中观察到,requirejs 没有正确地将我的依赖项包含到我的单个串联构建文件中。当我在/dist 之外运行 index.html 时,在查找“jquery”、“app”和某些第三方 js 文件时会看到错误,或者有时会出现“define is not Defined”。

我阅读了有关 grunt-usemin 的以下问题并删除了 require block ,但这些线程中仍然存在一些问题。

我进行了搜索,发现了这篇文章 How to integrate Yeoman and Requirejs ,这让我明白了,当我从使用 grunt-contrib-requirejs 更改为 grunt-requirejs 时,我看到 Requirejs 优化器正在运行。不幸的是,我仍然看到这些错误:

Uncaught ReferenceError: define is not defined.

我的index.html中有以下内容:

<!-- build:js js/main.js -->
<script src="bower_components/requirejs/require.js"></script>
<script src="js/main.js"></script>
<!-- endbuild -->

这是我的 Grunt 文件:http://jsbin.com/futocusu/3/edit?js

第 112 期有人讨论过要就这个主题创建一篇关于使用 Yeoman 的文章,但我认为它还没有写出来。

有没有人找到使用 usemin v2 与 grunt 和 requirejs 在构建时输出到单个 concat+uglify 文件的最佳方法?我也不确定使用 grunt-contrib-requirejs 和 grunt-requirejs 有什么区别以及何时使用哪一个。

最佳答案

看起来您试图对 main.js 做太多事情。

我在 Gruntfile.js 中有以下构建任务

grunt.registerTask('build', [
'copy', // copies the src directory to dist (htdocs)
'requirejs', // do an r.js build to concat modular dependencies
'concat:head', // concats js in the head
'uglify:head', // compresses js in the head
'uglify:foot', // compresses js in the foot
'cssmin', // minifies and concats css
'usemin', // runs through html and inputs minified js and css
'clean:afterBuild' // deletes files that are not required for build
]);

这里是每个相关的 Grunt 任务(对我来说,这些任务存储在单独的文件中,因为我使用 load-grunt-config)。如果您想在 gruntfile 中使用这些,那么您所需要做的就是获取返回对象中的所有内容,并将其粘贴到 gruntfile 中的任务值中:

复制

module.exports = function (grunt, options) {
return {
main: {
cwd: 'src/',
src: '**',
dest: 'dist/',
expand: true,
flatten: false
},
};
};

requirejs

module.exports = function(grunt, options) {
return {
compile: {
options: {
appDir: "src/to/require/app",
baseUrl: "./",
mainConfigFile: "src/to/require/app/common",
dir: "dist/to/require/app",
// build a common layer
modules: [
{
"name": "common"
}
]
}
}
};
};

连接

module.exports = function (grunt, options) {
return {
head: {
/* other stuff */
},
foot: {
src: [
'dist/to/require/app/some_other_js.js',
'dist/to/require/app/external/require.js',
'dist/to/require/app/external/require.text.js',
'dist/to/require/app/common.js'
],
dest: 'src/to/require/app/compiled_footer_js.js',
}
};
};

丑化

module.exports = function (grunt, options) {
return {
head: {
/* other stuff *
},
foot: {
files: {
'src/to/require/app/compiled_footer_js.min.js': ['src/to/require/app/compiled_footer_js.js']
}
}
};
};

使用分钟

module.exports = function (grunt, options) {
return {
html: [
'src/path/to/index.html'
]
};
};

关于requirejs - 如何使用 yeoman、grunt、usemin 2 和 requirejs?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23998166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com