неверное значение версии в package.json - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь настроить задачу публикации, которая выполняет следующее:

вытащить последние изменения. сделать npm установить. поднять новую версию. создать пакет. Я ввожу переменную, ссылаясь на свойство version в файле package.json. Проблема, с которой я сталкиваюсь, заключается в том, что сгенерированный пакет содержит старое значение версии, которое является значением в начале задачи, а не после шага 3. Ожидаемое поведение что после завершения шага 3 сгенерированный пакет должен иметь правильное значение версии. Фактическое поведение состоит в том, что сгенерированный пакет содержит старую версию с начала основной задачи (publish: test).

Итак, что случилось, я заметил, что основной задачей является сохранение файла package.json в памяти в течение всего интервала задачи, он не читает файл снова после шага 3.

Я внедряю переменную версии в сгенерированный пакет с помощью плагина webpack:

ew webpack.DefinePlugin({
        VERSION: JSON.stringify(require('../package').version),
        SERVER: JSON.stringify(require('../package').TEST_SERVER),
        ENV: JSON.stringify("TEST"),
        LANDING_PAGE: JSON.stringify(require('../package').TEST_LANDING_PAGE)
    })

Код:

gulp.task('bump', function(done) {
    return gulp.src(['./package.json'])
    // bump package.json and bowser.json version
        .pipe(bump({
            type: argv.type || 'patch'
        }))
        // save the bumped files into filesystem
        .pipe(gulp.dest('./'))
        // commit the changed files
        .pipe(git.commit('bump version'))
        // filter one file
        .pipe(filter('package.json'))
        // create tag based on the filtered file
        // push changes into repository
        .pipe(push({
            repository: 'origin',
            refspec: 'HEAD'
        }))
        .on('error', function(error) {
            gutil.log(gutil.colors.red('Error occurs while pushing changes, please try again.'));
            git.reset('HEAD~1', {args:' --hard '}, function (err) {
                if (err) {
                    gutil.log(gutil.colors.red('Please execute the following command before you processed:\n git reset --hard HEAD~1'));
                    done(err)
                } else {
                    done(error);
                }
            });
        })
        .on('end', function (done) {
            // console.log('VERSION$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$', JSON.stringify(require('./package').version));

        })

});

gulp.task('pull-changes', function(done) {
    git.pull(function (err) {
        if (err) {
            const error = 'Unable to pull latest changes, please check your username & password.'
            gutil.log(gutil.colors.red(error));
            done(err);
        } else  {
            done()
        }
    });
});


gulp.task('install-dependencies',  function(done) {
    return gulp.src(['./package.json'])
        .pipe(install({
            npm: '--no-optional', // Either a single argument as a string
        }));
});


// build test bundle.
gulp.task('build:test', gulp.series('clean', gulp.parallel('other', 'webpack:test')));

gulp.task('publish:test', gulp.series('pull-changes', 'install-dependencies', 'bump',  'build:test'));

1 Ответ

0 голосов
/ 31 октября 2018

Я нашел решение, причиной этого является функция кеша в модуле require. Я удалил кэшированную запись после шага 3, и все работает как шарм! Спасением был этот код:

delete require.cache[require.resolve('./package.json')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...