简体   繁体   中英

Yeoman Gruntfile dist task Not copying styles from .tmp folder (AngularJs)

For some reason my Angular grunt task is not copying the stylesheets from the .tmp folder when I run "grunt". "Grunt server" works fine.

I've been staring at this for quite some time and have tried a couple different things, however it's not working for me, any help would be greatly appreciated!

// Generated on 2013-11-05 using generator-angular 0.5.1
'use strict';
var LIVERELOAD_PORT = 35729;
var mountFolder = function (connect, dir) {
    return connect.static(require('path').resolve(dir));
};

// # Globbing
// for performance reasons we're only matching one level down:
// 'test/spec/{,*/}*.js'
// use this if you want to recursively match all subfolders:
// 'test/spec/**/*.js'

module.exports = function (grunt) {
    require('load-grunt-tasks')(grunt);
    require('time-grunt')(grunt);

    // configurable paths
    var yeomanConfig = {
        app: 'app',
        dist: 'dist'
    };

    try {
        yeomanConfig.app = require('./bower.json').appPath || yeomanConfig.app;
    } catch (e) {}

    grunt.initConfig({
        yeoman: yeomanConfig,
        watch: {
            // coffee: {
            //   files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],
            //   tasks: ['coffee:dist']
            // },
            // coffeeTest: {
            //   files: ['test/spec/{,*/}*.coffee'],
            //   tasks: ['coffee:test']
            // },
            compass: {
                files: ['<%= yeoman.app %>/styles/{,*/}*.{scss,sass}'],
                tasks: ['compass:server', 'autoprefixer']
            },
            styles: {
                files: ['<%= yeoman.app %>/styles/{,*/}*.css'],
                tasks: ['copy:styles', 'autoprefixer']
            },
            livereload: {
                options: {
                    livereload: LIVERELOAD_PORT
                },
                files: [
                    '<%= yeoman.app %>/{,*/}*.html',
                    '.tmp/styles/{,*/}*.css',
                    '{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
                    '<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
                ]
            }
        },
        autoprefixer: {
            options: ['last 1 version'],
            dist: {
                files: [{
                    expand: true,
                    cwd: '.tmp/styles/',
                    src: '{,*/}*.css',
                    dest: '.tmp/styles/'
                }]
            }
        },
        connect: {
            options: {
                port: 9000,
                // Change this to '0.0.0.0' to access the server from outside.
                hostname: 'localhost'
            },
            livereload: {
                options: {
                    middleware: function (connect) {
                        return [
                            mountFolder(connect, '.tmp'),
                            mountFolder(connect, yeomanConfig.app)
                        ];
                    }
                }
            },
            test: {
                options: {
                    middleware: function (connect) {
                        return [
                            mountFolder(connect, '.tmp'),
                            mountFolder(connect, 'test')
                        ];
                    }
                }
            },
            dist: {
                options: {
                    middleware: function (connect) {
                        return [
                            mountFolder(connect, yeomanConfig.dist)
                        ];
                    }
                }
            }
        },
        open: {
            server: {
                url: 'http://localhost:<%= connect.options.port %>'
            }
        },
        clean: {
     options: { force: true },
            dist: {
                files: [{
                    dot: true,
                    src: [
                        '.tmp',
                        '<%= yeoman.dist %>/*',
                        '!<%= yeoman.dist %>/.git*'
                    ]
                }]
            },
            server: '.tmp'
        },
    // jshint: {
        //   options: {
        //       jshintrc: '.jshintrc'
        //   },
        //   all: [
        //       'Gruntfile.js',
        //       '<%= yeoman.app %>/scripts/{,*/}*.js'
        //   ]
        // },
        // coffee: {
        //   options: {
        //       sourceMap: true,
        //       sourceRoot: ''
        //   },
        //   dist: {
        //       files: [{
        //           expand: true,
        //           cwd: '<%= yeoman.app %>/scripts',
        //           src: '{,*/}*.coffee',
        //           dest: '.tmp/scripts',
        //           ext: '.js'
        //       }]
        //   },
        //   test: {
        //       files: [{
        //           expand: true,
        //           cwd: 'test/spec',
        //           src: '{,*/}*.coffee',
        //           dest: '.tmp/spec',
        //           ext: '.js'
        //       }]
        //   }
        // },
        compass: {
            options: {
                sassDir: '<%= yeoman.app %>/styles',
                cssDir: '.tmp/styles',
                generatedImagesDir: '.tmp/images/generated',
                imagesDir: '<%= yeoman.app %>/images',
                javascriptsDir: '<%= yeoman.app %>/scripts',
                fontsDir: '<%= yeoman.app %>/fonts',
                importPath: '<%= yeoman.app %>/bower_components',
                httpImagesPath: '/images',
                httpGeneratedImagesPath: '/images/generated',
                httpFontsPath: '/fonts',
                relativeAssets: false
            },
            dist: {},
            server: {
                options: {
                    debugInfo: true
                }
            }
        },
        // not used since Uglify task does concat,
        // but still available if needed
        /*concat: {
            dist: {}
        },*/
        rev: {
            dist: {
                files: {
                    src: [
                        // removed these as the prod server wont like all the new commits
                        // '<%= yeoman.dist %>/scripts/{,*/}*.js',
                        // '<%= yeoman.dist %>/styles/{,*/}*.css',
                        // '<%= yeoman.dist %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', HAD TO REMOVE THIS SINCE IT WASN"T REVVING SOME FILES
                        // '<%= yeoman.dist %>/fonts/*'
                    ]
                }
            }
        },
        useminPrepare: {
            html: '<%= yeoman.app %>/index.html',
            options: {
                dest: '<%= yeoman.dist %>'
            }
        },
        usemin: {
            html: ['<%= yeoman.dist %>/{,*/}*.html'],
            css: ['<%= yeoman.dist %>/styles/{,*/}*.css'],
            options: {
                dirs: ['<%= yeoman.dist %>']
            }
        },
        imagemin: {
            dist: {
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.app %>/images',
                    src: '{,*/}*.{png,jpg,jpeg}',
                    dest: '<%= yeoman.dist %>/images'
                }]
            }
        },
        // svgmin: {
        //   dist: {
        //       files: [{
        //           expand: true,
        //           cwd: '<%= yeoman.app %>/images',
        //           src: '{,*/}*.svg',
        //           dest: '<%= yeoman.dist %>/images'
        //       }]
        //   }
        // },
        cssmin: {
            // By default, your `index.html` <!-- Usemin Block --> will take care of
            // minification. This option is pre-configured if you do not wish to use
            // Usemin blocks.
            // dist: {
            //   files: {
            //       '<%= yeoman.dist %>/styles/main.css': [
            //           '.tmp/styles/{,*/}*.css',
            //           '<%= yeoman.app %>/styles/{,*/}*.css'
            //       ]
            //   }
            // }
        },
        htmlmin: {
            dist: {
                options: {
                    /*removeCommentsFromCDATA: true,
                    // https://github.com/yeoman/grunt-usemin/issues/44
                    //collapseWhitespace: true,
                    collapseBooleanAttributes: true,
                    removeAttributeQuotes: true,
                    removeRedundantAttributes: true,
                    useShortDoctype: true,
                    removeEmptyAttributes: true,
                    removeOptionalTags: true*/
                },
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.app %>',
                    src: ['*.html', 'views/{,*/}{,*/}{,*/}{,*/}{,*/}{,*/}*.html'],
                    dest: '<%= yeoman.dist %>'
                }]
            }
        },
        // Put files not handled in other tasks here
        copy: {
            dist: {
                files: [{
                    expand: true,
                    dot: true,
                    cwd: '<%= yeoman.app %>',
                    dest: '<%= yeoman.dist %>',
                    src: [
                        '*.{ico,png,txt}',
                        '.htaccess',
                        'bower_components/**/*',
                        'images/**/*',
                        'scripts/**/*',
                        'staticData/**/*',
                        'fonts/*'
                    ]
                }, {
                    expand: true,
                    cwd: '.tmp/images',
                    dest: '<%= yeoman.dist %>/images',
                    src: [
                        'generated/*'
                    ]
                }]
            },
            styles: {
                expand: true,
                cwd: '<%= yeoman.app %>/styles',
                dest: '.tmp/styles/',
                src: '{,*/}*.css'
            }
        },
        concurrent: {
            server: [
                // 'coffee:dist',
                'compass:server',
                'copy:styles'
            ],
            test: [
                // 'coffee',
                'compass',
                'copy:styles'
            ],
            dist: [
                // 'coffee',
                'compass:dist',
                'copy:styles',
                'imagemin',
                // 'svgmin',
                'htmlmin'
            ]
        },
        // karma: {
        //   unit: {
        //       configFile: 'karma.conf.js',
        //       singleRun: true
        //   }
        // },
        cdnify: {
            dist: {
                html: ['<%= yeoman.dist %>/*.html']
            }
        },
        ngmin: {
            dist: {
                files: [{
                    expand: true,
                    cwd: '<%= yeoman.dist %>/scripts',
                    src: '*.js',
                    dest: '<%= yeoman.dist %>/scripts'
                }]
            }
        },
        uglify: {
            dist: {
                files: {
                    '<%= yeoman.dist %>/scripts/app.js': [
                        '<%= yeoman.dist %>/scripts/app.js'
                    ]
                }
            }
        }
    });

    grunt.registerTask('server', function (target) {
        if (target === 'dist') {
            return grunt.task.run(['build', 'connect:dist:keepalive']);
        }

        grunt.task.run([
            'clean:server',
            'concurrent:server',
            'autoprefixer',
            'connect:livereload',
            'watch'
        ]);
    });

    grunt.registerTask('test', [
        'clean:server',
        'concurrent:test',
        'autoprefixer',
        'connect:test'
        // 'karma'
    ]);

    grunt.registerTask('build', [
        'clean:dist',
        // 'useminPrepare',
        'concurrent:dist',
        'autoprefixer',
        // 'concat',
        'copy:dist',
        'cdnify',
        'ngmin',
        // 'cssmin',
        // 'uglify',
        'rev',
        // 'usemin'
    ]);

    grunt.registerTask('default', [
        // 'jshint',
        'test',
        'build'
    ]);
};

I guess it is actually copying them, but it will remove the right after that... The thing is when you call grunt it will call default task.

So first is the test task, which will copy styles via concurrent:test

But as soon as test is done, build is called, and the first thing it does is clean:dist which will remove those styles

If you want to have them anyway, you can add copy:styles after copy:dist in the build task

grunt.registerTask('build', [
    'clean:dist',
    'concurrent:dist',
    'autoprefixer',
    'copy:dist',
    'copy:styles',
    'cdnify',
    'ngmin',
    'rev'
]);

取消注释“ cssmin”似乎已解决了此问题(由于某种原因)...

如果您在'scripts'和'styles'dir中有子目录,请将Gruntfile.js中的所有{,* /} *替换为** / *。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM