npm开发流程

场景:开发一个库foobar,在app中测试和使用。

方案一:link

将开发中的foobar link到全局,然后在app中通过link安装。

cd path/to/foobar
npm link

cd path/to/app
npm link foobar

然后就可以按正常流程编译和使用了。

缺陷:

  • 由于foobar的实际路径不在node_modules中,可能会被webpack强制进行二次编译,出现意外的问题。

方案二:publish

发布一个测试版。

cd path/to/foobar
npm version [ premajor | preminor | prepatch | prerelease | 1.0.0-alpha.0 ]
npm publish --tag next

cd path/to/app
npm install foobar@next

如果不传--tag next,则相当于用了--tag latest
为了防止发布的时候忘记加tag,可以在package.json里加上:

{
  "publishConfig": {
    "tag": "next"
  }
}

然后就跟使用正式版的流程没有什么区别了。

缺陷:

  • 每次改动都需要重新发版。

附:正式发布

# 附:正式发布
cd path/to/foobar
npm version [ major | minor | patch | 1.0.0 ]
npm publish

# 使用正式版
cd path/to/app
npm install foobar@*

附:几点建议

  • 不要将强大的npm versionnpm publish写死到npm命令中。
  • 可以通过preversionprepublish等钩子来实现一些前置或后置操作,从而避免上一条中提到的情况。

为了方便使用,可以这样配置foobar/package.json

{
  ...
  "scripts": {
    ...
    "prepublish": "npm run ci && npm run build"
  }
}

你可能感兴趣的:(npm开发流程)