![PyPI Now Supports iOS and Android Wheels for Mobile Python Development](https://cdn.sanity.io/images/cgdhsj6q/production/96416c872705517a6a65ad9646ce3e7caef623a0-1024x1024.webp?w=400&fit=max&auto=format)
Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
no-build-conf
Advanced tools
Stop configuring your assets pipeline. Everything is in the HTML. The build script just read your index.html.
Optimize your SPA programmatically.
This project is greatly inspired by @mklabs works.
Tested on Linux and Windows.
### HTML modification
Add "data-build"="NAME_OF_THE_OPTIMIZED_ASSET"
to every assets (css or js) you want to
optimize. Here app.css
and app.js
.
<link rel="stylesheet" href="css/style.css" data-build="app.css">
<!-- scripts concatenated and minified via build script -->
<script src="vendor/log.js" data-build="app.js"></script>
<script src="vendor/underscore.js" data-build="app.js"></script>
<script src="vendor/backbone.js" data-build="app.js"></script>
<script src="vendor/handlebars.runtime-1.0.0.beta.6.js" data-build="app.js"></script>
<script src="application.js" data-build="app.js"></script>
<script src="lib/util.js" data-build="app.js"></script>
<script src="lib/jquery.plugin.js" data-build="app.js"></script>
<script src="lib/Backbone.plugin.js" data-build="app.js"></script>
<script src="model/Todo.js" data-build="app.js"></script>
<script src="template/templates.js" data-build="app.js"></script>
<script src="view/todo/TodoView.js" data-build="app.js"></script>
<script src="Router.js" data-build="app.js"></script>
<!-- end scripts -->
The result is an optimized directory:
The previous HTML portion now look like this:
<link rel="stylesheet" href="app.459703.css" data-build="app.css">
<script src="app.6423e0.js" data-build="app.js"></script>
CSS and JS are:
You need nodejs installed.
$ [sudo] npm install -g no-build-conf
$ build-html example/in example/out
info build rm -rf example/out/
info build mkdir -p example/out/
info build cp -r example/in/ example/out/
info less parse example/out/css/normalize.less
info less parse example/out/css/style.less
info less parse example/out/css/todo.less
info less parse example/out/css/utils.less
info less write example/out/css/normalize.css
info less write example/out/css/todo.css
info less write example/out/css/utils.css
info less write example/out/css/style.css
info optipng optimize [ 'example/out/img/fr.png', 'example/out/img/information.png' ]
info optipng /usr/bin/optipng -quiet example/out/img/fr.png example/out/img/information.png
info jpegtran /usr/bin/jpegtran -copy none -optimize -outfile jpg-tmp.jpg example/out/img/cc-logo.jpg
info jpegtran /usr/bin/jpegtran -copy none -optimize -outfile jpg-tmp.jpg example/out/img/mid-Creative_Commons_and_Commerce.ogg.jpg
info concat Concat files in example/out/ [ 'vendor/log.js',
info concat 'vendor/underscore.js',
info concat 'vendor/backbone.js',
info concat 'vendor/handlebars.runtime-1.0.0.beta.6.js',
info concat 'application.js',
info concat 'lib/util.js',
info concat 'lib/jquery.plugin.js',
info concat 'lib/Backbone.plugin.js',
info concat 'model/Todo.js',
info concat 'template/templates.js',
info concat 'view/todo/TodoView.js',
info concat 'Router.js' ]
info js minify js
info md5 compute md5
info link write example/out/app-6423e0.js
info css minify css example/out/css/style.css
WARN css-b64-images [ [Error: Skip ../fonts/maven_pro_medium-webfont.eot Exceed max size],
WARN css-b64-images [Error: Skip ../fonts/maven_pro_medium-webfont.eot?iefix Exceed max size],
WARN css-b64-images [Error: Skip ../fonts/maven_pro_medium-webfont.woff Exceed max size],
WARN css-b64-images [Error: Skip ../fonts/maven_pro_medium-webfont.ttf Exceed max size],
WARN css-b64-images [Error: Skip ../fonts/maven_pro_medium-webfont.svg#webfontyQA0TEWF Exceed max size],
WARN css-b64-images [Error: Skip ../fonts/callunasansregular-webfont.eot Exceed max size],
WARN css-b64-images [Error: Skip ../fonts/callunasansregular-webfont.eot?#iefix Exceed max size],
WARN css-b64-images [Error: Skip ../fonts/callunasansregular-webfont.woff Exceed max size],
WARN css-b64-images [Error: Skip ../fonts/callunasansregular-webfont.ttf Exceed max size],
WARN css-b64-images [Error: Skip ../fonts/callunasansregular-webfont.svg#webfontW850hM1B Exceed max size],
WARN css-b64-images [Error: Skip http://pullrequest.org/img/background-pattern.gif External file.],
WARN css-b64-images [Error: Skip ../img/mixit-banner.png Exceed max size],
WARN css-b64-images { [Error: ENOENT, stat 'example/out/img/nlabal.png'] errno: 34, code: 'ENOENT', path: 'example/out/img/nlabal.png' } ]
info md5 compute md5
info link write example/out/css/app-503e33.css
info build create file example/out/index.html
info exclude remove 9 elements
info build write file example/out/index.html
info html-minifier optimize example/out/index.html
info bin Build done in 1327 ms
The no-build-conf build script works like connect middlewares.
Here processors/middlewares less, optipng, jpegtran, script, link, css-b64-images, html-minifier are applied in order.
var buildScript = require('no-build-conf');
var processors = [
require('no-build-conf/lib/processors/file/less'),
require('no-build-conf/lib/processors/file/optipng'),
require('no-build-conf/lib/processors/file/jpegtran'),
require('no-build-conf/lib/processors/dom/script'),
require('no-build-conf/lib/processors/dom/link'),
require('no-build-conf/lib/processors/dom/css-b64-images'),
require('no-build-conf/lib/processors/dom/exclude'),
require('no-build-conf/lib/processors/file/html-minifier')
];
build(target_dir, output_dir, processors, function(err, newFile){
if(err) throw err;
console.log('Build done ✔');
});
There is two sorts of processors:
File processors take a list of files as argument.
In the following example, the argument file will contain an array of every png images in the directory. For more information about the Glob pattern.
module.exports = {
glob: '**/*.png',
process: function(files, next){
//...
}
}
Dom processors take a list of DOM element as argument.
$ is based on a jQuery-like implementation: Cheerio that works on Unix and Windows.
module.exports = {
el: 'link[data-build] href',
process: function($, dir, links, next){
if(!links) return next();
var keys = Object.keys(links);
if(!keys.length) return next();
keys.forEach(function(key){
var hrefs = links[key];
//...
}
}
}
Everything original is MIT, everything else honors whatever license it was written under.
FAQs
Stop configuring your assets pipeline. Everything is in the HTML. The build script just read your index.html.
The npm package no-build-conf receives a total of 3 weekly downloads. As such, no-build-conf popularity was classified as not popular.
We found that no-build-conf demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.