javascript - 在具有多个子目录的大型 Javascript 项目上使用 grunt

标签 javascript gruntjs organization

我有一个带有多个子目录的 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/

相关文章:

javascript - 如何检测浏览器是否支持prefers-color-scheme

javascript - 使用 Grunt-Replace 替换 HTML 标签

javascript - 无法在 WebStorm 中列出 Grunt 任务错误

node.js - 咕噜声 - 得到 "Local Npm module "xxx"not found. 它是安装 ?"What' s 造成的吗?

python - 如何根据该类的帮助文件正确组织 Python 类定义?

python - 为不同版本的 Python 维护不同版本代码库的工作流

javascript - Angular JS : Cannot read property 'then' of undefined

javascript - DoubleClick 广告不适用于 list 文件

javascript - 使用 jquery 的 javascript 中的可访问性和代码组织问题

javascript - 使用 Javascript 从复选框传递值