@ shopify / polaris项目是如何从github repo构建到npm依赖项的?

时间:2017-04-23 02:20:19

标签: node.js github npm

我有兴趣了解如何构建github中的@shopify/polaris项目并将其发布到npm。我的主要问题是:

  • 如何生成index.es.jsindex.js个文件?这些是以编程方式在我的计算机上生成的,还是以这样的方式发布到npm
  • 什么机制阻止github repo中的文件在安装时被下载?我没有在回购邮件中看到.npmignore

下面我有npm包中的文件和github,你可以看到它们不同。

以下是polaris项目在通过NPM /纱线安装时的样子。

.
├── CHANGELOG.md
├── README.md
├── index.es.js
├── index.js
├── package.json
├── src
├── styles
├── styles.css
├── styles.scss
└── types

这是github上项目的样子。

.
├── CHANGELOG.md
├── README.md
├── circle.yml
├── config
├── documentation
├── examples
├── package.json
├── scripts
├── src
├── tests
├── tsconfig.json
├── tslint.json
└── yarn.lock

1 个答案:

答案 0 :(得分:0)

我们使用Rollup为Polaris生成不同的条目文件。您可以在此处查看我们的通用配置文件:https://github.com/Shopify/polaris/blob/master/config/rollup/index.js。请注意,它完成了编译TypeScript源文件(使用TypeScript和Babel)的所有工作,并开始根据需要捆绑CSS和图标所需的工作。然后,此配置生成器运行三次,您可以在此处看到:https://github.com/Shopify/polaris/blob/master/scripts/build.js#L36-L38

  1. main条目文件(.js,并为我们的CDN吐出CSS)
  2. module条目文件(.es.js
  3. embedded条目文件
  4. 然后我们将这些复制到NPM发布的最终位置。

    至于我们如何控制NPM包中的文件,我们使用package.json中的files key; these are the relevant lines