鉴于项目的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的支持联系,如果收到,我会添加他们的回复.
最近我使用Visual Studio 2017(15.6.3)从头开始创建了一个ASP.NET MVC Core项目.我发现了通常的JavaScript框架:
但不幸的是,所有Bower的支持都消失了!没有bower.json,没有.bowerrc,没有"管理凉亭包......"了:
Visual Studio的ASP.NET MVC Core模板有什么问题?鲍尔变得过时了吗?
如果Bower已被弃用,请不要将此问题复制到如何在Visual Studio 2017中使用bower包!我不喜欢指向已弃用技术的修复程序.
我想缩小一个问题:用NPM取代Bower最简单(最直观)的方法是什么?鲍尔一样做了与它的.bowerrc:{ "directory": "wwwroot/lib" }?
asp.net-mvc visual-studio visual-studio-templates bower asp.net-core
假设有一个名为npm的包abcd.通常在package.json,我们将依赖项指定为
"abcd": "^1.0.0",
但这abcd不能按预期工作,所以我在https://github.com/mygithubid/abcd中分叉(并修改)它
然后我跑npm install git+https://git@github.com/mygithubid/abcd.git进去package.json,定义改为
"abcd": "git+https://github.com/mygithubid/abcd.git",
重新启动使用abcd它的项目后,现在它抛出错误
Module not found: Can't resolve 'abcd'
...即使我看到abcd文件夹被添加到里面node_modules
你能告诉我上面的错误吗?谢谢!
Github已将我的应用锁定文件中的依赖项标记为易受攻击.
要修复它,我应该将该软件包更新到更新的版本.
如果我对易受攻击的软件包没有任何控制,我该怎么做呢,因为它嵌套在依赖树中?
抱歉,如果这是一个非常基本的问题,但我似乎没有找到任何有用的.
我知道如何从GitHub版本中创建NPM依赖项:
"dependencies": {
"package-name": "user/repo#v1.0.0"
}
Run Code Online (Sandbox Code Playgroud)
这很好,但我想从这个版本安装一个特定的二进制文件.
我试过了
"dependencies": {
"package-name": "https://github.com/user/repo/releases/download/v1.0.0/bin.tgz"
}
Run Code Online (Sandbox Code Playgroud)
但我给了我以下错误:
? npm install
npm ERR! fetch failed https://github.com/user/repo/releases/download/v1.0.0/bin.tgz
npm WARN retry will retry, error on last attempt: Error: fetch failed with status code 404
Run Code Online (Sandbox Code Playgroud)
二进制发布资产存在于GitHub之外,并且正在使用AWS S3.
URL github.com/user/repo/releases/download/v1.0.0/bin.tgz正在重定向,302状态和HTTP位置标头设置为https://github-cloud.s3.amazonaws.com/releases/XXX/XXX...
如果我直接尝试使用S3 URL,则会出现ENAMETOOLONG错误(请参阅NPM问题):
> npm install https://github-cloud.s3.amazonaws.com/releases/XXX/XXX...
npm ERR! tarball.destroy is not a function
npm WARN retry will retry, error on last attempt: Error: ENAMETOOLONG: name too long, open …Run Code Online (Sandbox Code Playgroud) 我遇到了代理后面的凉亭问题,运行bower安装后我发现了错误:
_http_client.js:73
throw new TypeError('Request path contains unescaped characters.');
Run Code Online (Sandbox Code Playgroud)
有很多主题,很多解决方案,但到目前为止,100%的人都无法为我工作!
我正试图从我的一个项目中引用logary-js.
我有这个packages.json文件:
...
"dependencies": {
"logary": "logary/logary-js#master",
...
}
...
Run Code Online (Sandbox Code Playgroud)
但是,在尝试下拉包时,它会因此错误而失败:
? npm install
> logary@1.0.0 preinstall /Users/h/dev/proj/node_modules/.staging/logary-6603d70a
> npm run build
> logary@1.0.0 build /Users/h/dev/proj/node_modules/.staging/logary-6603d70a
> NODE_ENV=production webpack --progress --color --display-error-details --display-reasons --optimize-minimize
webpack 1.12.14
Usage: https://webpack.github.io/docs/cli.html
Options:
--help, -h, -?
--config
--context
--entry
--module-bind
--module-bind-post
--module-bind-pre
--output-path
--output-file
--output-chunk-file
--output-named-chunk-file
--output-source-map-file
--output-public-path
--output-jsonp-function
--output-pathinfo
--output-library
--output-library-target
--records-input-path
--records-output-path
--records-path
--define
--target
--cache [default: true]
--watch, -w
--watch which closes when stdin ends
--watch-aggregate-timeout
--watch-poll
--hot
--debug …Run Code Online (Sandbox Code Playgroud) 我正在查看 facebook 的不可变库及其打字稿绑定。
如果我有这个代码:
const list: User[] = ...;
list.map(user => ...)
Run Code Online (Sandbox Code Playgroud)
lambda 参数的类型user正确User。
但是,如果我导入不可变的List并包装我的数组:
import {Map, List} from "immutable";
List(list).map(user => ...)
Run Code Online (Sandbox Code Playgroud)
现在,让我感到困惑的是,lambda 参数user被推断为User | undefined。即使将呼叫更改为也List<User>(list)无济于事。
查看库的 .d.ts,定义是:
export function List<T>(array: Array<T>): List<T>;
Run Code Online (Sandbox Code Playgroud)
所以我不明白这是怎么回事?
我有一个 npm 依赖项(例如ngx-infinite-scroll),我目前正在尝试分叉(用于错误修复)并将我的分叉版本作为依赖项包含在我的应用程序中。下面是我的包含示例package.json:
"dependencies": {
"ngx-infinite-scroll": "github:jcroll/ngx-infinite-scroll#bugfixes",
},
Run Code Online (Sandbox Code Playgroud)
在上面,我在 github 上分叉了存储库并创建了一个名为 的新分支bugfixes。
我的问题是,维护者运行一个构建过程,在./dist目录中创建一个工件,然后使用 将该平面目录发布到 npm $ npm run publish ./dist。但是,当我通过$ npm i ngx-infinite-scroll整个存储库安装新的分叉存储库时,会下载整个存储库,而不是目录dist。
现在我知道这应该是预料之中的。我希望做的一件事是至少dist通过添加到库的脚本来在安装时创建目录package.json:
"scripts": {
...
"prepare": "npm run build"
},
Run Code Online (Sandbox Code Playgroud)
但是我仍然看不到dist安装目录。即使如此,我仍然需要更改 package.json 以将密钥module指向这个新的嵌套目录入口点。
相反,我想要的是,当我从 github 安装这个库时,让它将其扁平dist目录发布为库的顶级目录,就像维护者构建库并运行原始库的方式一样$ npm rub publish ./dist。有什么办法可以做到这一点吗?
编辑:我也通过这个答案知道我可以构建 dist 并将代码提交到这个新分支,但我想要一种更优雅的方式,因此出现了问题。
我在安装存储库Pm2 修复程序时遇到困难,该修复程序是分叉到原始Pm2 原始版本的。
我有两个问题
npm ×8
github ×4
node.js ×4
javascript ×3
bower ×2
npm-install ×2
asp.net-core ×1
asp.net-mvc ×1
build ×1
generics ×1
git ×1
immutable.js ×1
package ×1
proxy ×1
typescript ×1