Tag: 构build

构build生产webpack – 缩小依赖关系

说npm上有一个名为“awesomepackage”的模块。 我可以通过package.json注册为我的应用程序的依赖项,如下所示: npm i –save awesomepackage 检查我的node_modules文件夹我看到一个名为“awesomepackage”的文件夹,如下所示: – index.js – package.json – README.md – lib/ – awesomepackage.min.js 我可以在我自己的应用程序中使用这样的包: import {AwesomeThing} from 'awesomepackage'; 我的问题: 当我使用webpack构build我的应用程序时,我的最终bundle.js总是包含来自node_modules/awesomepackage/index.js的源代码 – 无论我设置了什么环境variables(例如NODE_ENV=production )。 如果它们作为NPM包的一部分发货,是否有任何方法可以告诉webpack使用预先构build的文件(例如node_modules/awesomepackage/lib/awesomepackage.min.js ),而不是从源代码重新构build? 我已经看到在webpackconfiguration中使用resolve.alias和noParse解决scheme, 使用硬编码path来缩小源文件,但是这并不能达到使用npm和webpack的目的? 我不希望硬编码和维护path到每个依赖的缩小构build文件! 我来到这里是因为我的bundle.js跳过了2.5MB,当我添加了moment.js – 这是167kb的缩小,包括所有的语言环境,但源代码包括2MB的testing。 编辑 显然还有更多的不仅仅是最后的最终bundle.js文件。 例如:为什么有人希望在最终生产代码中包含数百个不必要的依赖关系的unit testing? 他们没有。 这就是为什么大多数图书馆都提供dist (或类似)文件夹作为其npm模块的一部分。

为什么这个V8 / Javascript代码执行得如此糟糕?

我一直在寻找一些有趣的编程基准来看看node.js与其他语言相比的performance如何: http ://benchmarksgame.alioth.debian.org/u32/compare.php?lang=node&lang2=php 虽然结果主要是解决algorithm问题,而您通常更喜欢用C或Fortran的变体来解决这个问题,但是对于V8来说,一个testing非常不好: pidigits – 比PHP慢52倍 因为v8在所有其他testing中的performance都比PHP更好,所以我认为在代码方面有些问题,或者是某些特定于V8 / Javascript的实现,使得它的performance非常糟糕。 它是什么? 代码1:V8 // The Computer Language Benchmarks Game // http://shootout.alioth.debian.org // // Contributed by Matthew Wilson // biginteger derived from Tom Wu's jsbn.js var compareTo, multiply, divide, addTo, add, intValue, shiftLeft, nbv; function main($n) { var $i=1, $s="", $d, neg10=nbv(-10), three=nbv(3), ten=nbv(10), g = 1, […]

构build工具:包含多个组件的Coffeescript / Node项目

