首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用软件包分发NPM脚本,供项目安装使用

用软件包分发NPM脚本,供项目安装使用
EN

Stack Overflow用户
提问于 2018-09-10 12:52:50
回答 4查看 1.2K关注 0票数 12

我已经将我所有的衬里配置和相关的软件包/插件/预置(用于更漂亮的、手写的、精巧的、提交的)移到了npm包中。然后,我在多个项目中使用这个包,并将配置扩展或合并到项目的本地配置文件中,以确保一致性,并消除安装和保持开发依赖关系的最新需求。

除了配置之外,我还有许多有用的npm脚本,它们运行指针并执行各种其他与开发相关的功能,例如:

代码语言:javascript
复制
"lint:prettier": "prettier 'src/**/*.{js,json}' --write",
"lint:eslint": "eslint 'src/**/*.js'",
"lint:compatibilityCheck": "eslint --print-config .eslintrc.js | eslint-config-prettier-check",
"lint": "npm run lint:compatibilityCheck && npm run lint:prettier && npm run lint:eslint"

目前,这些脚本在我的所有项目中都是重复的,但是我希望将这些脚本与我的共享包一起分发,以便在一个位置上定义它们。我该怎么做?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-09-17 19:29:09

npm博客来看,似乎没有“直接方法”来公开npm包中的dev脚本。博客文章建议创建使用JavaScripts模块运行首选脚本的shelljs文件。

示例:假设您想公开lint:prettier": "prettier 'src/**/*.{js,json}' --write"

将调用包装在bin/lintchartier.js中:

代码语言:javascript
复制
#! /usr/bin/env node
var shell = require("shelljs");
const path = require("path")

process.env.PATH += (path.delimiter + path.join(process.cwd(), 'node_modules', '.bin'));
shell.exec("prettier 'src/**/*.{js,json}' --write");

然后将其添加到package.json中导出的控制台脚本中:

代码语言:javascript
复制
...
"bin": {
   "lint-prettier": "bin/lintprettier.js"
}
...

最后,您可以在项目中重用您的脚本:

代码语言:javascript
复制
"scripts": {
   "build": "...",
   "lint:prettier": "lint-prettier"
 }
票数 4
EN

Stack Overflow用户

发布于 2020-02-09 20:34:42

其中一种方法是使用构建器

构建器允许您将npm脚本作为NPM包发布,并在安装了包含这些脚本的包的任何项目中运行它们。

在我的用例中,我把我所有的构建/测试/lint脚本放在一个NPM包中,然后在我所有的其他项目中安装这个包。然后,在每个项目中,我可以运行完全相同的命令。

生成器最近没有得到很高的维护,但是它相当稳定,而且我已经成功地使用了它。README非常彻底,它描述了您需要了解的所有内容。

但Cristiano的回答也不错,因为采用这种方法可能会让您更好地控制解决方案实现,而使用Builder,它是另一个具有自己的实现的项目(很少有问题)。

票数 1
EN

Stack Overflow用户

发布于 2018-09-17 04:53:05

我不确定尝试允许依赖项更改依赖配置是正确的,即使我知道一种简单的方法。

不要试图从下到上,相反,做相反的方式。我强烈建议使用勒纳

它是管理monorepo中的包的一个很好的工具,您甚至可以在整个包中提升共享依赖关系,并且针对您的问题,它允许在所有包之上定义一个主package.json,您可以在其中定义一个npm script,然后使用一个命令对所有包运行它(或者很少使用scope特性)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52258258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档