我有一个带有多个子目录的 Javascript 项目,每个子目录都有自己的单独项目。我可以只使用一个庞大的 Gruntfile 来为每个项目执行不同的任务,但我宁愿在每个子文件夹中都有一个 Gruntfile。典型的文件结构是这样的
main_folder/
project_1
src
js/
dist/
doc/
Gruntfile.js
package.json
package.json
node_modules/
然后为每个项目重复文件结构
这是我在project_1中的Gruntfile
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build: {
src: 'src/<%= pkg.name %>.js',
dest: 'build/<%= pkg.name %>.min.js'
}
}
});
// Load the plugin that provides the "uglify" task.
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default', ['uglify']);
};
它的任务比我将使用的要少,但错误仍然存在。每当我尝试运行 grunt 时,都会收到错误消息 找不到本地 Npm 模块“grunt-contrib-uglify”。它安装了吗?
,即使我已经将它安装在node_modules中。
如何指定node_modules的位置,或者我是否必须在每个文件夹内重新安装node_modules?
最佳答案
我认为,如果你更明确地告诉 Grunt 在哪里可以找到你的插件,你仍然可以将所有内容保留在同一个地方。例如,以下是我的一个 Gruntfile 中的一些内容:
grunt.loadTasks tasks for tasks in grunt.file.expand '../node_modules/grunt-*/tasks'
作为旁注:我面临着与您完全相同的选择,但做出了相反的选择:整个项目的单个 Gruntfile 并从每个项目子目录创建了到它的符号链接(symbolic link)。事实证明,这是一种将所有内容集中在一个地方的非常简单的方法,并且可以避免许多令人困惑的问题,例如您所面临的问题。
关于javascript - 在具有多个子目录的大型 Javascript 项目上使用 grunt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25087365/