我正在开始一个项目,想知道最好的构build工具是什么。 整个事情是用CoffeeScript编写的,使用AngularJS作为客户端,使用NodeJS作为服务器。 应用程序有几个组件: 一个iPad应用程序 一个iPhone应用程序(与iPad不同的function) 一个CMS的应用程序 一个NodeJS服务器 所有这些代码之间都有大量的共享代码,全部用CoffeeScript编写。 我想要一个构build工具,在那里我可以列出哪个应用程序使用什么代码(大部分共享),并将每个应用程序的JavaScript文件构build到一个单独的文件夹。 例如,我将设置一个名为“/ compiled / ipad /”的文件夹,其中包含index.html,以及js,css,img等的文件夹。我将列出要编译的咖啡文件放入/ compiled / ipad / js (其中一些来自/src/shared/*.coffee,其中一些来自/src/ipad/*.coffee等)以及我想将哪些文件引入/ compiled / ipad / css。 我希望它能够轻松地连接文件,我也想要。 它也会编译我的testing,从/ src / test / ipad到/compiled/test/ipad/*.js。 我所有的客户端unit testing都是使用单线testing编写的,而且我不确定我会写什么服务器端unit testing。 什么构build工具/configuration是最好的方法在这里? 一个Makefile? 像Grunt的东西? 我真的是新来的整个build设现场。 编辑 :决定去Browserify。 您可以在这里find我的解决scheme使其与Angular协同工作: https : //groups.google.com/forum/#!topic/ angular/ ytoVaikOcCs

Nodejs npm步骤在TeamCity的每个版本上下载软件包

当谈到nodejs npm的时候,我有一点n00b,但是由于在我们的构build环境中使用几篇文章中推荐的步骤来实现它,所以我们的构build时间翻了三倍。 我们用它作为标准的东西(minify / concat / etc js / css / etc) 我们使用TeamCity并添加了一个Node.js NPM步骤然后一个吞咽步骤来运行任务(RE: https : //github.com/jonnyzzz/TeamCity.Node ) 设置NPM的任务花费了大部分时间,2分10秒,占总构build时间的65%,调用命令“npm install”,该命令似乎重新下载每个构build的所有包 第3/7步:NPM设置(Node.js NPM)(2m:10s) [npm install]开始:cmd / c npm install 以前的总build设时间在1分30秒左右,包括unit testing。 是否有caching这些本地,并防止重新下载每个构build? 在用户configuration文件或东西可能是相反的生成文件夹? 更多详情.. 这可能是最好的解释设置http://www.dotnetcurry.com/visualstudio/1096/using-grunt-gulp-bower-visual-studio-2013-2015 我们有C#项目正在使用新的任务运行资源pipe理器,依赖项被保存到一个package.json中,你预先运行“npm install”一次在你的本地环境工作区(需要使用.tfignore来防止它从检入到源)然后不再,除非你开始一个新的本地工作区。 构build运行时,需要从命令行运行“npm install”,它会从package.json文件中获取依赖关系,并将其安装到每次构build的工作目录中的子文件夹中,即使这些文件已经存在从以前的版本(即TC代理没有清理它们),afaik你不能安装在工作文件夹之外。 我可能是错的…或者我应该说我希望我错了,并寻找一个方法来大力支持这个,但是什么办法,我们使它的工作将需要与任务亚军探险家的工作,所以F5的经验开发者在当地还是一样的。 我们有多个代理是的。

用postcss观察多个css文件并输出一个bundle.css

我试图找出涉及postcss的工作stream程。 我的需要是在一个文件夹中有css partials,看着他们,并输出一个捆绑的CSS文件。 bundle css文件的顶部必须包含一个base.css文件。 postcss有一个–watch标志,可以观看多个文件,但只能输出多个文件,而不是捆绑的css文件。 我可以使用cat结合所有的文件,并使用标准inputpipe道postcss。 但是我不能从postcss中触发cat命令。 我的文件结构可能是这样的: partials/ |_one.css |_two.css styles/ |_base.css |_bundle.css 我如何使用npm来安排我的脚本部分使用CLI命令来实现我的目标? 我的主要问题是弄清楚如何对构build步骤进行pipe理,而不是一个步骤阻塞下一步。 一个工作stream程示例的链接将是非常好的! 编辑我有一个解决scheme工作,但它是非常不理想的,因为它不能与源代码映射,不能有全局variables,是一个两步的过程。 但我会在这里概述一下,希望有人能提出一个更好的方法。 使用以下结构: build/ |_stylesheet/ |_default.css (final processed css) partials/ |_one.css |_one.htm (html snippet example) |_two.css |_two.htm (html snippet example) styles/ |_base.css |_bundle/ (css files from partial/ that is partly processed) |_one.css |_two.css |_master.css (import rules) 我在package.json有两个步骤。 […]

通过一个咕噜任务更新json文件中的文件引用

我是一名JavaScript开发人员,从头开始创build构build过程相当新颖。 我select使用Grunt来处理当前的项目,并且创build了一个GruntFile,这个GruntFile约占我需要的90%,除了这个问题之外,它工作的很好。 我有几个JavaScript文件,我在manifest.json文件中开发chrome扩展时引用。 对于我的构build过程,我连接所有这些文件,并将其缩小到一个文件,以包含在manifest.json 。 有没有在生成过程中更新manifest.json文件中的文件引用,所以它指向缩小版本? 这是src清单文件的一个片段: { "content_scripts": [{ "matches": [ "http://*/*" ], "js": [ "js/lib/zepto.js", "js/injection.js", "js/plugins/plugin1.js", "js/plugins/plugin2.js", "js/plugins/plugin3.js", "js/injection-init.js" ] }], "version": "2.0", } 我有一个长长的任务,将上面列出的所有js文件连接并缩小到一个名为inject.js的文件中,并且想要一个可以修改清单文件的grunt任务,如下所示: { "content_scripts": [{ "matches": [ "http://*/*" ], "js": [ "js/injection.js" ] }], "version": "2.0", } 我现在所做的是有两个版本的清单文件,一个用于开发,另一个用于构build,在构build过程中,它复制构build版本。 这意味着我需要保持2个版本,我宁愿不要做。 有没有办法更好地与Grunt做这个?

在Node中使用命令行创build文件

所以我试图做这个Node.js教程 ,它说从命令行创build三个.js文件。 touch server.js client.js test.js 除了我得到以下错误: “触摸”不被识别为内部或外部命令,可操作程序或batch file。 不知道这里有什么问题。 我已经安装了Node.js以及npm和browserify。 我已经正确创build了package.json文件。 我想我可以进入项目目录,右键单击并创build一个新的文件,但这样做打败了目的不是吗? 在命令行中创build新文件的实际命令是什么? 我正在使用Windows 7。

如何在与webpack / browserify捆绑时排除代码path?

我有一个可以与node.js和浏览器一起使用的库。 我正在使用CommonJS,然后使用webpack发布为web版本。 我的代码如下所示: // For browsers use XHR adapter if (typeof window !== 'undefined') { // This adapter uses browser's XMLHttpRequest require('./adapters/xhr'); } // For node use HTTP adapter else if (typeof process !== 'undefined') { // This adapter uses node's `http` require('./adapters/http'); } 我遇到的问题是,当我运行webpack(browserify会做同样的)生成的输出包括http及其所有依赖关系。 这导致一个巨大的文件,这是不是最佳的浏览器性能。 我的问题是如何在运行模块捆绑器时排除节点代码path? 我通过使用webpack的外部解决scheme暂时解决了这个问题,只是在包含'./adapters/http'时才返回undefined。 这并不能解决其他开发人员依赖我的库使用CommonJS的用例。 他们的构build最终会遇到相同的问题,除非他们使用类似的排除configuration。 我已经看过使用envify,只是想知道是否有另一个/更好的解决scheme。 谢谢!

Gulp构build不会自动安装依赖关系?

我使用gulp来构build我的JavaScript应用程序。 我在package.json文件中声明了一些依赖项,例如: "dependencies": { "flux": "^2.0.1", "keymirror": "~0.1.0", "object-assign": "^1.0.0", "react": "^0.13.1", "dropzone": "^4.0.1", "lodash": "^3.6.0" }, 当我运行gulp构build时,它总是会提示我一些依赖找不到,除非我手动运行npm install lodash 。 有没有办法让npm install自动运行npm install ?

在所有文件完成任务之后运行代码

所以我一直在尝试一下Gulp,看它与Grunt的速度有多快,而且我对结果印象深刻,但是我有一件事我不知道如何在Gulp中做。 所以我有这个吞噬任务来缩小HTML: gulp.task('html-minify', function() { var files = [ relativePaths.webPath + '/*.html', relativePaths.webPath + '/components/**/*.html', relativePaths.webPath + '/' + relativePaths.appPath + '/components/**/*.html' ]; var changedFiles = buildMetaData.getChangedFiles(files); //TODO: needs to execute only after successful run of the task buildMetaData.addBuildMetaDataFiles(changedFiles); buildMetaData.writeFile(); return gulp.src(changedFiles, { base: relativePaths.webPath }) .pipe(filelog()) .pipe(minifyHtml({ empty: true, quotes: true, conditionals: true, comments: […]