Nano Hash - криптовалюты, майнинг, программирование

Что может привести к тому, что gulp-typescript каждый раз будет генерировать разные выходные данные

Мы используем gulp-typescript на нашем сервере сборки, и внезапно сгенерированный javascript иногда не работает. Мы проследили это до того, что сгенерированный javascript находится в произвольном порядке в сгенерированном файле.

У меня складывается впечатление, что использование outFile — это плохо https://basarat.gitbooks.io/typescript/content/docs/tips/outFile.html и, возможно, пришло время создать правильную модульную систему. Просто кажется странным, что он вдруг терпит неудачу.

Какую модульную систему предпочесть, если это решение?

gulpfile.js выглядит примерно так:

var gulp = require("gulp");
var sourcemaps = require('gulp-sourcemaps');
var ts = require('gulp-typescript');
var tsLint = require('gulp-tslint');

var tsProject = ts.createProject('tsconfig.json', {}, ts.reporter.longReporter());

var config = {
    maps: './maps',
    scripts: './content/scripts'
};

gulp.task('tslint', function() {
    return tsProject.src()
        .pipe(tsLint({
            configuration: {
                rules: { "semicolon": true }
            }
        }))
        .pipe(tsLint.report('verbose'));
});

gulp.task('typescript',['tslint'], function() {
    var tsResult = tsProject.src()
        .pipe(sourcemaps.init())
        .pipe(ts(tsProject))
        .pipe(sourcemaps.write(config.maps))
        .pipe(gulp.dest(config.scripts));
    return tsResult;    

});

и tsconfig.json выглядят так:

{
  "compilerOptions": {
    "declaration": false,
    "noEmitOnError": false,
    "noImplicitAny": false,
    "removeComments": false,
    "target": "es5",
    "outFile": "application.js"
  },
  "files": [
      "list of all the files"       
  ]
}

Ответы:


1

Использование outfile действительно не рекомендуется. Басарат объясняет на странице, на которую вы ссылаетесь

Если ваш код зависит от какой-либо формы упорядочения js, вы получите случайные ошибки во время выполнения.

Ко второй части вашего вопроса.


В конечном счете, какую модульную систему вы хотите использовать, в основном зависит от вашего мнения.

Потому что...

  • Большинство сборщиков могут обрабатывать несколько различных типов модулей.
  • Чтобы смоделировать ваш текущий рабочий процесс, вы будете загружать свои модули непосредственно в свой сборщик, так что вы все равно никогда не будете смотреть на них.
  • Компилятор машинописного текста относительно легко справится с выводом любого из них.
  • Это будет выглядеть так же, как вы пишете фактический машинописный код

Субъективно, CommonJS кажется одним из самых популярных (отчасти, я полагаю, потому что у него есть история, отчасти потому, что он используется по умолчанию, когда вы автоматически генерируете tsconfig.json. AMD также делает раунды, require был популярным загрузчиком модулей для некоторых время и был особенно интересен людям, которые хотели выполнять динамическую загрузку JS-активов.SystemJS сейчас является новой модой в сообществе JS, и у нее также есть собственная спецификация модуля, но она может загружать все остальные, поэтому я не зная веских причин использовать системный формат вместо альтернатив.

Пока вы не начнете заботиться о динамической загрузке, просто выберите тот, который наиболее эстетичен или имеет самое крутое имя.

17.10.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..