我已经将我所有的衬里配置和相关的软件包/插件/预置(用于更漂亮的、手写的、精巧的、提交的)移到了npm包中。然后,我在多个项目中使用这个包,并将配置扩展或合并到项目的本地配置文件中,以确保一致性,并消除安装和保持开发依赖关系的最新需求。
除了配置之外,我还有许多有用的npm脚本,它们运行指针并执行各种其他与开发相关的功能,例如:
"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"目前,这些脚本在我的所有项目中都是重复的,但是我希望将这些脚本与我的共享包一起分发,以便在一个位置上定义它们。我该怎么做?
发布于 2018-09-17 19:29:09
从npm博客来看,似乎没有“直接方法”来公开npm包中的dev脚本。博客文章建议创建使用JavaScripts模块运行首选脚本的shelljs文件。
示例:假设您想公开lint:prettier": "prettier 'src/**/*.{js,json}' --write"
将调用包装在bin/lintchartier.js中:
#! /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中导出的控制台脚本中:
...
"bin": {
"lint-prettier": "bin/lintprettier.js"
}
...最后,您可以在项目中重用您的脚本:
"scripts": {
"build": "...",
"lint:prettier": "lint-prettier"
}发布于 2020-02-09 20:34:42
其中一种方法是使用构建器。
构建器允许您将npm脚本作为NPM包发布,并在安装了包含这些脚本的包的任何项目中运行它们。
在我的用例中,我把我所有的构建/测试/lint脚本放在一个NPM包中,然后在我所有的其他项目中安装这个包。然后,在每个项目中,我可以运行完全相同的命令。
生成器最近没有得到很高的维护,但是它相当稳定,而且我已经成功地使用了它。README非常彻底,它描述了您需要了解的所有内容。
但Cristiano的回答也不错,因为采用这种方法可能会让您更好地控制解决方案实现,而使用Builder,它是另一个具有自己的实现的项目(很少有问题)。
发布于 2018-09-17 04:53:05
我不确定尝试允许依赖项更改依赖配置是正确的,即使我知道一种简单的方法。
不要试图从下到上,相反,做相反的方式。我强烈建议使用勒纳。
它是管理monorepo中的包的一个很好的工具,您甚至可以在整个包中提升共享依赖关系,并且针对您的问题,它允许在所有包之上定义一个主package.json,您可以在其中定义一个npm script,然后使用一个命令对所有包运行它(或者很少使用scope特性)。
https://stackoverflow.com/questions/52258258
复制相似问题