• #
    ‫۸ سال و ۳ ماه قبل، جمعه ۲۱ خرداد ۱۳۹۵، ساعت ۰۲:۳۱
    با توجه به این که در npm3 مشکل nested بودن وابستگی‌ها برطرف شده است، شاید بتوان گفت خیلی نیازی به استفاده همزمان از هر دو نباشد. ولی مطلبی که گاهی اوقات مورد غفلت قرار می‌گیرد این است که در صفحات به طور مستقیم به بسته‌های مورد نظر، آدرس‌دهی می‌شود مانند
    <head>
        <link href="node_modules/normalize.css/normalize.css" rel="stylesheet" />
        <link href="node_modules/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
        <link href="node_modules/froala-editor/css/froala_style.min.css" rel="stylesheet" />
        <link href="node_modules/froala-editor/css/froala_editor.min.css" rel="stylesheet" />
    
        <script src="node_modules/jquery/dist/jquery.min.js"></script>
        <script src="node_modules/froala-editor/js/froala_editor.min.js"></script>
        <script src="node_modules/froala-editor/js/languages/fa.js"></script>
    </head>
    در صورتی با یک task ساده ( برای انتقال بسته‌های اصلی مورد نیاز به پوشه دلخواه به طور مثال پوشه wwwroot/lib ) می‌توان مدیریت بهتری روی استفاده از این بسته‌ها داشت:
    module.exports = function (grunt) {
    
        var developer = false;
        var config = {
            libPath: 'wwwroot/lib/',
            nodePath: 'node_modules/',
    
            getNodePackagePath: function (path) {
                return this.nodePath + path;
            },
            getLibPath: function (path) {
                return this.libPath + path;
            }
                }
    
        grunt.initConfig({
            pkg: grunt.file.readJSON('package.json'),
    
            copy: {
                jquery: {
                    files: [{
                        cwd: config.getNodePackagePath('jquery/dist/'),
                        expand: true,
                        src: 'jquery.min*', dest: config.getLibPath('jquery/'),
                    }]
                },
                font_awesome: {
                    files: [
                        {
                            cwd: config.getNodePackagePath('font-awesome/'),
                            expand: true,
                            src: ['css/*.min.css', 'fonts/*'], dest: config.getLibPath('font-awesome/'),
                            filter: 'isFile'
                        },
                    ]
                },
                froala_editor: {
                    files: [
                        {
                            cwd: config.getNodePackagePath('froala-editor/'),
                            expand: true,
                            src: ['css/**/*.min.css', 'js/**', '!js/languages/*.js', 'js/languages/fa.js'], dest: config.getLibPath('froala-editor/')
                        }
                    ]
                },
                normalizecss: {
                    files: [
                        {
                            cwd: config.getNodePackagePath('normalize.css/'),
                            expand: true,
                            src: 'normalize.css', dest: config.getLibPath('normalize.css/')
                        }
                    ]
                }
            },
    
            clean: {
                lib: ['wwwroot/lib/']
            },
        });
    
        grunt.loadNpmTasks("grunt-contrib-clean");
        grunt.loadNpmTasks("grunt-contrib-copy");
    
        grunt.registerTask("default", ['clean', 'copy']);
    };
    <head>
        <link href="wwwroot/lib/normalize.css/normalize.css" rel="stylesheet" />
        <link href="wwwroot/lib/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
        <link href="wwwroot/lib/froala-editor/css/froala_style.min.css" rel="stylesheet" />
        <link href="wwwroot/lib/froala-editor/css/froala_editor.min.css" rel="stylesheet" />
    
        <script src="wwwroot/lib/jquery/jquery.min.js"></script>
        <script src="wwwroot/lib/froala-editor/js/froala_editor.min.js"></script>
        <script src="wwwroot/lib/froala-editor/js/languages/fa.js"></script>
    </head>
    و از node_modules فقط به عنوان مخزن بسته‌ها استفاده شود، بخصوص زمانی که بسته‌هایی مانند grunt هم به صورت local نصب شوند که یک node_modules بلند بالا و سنگین خواهید داشت.