首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在制作跨平台的 NuGet 工具包时,如何将工具(exedll)的所有依赖一并放入包中

在制作跨平台的 NuGet 工具包时,如何将工具(exe/dll)的所有依赖一并放入包中 2018-07-03 13:30 NuGet 提供了工具类型的包支持...本文将介绍将这些依赖加入 NuGet 包中的方法,使得复杂的工具能够正常使用。...典型的例子,我正在做一个基于 Roslyn 的 NuGet 工具包。于是整个 Roslyn 的大量 dll 都是我的依赖。但默认情况下,打出来的包并不包含 Roslyn 相关的 dll。...太早了依赖文件还没有生成,太晚了 NuGet 包中即将打的文件早已确认,Include 了也没用。...然后,我们就可以把输出目录中除了 NuGet 自然而然会帮我们打入 NuGet 包中的所有文件都加入到 NuGet 包中的对应目录下。 具体来说,是将下面的 Target 添加到项目文件的末尾。

2.8K30

发布、传输和安装现代 JavaScript 以实现更快的应用程序

在完美的世界中,每个开发人员都已经将编译系统配置为将所有依赖项 (node_modules) 转换为所需语法。...它还可以比涉及两个编译步骤的传统解决方案更快,同时仍然为现代和旧版浏览器生成单独的捆绑包。这两套捆绑包设计为使用模块/无模块模式加载。...它还可以处理运行中的 Babel,并使用 Terser 以单独的针对现代和传统输出优化的设置,使捆绑包最小化。...最后,生成的传统捆绑包所需的 polyfill 将提取到一个专用脚本中,这样在较新的浏览器中不会复制或不必要地加载它们。...定义两个单独的 babel-loader 配置可以将 node_modules 中的现代语言特性自动编译为 ES2017,同时仍然使用 Babel 插件和项目配置中定义的预设来转换您自己的第一方代码。

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    向现代JavaScript转型——发布、传输和安装现代 JavaScript以实现更快的应用程序

    在完美的世界中,每个开发人员都已经将编译系统配置为将所有依赖项 (node_modules) 转换为所需语法。...它还可以比涉及两个编译步骤的传统解决方案更快,同时仍然为现代和旧版浏览器生成单独的捆绑包。这两套捆绑包设计为使用模块/无模块模式加载。...它还可以处理运行中的 Babel,并使用 Terser 以单独的针对现代和传统输出优化的设置,使捆绑包最小化。...最后,生成的传统捆绑包所需的 polyfill 将提取到一个专用脚本中,这样在较新的浏览器中不会复制或不必要地加载它们。...定义两个单独的 babel-loader 配置可以将 node_modules 中的现代语言特性自动编译为 ES2017,同时仍然使用 Babel 插件和项目配置中定义的预设来转换您自己的第一方代码。

    2.7K185

    JavaScript中的Monorepos,反模式

    monorepos的概念是简化依赖项管理。如果项目包含许多包,这些包需要依赖于彼此的特定版本,那么将它们放在一个地方而不是放在单独的存储库中就可以更容易地管理。...包的开销 当查看node_modules目录时,即使对于一个相对基本的应用程序,也可能有数百甚至数千个包。...它们常常不必要地将功能分割到一个单独的包中。如果一个包的惟一实际使用者是monorepo,并且不能实际地看到普通用户在这个存储库中的138个其他包中安装那个包,那么可能就没有必要将它作为一个单独的包。...如果只想使用一小段Lodash代码,可以单独导入该包以排除其余的Lodash代码。然而,随着tree-shaking在捆绑程序中变得常见,它们开始被弃用。...需要进行成本效益分析,并自问将该特性作为一个单独的包放在一个存储库中,而不是将其作为一个可以导入的单独文件,或者完全放在一个单独的存储库中,这样做的好处是什么。总是需要考虑维护开销。

    1.8K00

    Vite2.0 依赖关系预捆绑

    这个过程有两个目的: CommonJS和UMD兼容性:在开发过程中,Vite的dev将所有代码作为本地ESM服务。因此,Vite必须首先将作为CommonJS或UMD发布的依赖项转换为ESM。...一些包将它们的ES模块构建作为许多单独的文件相互导入。例如,lodash-es有超过600个内部模块!当我们从'lodash-es'导入{debounce}时,浏览器会同时发出600多个HTTP请求!...自动依赖发现 如果没有找到现有的缓存,Vite会抓取你的源代码,并自动发现依赖项导入(即:希望从node_modules解析的“裸导入”),并使用这些发现的导入作为预绑定包的入口点。...Vite自动检测没有从node_modules解析的依赖项,并将链接的dep视为源代码。它不会尝试捆绑被链接的dep,而是会分析被链接的dep的依赖列表。...Caching 文件系统缓存 在node_modules/.Vite中缓存预绑定的依赖项。

    2.6K20

    Vue.js应用性能优化二

    所有js代码都被打包到一个文件 — app.js 您可能已经注意到,根据我们访问的路由,我们可能不需要Home.vue或About.vue(依赖lodash)但它们都在相同的app.js包中,无论路由用户是什么...Vendor bundle 反模式 vendor包(第三方类库)通常用于包含node_modules中所有模块的单独js文件的上下文中。...虽然可以将所有内容放在这里,将所有依赖项保存在一个地方并缓存它们,感觉上可能很好,但这种方法带来了将所有路由打包在一起时遇到的相同问题: ? 黄色模块,都是vendor 你看到了问题吗?...即使我们只需要在一个路由中使用lodash(它是其中一个依赖项),但是现在它被捆绑在vendor.js中以及所有其他依赖项中,因此它将始终下载。...只需将这几行添加到webpack配置中,我们就会将公共依赖项分组到一个单独的包中,以便共享它们。再说的清楚一些,几个路由页面共享的依赖,会单独抽取出来打包,而其他页面不会下载这个共享包。

    2K30

    使用Webpack提升Vue.js应用程序的4种方法(翻译)

    vue-loader的最终输出是一个JavaScript模块,准备将其包含在Webpack捆绑包中。...您可以通过从Webpack构建中省略编译器来减小捆绑包的大小。 请记住,单个文件组件模板已在开发中预编译以呈现功能!...您可以配置插件以检查依赖项是否来自node_modules文件夹,如果是,则将其输出到单独的文件vendor.js中: new webpack.optimize.CommonsChunkPlugin({...Code splitting 默认情况下,Webpack会将所有应用程序代码输出到一个大捆绑包中。...require 要从服务器加载异步组件的代码,请使用Webpack require语法 这将指示Webpack在构建时将async-component捆绑在一个单独的bundle中,更好的是,Webpack

    2.6K20

    我们如何为 JavaScript 客户端减半模块化 AWS SDK 的发布规模

    在 v3中, 模块化包 将应用程序的捆绑大小比 AWS SDK 中的 JavaScript(版本 2)减少了75%。但是,v3 对于每个模块化包具有较大的发布/安装大小。...在这篇文章中,我们报道了如何将 v3 模块化封装的发布大小减少50%。 我们为什么要这么做?...node_modules 如果您将客户端安装到新的工作空间中,并检查node_modules内的封装大小,您将看到 v3.36.1 中的磁盘使用量减少。...加入 Twitter上的对话 让我们知道您是如何减少发布/安装/捆绑大小在你的npm包或任何其他经验,你已经与AWS SDK为JavaScript。 我们计划将来做什么?...我们也在考虑航运节点.js特定的分布和类型定义分布在单独的预发行版本编号,这可能进一步减少npm安装大小从之间 60% 和 75``%. 虽然预期的改进是巨大的,但实施之前需要大量的讨论和测试。

    2.4K20

    七个动画演示教你如何玩转Pycharm

    注意:您可以直接从 PyCharm 克隆要贡献的存储库,并基于它创建一个新项目 我通过克隆托管在 GitHub 上的开源包 Rope 在 Pycharm 中创建了一个项目。...动画片: ‍ 03 配置一个虚拟环境作为项目的 Python 解释器 我把 Jupyter IDE 和一些扩展放在一个 Docker 镜像中 我展示了如何将 PyCharm 虚拟环境配置为 Docker...04 为项目配置Jupyter 通过让 Jupyter 在 PyCharm 内的 Docker 中工作,我将所有三个环境合二为一,即 PyCharm 环境。...请注意,在项目Photonai目录的最左侧显示中,某些文件图标的显示发生了变化。 大多数插件可以与任何 JetBrains 产品一起使用。有些仅限于商业产品。某些插件需要单独的许可证。...如果插件依赖于其他插件,PyCharm 会通知您有关依赖项的信息。如果您的项目依赖于某些插件,请将它们添加到所需插件列表中。 默认情况下,PyCharm 包含多个捆绑插件。

    1.8K40

    Angular10配置webpack打包 「详细教程」

    package.json 配置工作空间中所有项目可用的 npm 包依赖。有关此文件的具体格式和内容,请参阅 npm 的文档。...package-lock.json 提供 npm 客户端安装到 node_modules 的所有软件包的版本信息。欲知详情,请参阅 npm 的文档。...}), 复制代码 模块功能:能够查看到你的文件打包压缩后中真正的内容,找出那些模块组成最大的大小,找到错误的模块,优化它!最好的事情是它支持缩小捆绑!它解析它们以获得实际大小的捆绑模块。...4.第三方库合并打包并重命名 有的时候,我们希望将所有来自 node_modules 的第三方库都打包到同一个文件中。显然,上面的打包配置并没有满足这个条件。...chunks配置中,main 一定一定要放在最后,否则运行会出错,笔者因为没有放在最后找了一晚上的bug~~ 改为: 3.HtmlWebpackPlugin插件配置选项 您可以将配置选项的哈希值传递给

    5.1K20

    npm 依赖管理中被忽略的那些细节

    /node_modules 这层目录中包含有我们 package.json 文件中所有的依赖包,而这些依赖包的子依赖包都安装在了自己的 node_modules 中 ,形成类似于下面的依赖树: 这样的目录有较为明显的好处...: 1)层级结构非常明显,可以清楚的在第一层的 node_modules 中看到我们安装的所有包的子目录; 2)在已知自己所需包的名字以及版本号时,可以复制粘贴相应的文件到 node_modules 中...npm 3 会遍历所有的节点,逐个将模块放在 node_modules 的第一层,当发现有重复模块时,则丢弃, 如果遇到某些依赖版本不兼容的问题,则继续采用 npm 2 的处理方式,前面的放在 node_modules...目录中,后面的放在依赖树中。...中 dependencies 的依赖项相同 dependencies :结构和外层的 dependencies 结构相同,存储安装在子依赖 node_modules 中的依赖包 需要注意的是,并不是所有的子依赖都有

    2.6K10

    TS类型定义详解:typestypeRoots@types,以及命名空间namespace

    首先声明文件的文件名是有规范要求的, 必须以.d.ts结尾, 为了规避一些奇怪的问题, 推荐放在根目录下.别人写好的声明文件( @types/xxx )当我们用 npm 等包管理工具安装第三方包的时候,...值得一提的是,并不是所有的包都可以通过这种方式解决的, 能解决的是 DefinitelyTyped 组织已经写好定义的包, 好消息是比较流行的包基本都有。...如果找不到,则会去 node_modules 中的@types (默认情况,目录可以修改,后面会提到)目录下去寻找对应包名的模块声明文件。...总结就是:typeRoots 是 tsconfig 中 compilerOptions 的一个配置项,typeRoots 下面的包会被 ts 编译器自动包含进来,typeRoots 默认指向 node_modules...内置类型定义文件内置类型定义就是把你的类型定义文件和 npm 包一起发布,一般来说,类型定义文件都放在包根目录的 types 目录里,例如 vue:如果你的包有一个主 .js 文件,需要在 package.json

    6.1K10

    2分钟将Python转换为exe

    安装所有软件包的一种简单方法是使用requirements.txt文件,该文件包含该python程序运行所需的所有已安装软件包的列表。...Pyinstaller是一个python软件包,它将Python应用程序及其所有模块/依赖项捆绑到一个软件包中。...所述dist文件夹中包含的应用程序捆绑和一个可执行文件(.exe文件捆绑的应用程序文件夹中)的文件。 当您运行.exe文件时,您将获得与从python解释器运行时相同的输出。...这里的一个问题是,仍然不能单独共享.exe文件,因为要运行该.exe文件,需要有很多依赖文件。 Pyinstaller为我们提供了各种标志,可帮助我们修改捆绑的应用程序。...OneFile 该命令将在dist文件夹中创建一个没有任何依赖关系的可执行文件,因为由于–onefile标志,所有依赖文件都捆绑在.exe文件中。

    2.7K10

    Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图「建议收藏」

    一般单我们在 pom.xml 添加了依赖包或是插件的时候,发现标注 4 的依赖区中没有看到最新写的依赖的话,可以尝试点击此按钮进行项目的重新载入。...如上图标注 3 所示,为我们在 pom.xml 中配置的插件列表,方便调用插件。 如上图标注 4 所示,为我们在 pom.xml 中配置的依赖包列表。...如上图标注 5 所示,为常见的 Java Web 在 Maven 下的一个项目结构。 大致了解过后,看怎么查看所有jar包的依赖关系。 2017.2.6版本之后,这个图标的样子变啦。...点完之后就会有下图 可以看到,这个maven项目的所有jar包依赖关系,一览无余。 为什么我的这个jar包依赖这么少呢,因为我这个项目只是简单示范了一下springmvc框架的使用。...上面的都是理论姿势,那么实际中怎么使用呢? 比如下面的这个pom.xml里面有这么2个dependency的引入。

    13.4K50

    npm安装包时常见参数及作用介绍

    无参数 作用: 在没有提供任何参数的情况下, npm 会默认将包安装到项目的 node_modules 目录下,并且不会将其添加到 package.json 文件中。...--no-save 作用: 安装包但不将其添加到 package.json 文件中的依赖项中。 这在你只需要临时安装包,而不希望更新项目的依赖项清单时非常有用。...当多个开发者共享项目时,为了确保所有人都使用相同的依赖项版本,可以使用这个参数锁定 package-lock.json 文件。...--legacy-bundling 作用: 使用旧的捆绑策略,将本地软件包安装到 node_modules 目录中。...在 npm v7 及更高版本中, npm 使用新的捆绑策略,但你可以通过使用这个参数来使用旧的捆绑策略。 示例: npm install package-name --legacy-bundling

    34900

    Angular的12个经典问题,看看你能答对几个?(文末附带Angular测试)

    /node_modules/codelyzer", "typescript.tsdk": "node_modules/typescript/lib" } 从cli中运行的代码:ng lint...其中一些是: 避免为你的组件使用/注入动态HTML内容。 如果使用外部HTML,也就是来自数据库或应用程序之外的地方,那么就需要清理它。 不要将外部网址放在应用程序中,除非它是受信任的。...所有dependencies 和dev-dependencies都是明确分离的。 如果应用程序较大时,我会考虑延迟加载而不是完全捆绑的应用程序。...优点: 更快的下载:由于应用程序已经编译,许多Angular编译器相关库就不再需要捆绑,应用程序包变得更小,所以该应用程序可以更快地下载。...更少的Http请求数:如果应用程序没有捆绑来支持延迟加载(或任何原因),对于每个关联的HTML和CSS,都会有一个单独的服务器请求。

    17.4K80
    领券