Est-il possible d'uglifier tous les modules RequireJS sans les concaténer en un seul fichier? (Je sais que l'inverse est possible avec optimize: "none"
).Uglifier les modules RequireJS sans les concaténer
Répondre
Je connais uglifyjs-folder cette option, avec les paramètres -e
et -o
référençant un dossier (pas un fichier).
ex:
uglifyjs-folder "%CD%" -e -o "%CD%\subfolder"
(obs: %CD%
dans Windows obtient le dossier en cours)
Il est possible utilisation r.js
à enlaidir les fichiers sans les concaténer. Si vous ne fournissez aucun nom de module dans les options de configuration (vous n'utilisez pas modules
et ne spécifiez pas name
), alors r.js
traitera chaque fichier de baseUrl
individuellement, et ainsi gérera chaque fichier sans concaténation. Par exemple, cette configuration triviale de construction:
{
baseUrl: "js",
dir: "build",
}
provoque r.js
pour traiter chaque fichier à partir js
individuellement et le copier dans build
après uglifying le fichier. Aucune concaténation ne se produit, peu importe le nombre de fichiers que vous avez dans js
. Avec la configuration ci-dessus, r.js
ne trace aucune dépendance entre les modules car il n'a pas besoin de suivre les dépendances pour faire son travail.
Cela dit, je ne voudrais pas utiliser r.js
dans le but de uglifying les fichiers individuellement à moins il y avait une caractéristique supplémentaire de r.js
je besoin d'utiliser. Par exemple, il peut être utile d'utiliser cjsTranslate: true
pour convertir r.js
modules CommonJS en AMD, et d'effectuer la modification en même temps.
Puisque cela contournerait efficacement r.js et n'utiliserait UglifyJS, pourquoi ne pas simplement appeler UglifyJS directement à partir de votre outil de construction? – kryger
Oui, @kryger a raison. C'est un processus de construction tout ou rien, donc l'optimisation inclut la minification et la concaténation. –
Il n'est pas nécessaire de mettre "RequireJS" dans le titre de la question ou dans la description de la question. Étant donné que vous avez étiqueté votre question avec [tag: requirejs], alors * évidemment * nous parlons des modules que RequireJS peut charger, et non des modules dans le format natif de SystemJS, par exemple, que RequireJS ne peut pas charger. – Louis