纱线包装不会全球升级(从NPM迁移后)

时间:2017-05-18 15:57:33

标签: macos npm jhipster yarnpkg yo

我试图运行yarn global upgrade generator-jhipster,但即使它似乎正在运行并安装最新版本,当我运行yo jhipster它仍然是旧版本并会提示我运行yarn global upgrade generator-jhipster

我在OSX(Mac)上运行

我刚刚开始使用纱线。我以前使用NPM但卸载了NPM。

$HOME/.config/yarn/global/node_modules/.bin在我的道路上,所以这不是问题。

2 个答案:

答案 0 :(得分:1)

当我从NPM切换到Yarn时,在卸载NPM之前,我没有删除NPM安装的软件包。因此,在通过Yarn添加全局包时,符号链接仍然与NPM安装相关联。这导致我在全球范围内通过Yarn升级/添加软件包时遇到问题,因为它没有指向由Yarn管理的新版本。

(我已经通过Homebrew安装了Node和NPM,这就是我最终重新安装NPM的方法:)

brew uninstall --force yarn
brew uninstall --force node
brew install node

然后我删除了所有NPM的全局模块,因为我现在只想使用Yarn。 (确保在执行此操作之前确实要删除所有这些内容!您可能需要运行npm list -g --depth=0以查看NPM为您管理的内容,因此您可以使用Yarn重新安装)在Windows上不起作用,对于Windows版本,请参阅Ollie Bennett's Answer

npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm

以下是它的工作原理:Taken from Kai Sternad's Answer

  • npm ls -gp --depth=0列出了所有全局顶级模块(请参阅ls的cli文档)
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'打印所有实际上不是npm的模块(不以/ npm结尾)
  • xargs npm -g rm删除所有来自上一个管道的全局模块

然后,重新安装纱线。 brew install yarn

请确保您的路径中有$HOME/.config/yarn/global/node_modules/.bin。 (见Yarn Path Setup

在Mac或Linux上:

export PATH="$PATH:`yarn global bin`:$HOME/.config/yarn/global/node_modules/.bin"

然后安装了yo和generator-jhipster(我已经通过Yarn删除了这些)(参见Installing JHipster

yarn global add yo
yarn global add generator-jhipster

添加它最终全局更新到最新版本!

答案 1 :(得分:1)

如果您在按照接受的答案中的步骤操作后仍然在Mac OS Sierra上遇到问题,请尝试使用以下命令:

namespace xxx.Controllers.Api
{
[Route("api/partners")]

public class PartnersController : Controller
{
    private IMeblatRepository _repository;
    private ILogger<PartnersController> _logger;
    private IHostingEnvironment _environment;

    public PartnersController(IMeblatRepository repository, ILogger<PartnersController> logger, IHostingEnvironment environment)
    {
        _repository = repository;
        _logger = logger;
        _environment = environment;
    }

    [HttpGet("")]
    public IActionResult Get()
    {
        try { 
        var results = _repository.GetAllPartners();

        return Ok(Mapper.Map<IEnumerable<PartnersViewModel>>(results));
        }
        catch (Exception ex)
        {
            _logger.LogError($"Failed to get All Partners: {ex}");
            return BadRequest("Bad Request");
        }
    }
    [HttpPost("")]
    public async Task<IActionResult> Post([FromBody]Data data)
    {
        if (ModelState.IsValid)
        {


            var uploads = Path.Combine(_environment.WebRootPath, "uploads");

                if (data.file.Length > 0)
                {
                    using (var fileStream = new FileStream(Path.Combine(uploads, data.file.FileName), FileMode.Create))
                    {
                        await data.file.CopyToAsync(fileStream);
                    }
                }




            //Save to the Database
            var newPartner = Mapper.Map<Partners>(data.newPartner);





            _repository.AddPartner(newPartner);

            if(await _repository.SaveChangesAsync())
            {
                return Created($"api/partners/{data.newPartner.Name}", Mapper.Map<PartnersViewModel>(newPartner));
            }
            else
            {
                return BadRequest("Failed to save to the database");
            }


        }
        return BadRequest(ModelState);
    }



    [HttpDelete("{name}")]
    public async Task<IActionResult> Delete([FromRoute] string name)
    {
        if (ModelState.IsValid)
        {

            var partnerToDelete = _repository.GetPartnerByName(name);
            _repository.RemovePartner(partnerToDelete);

            if (await _repository.SaveChangesAsync())
            {
                return Ok($"api/partners");
            }
            else
            {
                return BadRequest("Failed to remove");
            }


        }
        return BadRequest(ModelState);
    }

}

直接来自Yarn's alternative install methods page

我在macOS Sierra v10.12.5上通过Homebrew安装了Node和Yarn。 Node是版本8.5.0。 NPM是5.3.0版本。

纱线是在v0.24.6。升级到v1.0.2。