Gruntjs 使用grunt更新包依赖性版本号

Gruntjs 使用grunt更新包依赖性版本号,gruntjs,Gruntjs,我有两个项目EasyUI和EasyUI布局。EasyUI布局取决于EasyUI。我已经设置了grunt文件来构建它们并将它们推送到github。以下是节略的grunt文件: // easyui module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), browserify:..., bumpup: { file: 'pack

我有两个项目EasyUI和EasyUI布局。EasyUI布局取决于EasyUI。我已经设置了grunt文件来构建它们并将它们推送到github。以下是节略的grunt文件:

// easyui
module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    browserify:...,
    bumpup: {
      file: 'package.json'
    },
    shell: {
      git: ...
    },
    watch: ...
  });

  grunt.registerTask('g', ['bumpup', 'browserify', 'shell:git']);
};

// easyui-layout
module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    browserify:...,
    bumpup: {
      file: 'package.json'
    },
    shell: {
      git: ...,
      npm: ...
    },
    watch: ..
  });

  grunt.registerTask('g', ['shell:npm', 'bumpup', 'browserify', 'shell:git']);
};
我想要的是,当我构建并提交EasyUI布局项目时,它的包json将更新为EasyUI的最新版本号。例如,目前package.json中EasyUI依赖项的版本号仍然停留在0.0.0上。以下是节略的package.json文件:

{
  "name": "easyui-layout",
  "version": "0.0.3",
  "dependencies": {
    "easyui": "0.0.0"
  }
}
假设EasyUI版本号为0.0.7,那么下次我使用grunt构建EasyUI布局时,我希望package.json为:

{
  "name": "easyui-layout",
  "version": "0.0.4",
  "dependencies": {
    "easyui": "0.0.7"
  }
}

我想这是可能的颠簸或颠簸?但是一点点的实验并没有让我有任何收获。

不,这些类型的东西应该手动指定。您可以使用semver ranges让软件包自动安装

让我回答我自己的问题。既然我将EasyUI发布到npmjs.org,让我们假设最新版本就在上面。以下是EasyUI布局包的grunt摘要文件:

grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'),
  shell: {
    npm: {
      command: [
        'npm install easyui@latest --save'
      ].join('&&')
    }
  }
});
这只会强制npm安装最新版本的EasyUI并更新package.json文件


就这么简单。不需要其他grunt任务,自定义或其他,与semver无关。

此更新。我发现nope check更新,ncu-u从命令行更新包json。但是,从grunt运行shell任务只是挂起。我认为这可能是由于package.json文件被锁定造成的,但是即使没有-u选项,任务也会挂起。您可以在easyui布局项目中创建自己的grunt任务,该项目读取easyui的package.json文件(您必须告诉任务在何处找到此文件)并在easyui layout package.json中更新easyui版本。对不起,我的意思是npm检查更新而不是nope检查更新@埃莉亚。这是真的。grunt文件只是JavaScript,这很好。如果最坏的情况发生,我可以手工编写代码,假设package.json文件没有被锁定。它不应该被锁定。这个任务创建起来很简单。我不太清楚“您可以使用semver范围自动安装软件包”是什么意思。请查找semver范围及其在npm中的使用方式