【问题标题】:Concatenating files from multiple directories with Grunt使用 Grunt 连接来自多个目录的文件
【发布时间】:2016-07-05 11:47:41
【问题描述】:

我有一个节点应用程序,其中代码由它们自己目录中的功能构成。我正在使用 Grunt 将所有这些文件连接在一起。在不破坏任何依赖项的路径的情况下,我应该如何做到这一点?

这是一个示例项目结构:

index.js
config/
    database.js
    auth.js
feature1/
    routes.js
    functions.js
feature2/
    routes.js
    functions.js

路径在index.js 中使用,例如require('./config/database');,所以当我连接它们时(例如到dist/scripts.min.js)我收到错误,因为./config/database.js 文件不存在。我应该如何处理这个问题,并且在这里连接正确的方法?

【问题讨论】:

    标签: node.js gruntjs grunt-contrib-concat


    【解决方案1】:

    文件夹结构:

    /MyApp
        /dist
        /src
            /folder1
                file.js
            /folder2
                file.js
        Gruntfile.js
    

    Gruntfile.js

    'use strict'
    module.exports = function(grunt) {
    
        require('load-grunt-tasks')(grunt)
    
        grunt.initConfig({
            concat: {
                options: {
                },
                dist: {
                  src: ['src/*/*.js'],
                  dest: 'dist/built.js',
                }
            },
        });
    
        grunt.registerTask('default', ["concat"]);
    
    }
    

    这会将 /src 目录内所有文件夹中的所有文件联系到一个文件中:/dist/built.js

    【讨论】:

    • 我仍然遇到同样的问题。当我运行 node dist/built.js 时,我收到“找不到模块”错误,因为 folder1/file1.js 导入了其他模块,例如require('../folder2/file.js'); 并且路径在 dist/built.js 中无效
    • 您能否发布完整的错误并分享您的 .js 文件示例以便我帮助您?
    • 我在这里放了一个非常简单的网络应用程序,只有 2 个相互需要的 JS 文件。 dropbox.com/s/y3hvkfv2ae9e8pg/grunt_so.zip?dl=0 错误是Error: Cannot find module './env'
    • 我认为你误解了 grunt-concat 的使用。它的作用是将多个文件的内容放在一个文件中('dist/built.js')。它编译require("abc")。总之,如果您将 env.js 文件内容更改为 var env = { port: 8080 }; 您可以从 index.js 中删除 require("env") 然后 run built.js
    • 好的,这是否意味着你不能/不应该在你使用 require 的项目中使用 concat?此文件中的 env 文件只是一个示例。实际上,我需要的文件要复杂得多,这就是我将它们分开的原因。如果我必须回到将整个应用程序放在一个文件中,这似乎是一种倒退。是否有更合适的 Grunt 工具来合并文件,同时确保带有 require 的文件不会中断?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-14
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多