鉴于项目的lib/目录不应该被检入Git,因为它包含的文件是派生文件(来自构建过程).当(在开发为例)安装从项目的github上一包lib/目录将不存在,因此,如果包的package.json的main场点(例如)lib/index.js,包无法导入当编译,因为存储库中不存在这些文件因此在安装到的包中node_modules.这意味着需要构建软件包(就像在发布之前一样),只在本地这一次,以便将lib目录(或在构建过程中生成的任何其他文件)添加到模块的目录中.
假设文件的字段中有一个build脚本,是否可以将包配置为在仅从github安装它的情况下自动运行它?如果没有,从github安装时确保构建它的最佳方法是什么?package.jsonscripts
现在有prepublish,prepublishOnly而且prepare生命周期挂钩,但没有提供一个答案,这个问题,因为他们不允许任何方式的安装源进行区分.简而言之,是的,它们允许您构建安装,但它们不允许您仅从github构建安装.当人们从npm安装时,不仅没有理由强制构建,更重要的是,不会安装开发依赖项(例如babel,这对构建至关重要).
我知道有一个策略可以解决这个问题:
lib/目录.gitignore并检入.lib/dir .gitignore并从git中删除dir.但这远非理想.我想这可以通过githook实现自动化.因此,每一个你掌握项目的人都会建立并推动到一个单独的分支.
NPM的Github上有一个封闭的问题没有解决方案 - 只有很多人想要一个解决方案.从这个问题可以清楚地看出,使用prepare不是答案.
我的用例是我正在开发一个用于许多其他项目的模块.我想使用最新版本的模块而不必在每次更新代码库时都向NPM推出一个版本 - 我宁愿在我准备好时推出更少的版本,但我仍然需要使用最新版本的lib在Github上.
注意:我也就此问题与NPM的支持联系,如果收到,我会添加他们的回复.
我正在尝试React.js通过 git/github安装包。
直接通过 npm 安装包可以工作。不幸的是,react-bootstrap/dom-helpers有一个错误,并且存储库所有者/创建者不愿意合并修复。
所以我创建了我自己的repo并应用了手动修复。然后我想通过 git/github 安装它(比创建 npm 包并分发它更快 - 我不知道如何做到这一点)。
所以我添加了一行到我的package.json:
"dependencies": {
[...]
"dom-helpers": "git://github.com/GovPredict/dom-helpers.git",
Run Code Online (Sandbox Code Playgroud)
然后我发现这个 repo 很差package.json(它没有 uesfiles选项等),当你通过安装它git然后检查路径
./node_modules/dom-helpers/
Run Code Online (Sandbox Code Playgroud)
你找到没有源代码的目录(只有默认包含的文件:LICENSE,README.md存在)。
我做了一些改变,它几乎可以工作了......
我说几乎,因为它看起来webpack没有加载 repo 或者......package.json仍然有错误。
当我运行 webpack 开发时,我有
ERROR in ../~/react-big-calendar/lib/Agenda.js
Module not found: Error: Can't resolve 'dom-helpers/class' in '/Users/maciejkowalski/projects/SomeProject/node_modules/react-big-calendar/lib'
resolve 'dom-helpers/class' in '/Users/maciejkowalski/projects/SomeProject/node_modules/react-big-calendar/lib'
Parsed request is a module
using description file: /Users/maciejkowalski/projects/SomeProject/node_modules/react-big-calendar/package.json …Run Code Online (Sandbox Code Playgroud) 我想为开源React Component贡献力量,我想在我的webpack捆绑包中使用该项目的分支。
我正在使用毛线,并且尝试使用
yarn add github:Startouf/react-coverflow
Run Code Online (Sandbox Code Playgroud)
但是,当webpack尝试编译我的捆绑软件时,会引发奇怪的错误
ERROR in ./~/react-coverflow/main.js
Module not found: Error: Can't resolve './dist/react-coverflow' in '/Users/Cyril/dev/MyApp/client/node_modules/react-coverflow'
Run Code Online (Sandbox Code Playgroud)
我错过了什么 ?
编辑:当我使用从npm发布的程序包时,节点模块文件夹包含
LICENSE README.md dist main.js package.json
Run Code Online (Sandbox Code Playgroud)
当我使用fork时,似乎该项目未编译且包含
LICENSE README.md package.json src webpack.config.js
Makefile main.js site test
Run Code Online (Sandbox Code Playgroud)
好像我错过了一步...虽然我用github叉子做yarn add会自动发布,但好像我错了吗?