Skip to content

Commit 472f9cb

Browse files
committed
Add support for an opt-in trigger comment for the browserify transform.
1 parent 2601245 commit 472f9cb

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

browserify.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
var transformTools = require('browserify-transform-tools');
22
var falafel = require('falafel');
33

4+
var OPT_IN_TRIGGER = '/* @component-css-ns */';
45
var CLASSNAME_SEARCH = /\b([a-z][a-zA-Z_-]*)/g;
56

67
// @see https://github.com/benbria/browserify-transform-tools#creating-a-string-transform
78
module.exports = transformTools.makeStringTransform('component-css-ns', {}, function(content, transformOptions, done) {
8-
content = falafel(content, function(node) {
9-
if (node.type === 'Property' && node.key.name === 'className') {
10-
var componentNs = transformOptions.file.replace(/.*\/(\w+).*/, '$1');
11-
node.value.update(node.value.source() + '.replace(' + CLASSNAME_SEARCH.toString() + ', "' + componentNs + '-$1")');
12-
}
13-
});
9+
if (content.indexOf(OPT_IN_TRIGGER) !== -1) {
10+
content = falafel(content, function(node) {
11+
if (node.type === 'Property' && node.key.name === 'className') {
12+
var componentNs = transformOptions.file.replace(/.*\/(\w+).*/, '$1');
13+
node.value.update(node.value.source() + '.replace(' + CLASSNAME_SEARCH.toString() + ', "' + componentNs + '-$1")');
14+
}
15+
});
16+
}
1417
done(null, content);
1518
});

test/cases/browserify/MyComponent.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/* @component-css-ns */
2+
13
var React = require('react');
24
var cx = require('classnames');
35
var SubComponent = require('./SubComponent.jsx');

test/cases/browserify/SubComponent.jsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
/* @component-css-ns */
2+
13
var React = require('react');
24

35
module.exports = React.createClass({

test/cases/browserify/expected.out

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.temp = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2+
/* @component-css-ns */
3+
24
var React = require('react');
35
var cx = require('classnames');
46
var SubComponent = require('./SubComponent.jsx');
@@ -20,6 +22,8 @@ module.exports = React.createClass({displayName: "exports",
2022

2123

2224
},{"./SubComponent.jsx":2,"classnames":undefined,"react":undefined}],2:[function(require,module,exports){
25+
/* @component-css-ns */
26+
2327
var React = require('react');
2428

2529
module.exports = React.createClass({displayName: "exports",

0 commit comments

Comments
 (0)