打印稿,糟蹋的任务

Typescript & Uglify Tasks

本文关键字:任务 打印稿      更新时间:2023-09-26

好的,所以我正在玩typescript,并希望用它来减少我的代码,但据我所知,typescript不这样做。所以我像这样创建了我的Gruntfile

module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    ts: {
      default: {
        files: {
          '/js/builds/admin.js': ['/typescript/admin/*.ts'],
          '/js/builds/main.js': ['/typescript/main/*.ts'],
          '/js/builds/public.js': ['/typescript/public/*.ts']
        }
      },
      options: {
        fast: 'never',
        sourceMap: false
      },
    },
    'uglify': {
      options: {
        preserveComments: 'some',
      },
      my_target: {
        files: {
          //Libs Files
          '/assets/js/libs.js': [
            '/js/libs/jquery-3.1.1.min.js',
            '/js/libs/underscore-1.8.3.min.js',
            '/js/libs/backbone-1.3.3.min.js',
          ],
          //Plugin Files
          '/assets/js/plugins.js': [
            '/js/plugins/alertify.min.js',
          ],
          //Admin Build
          '/assets/js/our_admin.js': [
            '/js/builds/admin.js'
          ],
          //Main Build
          '/assets/js/main.js': [
            '/js/builds/main.js'
          ],
          //Public Build
          '/assets/js/public.js': [
            '/js/builds/public.js'
          ]
        }
      }
    },
    watch: {
      'TypeFiles': {
        files: ['/typescript/**/*.ts'],
        tasks: ['ts'],
        options: {
          spawn: false
        },
      },
      'JSFiles': {
        files: ['/js/**/*.js'],
        tasks: ['uglify'],
        options: {
          spawn: false,
        },
      },
    }
  });
  grunt.loadNpmTasks("grunt-ts");
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-watch');
};

,我想做的是得到typescript构建到标准的javascript,然后自动运行我的丑化任务。

就目前而言,如果我添加/编辑任何库或插件文件(因为它们与我的typescript无关),它就会起作用,但是当我编辑typescript文件时,它会构建JS文件,但不会运行uglify任务?

那么在ts任务完成后,我如何让它执行uglify任务呢?

许多谢谢。

我想我有解决这个问题的办法。我将TS任务添加到JSFiles监视任务中,并将typescript文件添加到应该监视的文件列表中,如下所示:

'JSFiles': {
  files: ['/js/**/*.js', '/typescript/**/*.ts'],
  tasks: ['ts', 'uglify'],
  options: {
    spawn: false,
  },
},

现在这可能是最好的选择,因为它将花费一些时间来完成打字和最小化任务。但是我已经在Symfony2中设置了这个项目,我更喜欢设置我的新项目指向prod. files。

谢谢