使用grunt更新包依赖版本号

时间:2016-02-22 09:42:20

标签: gruntjs

我有两个项目EasyUI和EasyUI-Layout。 EasyUI-Layout依赖于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-Layout项目时,其包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-Layout时我希望package.json为:

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

我认为这可能是碰撞或碰撞?但是一些实验让我无处可去。

2 个答案:

答案 0 :(得分:0)

不,应该手动指定这些类型的东西。您可以使用semver范围来自动安装包

答案 1 :(得分:0)

让我回答我自己的问题。由于我将EasyUI发布到npmjs.org,因此我们假设最新版本在那里。这是EasyUI-Layout软件包的删节grunt文件:

grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'),
  shell: {
    npm: {
      command: [
        'npm install easyui@latest --save'
      ].join('&&')
    }
  }
});

这只是迫使npm安装最新版本的EasyUI并更新package.json文件。

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