2016-12-20 7 views
1

Я работаю над проектом, в котором у нас есть файлы js и ts, и они должны быть объединены в один файл пакета.Как скомпилировать javascript вместе с машинописным текстом в один пакет?

Я использую Глоток-машинопись и моя конфигурация выглядит следующим образом:

  gulp.src(cfg.ts_src) 
        .pipe(sourcemaps.init()) 
        .pipe(typescript({ 
         allowJs: true, 
         declaration: false, 
         diagnostics: false, 
         emitDecoratorMetadata: true, 
         experimentalDecorators: true, 
         module: "system", 
         moduleResolution: "classic", 
         noImplicitAny: true, 
         outFile: "./" + cfg.file, 
         preserveConstEnums: true, 
         pretty: true, 
         removeComments: true, 
         rootDir: "./static/" + cfg.dest, 
         target: "es5", 
        })) 
       .pipe(sourcemaps.write('.', { sourceRoot: "/static/", includeContent: false })) 

У меня есть проблема в том, что когда configutation содержит только JS файлы, он создает пакет с кодом. Но когда в конфигурации есть как js, так и ts-файл, машинописный текст игнорирует файлы javascript и только компилирует ts-файлы.

Как создать пакет, содержащий код из файлов js и ts, а также все еще иметь рабочие файлы для файлов ts?

+0

Попробуйте сначала скомпилировать все файлы TS и поместить их в каталог temp, а затем собрать все эти файлы со всеми вашими другими js-файлами. –

+0

Будет ли у меня еще есть исходные тексты типов? – gemrey

+0

просто скопируйте их в свой последний каталог со всеми файлами –

ответ

0

Попробуйте сначала скомпилировать все файлы TS и поместить их в каталог temp, а затем собрать все эти файлы со всеми другими JS-файлами. Также скопируйте все файлы исходной карты в конечный каталог.

+1

Сделал это и работает, иногда самый простой способ сделать это лучше! – gemrey

0

Похоже, вы используете старую версию глоссово-машинописного текста. Может быть, это проблема? Ниже задача, которая работает для меня и излучает как скомпилированные Ts + карты и любые сырые JS:

gulp.task('build.js.dev',() => 
{ 
    var tsProject = ts.createProject('tsconfig.json', { 
     typescript: require('typescript') 
    }); 

    var tsResult = tsProject.src() 
     .pipe(sourcemaps.init()) 
     .pipe(tsProject()); 

    return merge([ 
     //Write definitions 
     //tsResult.dts.pipe(gulp.dest(TEMP_TARGET_FOLDER)), 
     //Write compiled js 
     tsResult.js.pipe(sourcemaps.write(
      ".", 
      { 
       includeContent: true, 
       sourceRoot: __dirname + "/dist" 
      })).pipe(gulp.dest(TEMP_TARGET_FOLDER))]); 
}); 

Примечание часть: tsResult.js.pipe(sourcemaps.write(

Вы можете обратиться к Глоток-машинопись документы для более образцов.

TSconfig очень похож на ваши варианты:

{ 
"compilerOptions": { 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "moduleResolution": "node", 
    "module": "commonjs", 
    "target": "es6", 
    "sourceMap": true, 
    "outDir": "dist", 
    "declaration": false, 
    "allowJs": true, 
    "jsx": "react", 
    "forceConsistentCasingInFileNames": true, 
    "types": [ 
     "node", 
     "jasmine" 
    ] 
}, 
"exclude": [ 
    "./node_modules", 
    "./dist", 
    "./.vscode" 
] 
} 

Надеется, что это помогает.

+0

Я использую последний, но, возможно, старый способ его настройки. Я пытаюсь скомпилировать его в один файл - твой не то, что я вижу. Но я решил это сейчас. – gemrey