Gruntfile машинопись и бабел - PullRequest
       102

Gruntfile машинопись и бабел

0 голосов
/ 26 октября 2019

Я работаю в проекте, в котором есть несколько файлов .ts и некоторые файлы .js. Я работаю с Grunt для приложения SmartTV Tizen.

В настоящее время у меня есть этот Gruntfile:

'use strict';

module.exports = function(grunt) {
    grunt.initConfig({
        jshint: {
            options: {
                jshintrc: '.jshintrc',
            },
            src: ['www/**/*.js']
        },
        clean: ['platforms/sectv-orsay/www/**/*' , 'platforms/sectv-orsay/build/*' , 'platforms/sectv-tizen/www/**/*' , 'platforms/sectv-tizen/build/*', 'platforms/tv-webos/www/**/*' , 'platforms/tv-webos/build/*'],
        'sectv-prepare': {
            'sectv-orsay': {
                dest: 'platforms/sectv-orsay/www',
                platformRepos: '../cordova-sectv-orsay',
                scripts: {
                    'cordova.js': '../cordova-js/pkg/cordova.sectv-orsay.js',
                    'toast.js': '../cordova-plugin-toast/platform_www/sectv-orsay/toast.js'
                }
            },
            'sectv-tizen': {
                dest: 'platforms/sectv-tizen/www',
                platformRepos: '../cordova-sectv-tizen',
                scripts: {
                    'cordova.js': '../cordova-js/pkg/cordova.sectv-tizen.js',
                    'toast.js': '../cordova-plugin-toast/platform_www/sectv-tizen/toast.js'
                }
            },
            'tv-webos': {
                dest: 'platforms/tv-webos/www',
                platformRepos: '../cordova-tv-webos',
                scripts: {
                    'cordova.js': '../cordova-js/pkg/cordova.tv-webos.js',
                    'toast.js': '../cordova-plugin-toast/platform_www/tv-webos/toast.js'
                }
            }
        },
        'sectv-build': {
            'sectv-orsay': {
                www: 'platforms/sectv-orsay/www',
                dest: 'platforms/sectv-orsay/build'
            },
            //CERTIFICATE LOCATION
            'sectv-tizen': {
                profilePath: '../../../../../Users/development/tizen-studio-data/profile/profiles.xml',
                profileName: 'Bexfy',
                www: 'platforms/sectv-tizen/www',
                dest: 'platforms/sectv-tizen/build'
            },
            'tv-webos': {
                www: 'platforms/tv-webos/www',
                dest: 'platforms/tv-webos/build'
            }
        },
        outdir: 'www/dist',
        concat: {
        css: {
            src: [ 'js/lib/ionic/css/ionic.min.css',
                   'css/index.css',
                   'css/index copy.css',
                   'css/video.css',
                   'view/Main/Main.css'],
            dest: '<%= outdir %>/style.css'
        },
        js: {

            src: [ 'www/js/app.js',
                   'www/js/services/InstrumentationCls.js',
                   'www/js/services/DataServ.js',
                   'www/view/Main/Main.js',
                   'www/js/lib/qrcode-generator-master/js/qrcode.js',
                   'www/js/lib/qrcode-generator-master/js/qrcode_UTF8.js',
                   'www/js/lib/angular-qrcode-master/angular-qrcode.js',
                   'node_modules/bottlejs'],
            dest: '<%= outdir %>/bundle.js'
        }
        },
        uglify: {
        options: {
            mangle: false
        },
        build: {
            src: ['<%= outdir %>/bundle.js'],
            dest: '<%= outdir %>/bundle.min.js'
        }
        }

    });

    // external tasks
    grunt.loadNpmTasks('grunt-contrib-jshint');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');

    // custom tasks
    grunt.loadNpmTasks('grunt-cordova-sectv');

    // defaults
    grunt.registerTask('default', ['jshint', 'clean', 'sectv-prepare', 'sectv-build']);

    grunt.registerTask('CompileTizen', ['clean','concat','uglify', 'sectv-prepare:sectv-tizen', 'sectv-build:sectv-tizen']);

    grunt.registerTask('CompileWebos', ['clean','concat','uglify', 'sectv-prepare:tv-webos', 'sectv-build:tv-webos']);

};

Это прекрасно работает для создания необходимых файлов для Tizen. Но моя проблема в том, что для работы с Tizen мне нужно сначала преобразовать мои .ts файлы в .js, а также, если возможно, преобразовать в более старую ecma.

Я пробовал следующее:

 grunt.initConfig({
        babel: {
            options:{
                sourceMap:true,
                presets:['@babel/preset-env']                
            },
            dist: {
                files: [{
                    expand: true,
                    cwd: 'www/js',
                    src: ['*.js'],
                    dest:'www/dist/'
                    // 'www/dist':'www/**/*.js'
                }]
            }
        }
...

А также:

babel: {
             options:{
                 sourceMap:true,
                 presets:[
                     '@babel/preset-env',
                     "@babel/preset-typescript"]                
             },
             dist: {
                 files: [{
                     expand: true,
                     cwd: 'www/',
                     src: ['*.js', '*.ts'],
                     dest:'www/dist/'
                 }]
             }
         }

Но это не дает ожидаемых результатов. Кроме того, я не знаю, как включить его в остальную часть конфигурации.

Также это моя иерархия папок:

enter image description here

Как можно было бы завершить конфигурационный файл, который я сначала разместил, а также переводить файлы .ts и .js в файлы ecma5 .js?

...