Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
N
node-sass
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
楚学文
node-sass
Commits
3aa24cf0
Commit
3aa24cf0
authored
Oct 29, 2014
by
Kevin Martensson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup build.js and move it to lib
parent
8a2e8355
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
164 additions
and
107 deletions
+164
-107
build.js
build.js
+0
-106
build.js
lib/build.js
+163
-0
package.json
package.json
+1
-1
No files found.
build.js
deleted
100644 → 0
View file @
8a2e8355
#!/usr/bin/env node
var
cp
=
require
(
'child_process'
),
fs
=
require
(
'fs'
),
path
=
require
(
'path'
),
Mocha
=
require
(
'mocha'
);
// Parse args
var
force
=
false
,
debug
=
false
;
var
arch
=
process
.
arch
,
platform
=
process
.
platform
,
v8
=
/
[
0-9
]
+
\.[
0-9
]
+/
.
exec
(
process
.
versions
.
v8
)[
0
];
var
args
=
process
.
argv
.
slice
(
2
).
filter
(
function
(
arg
)
{
if
(
arg
===
'-f'
)
{
force
=
true
;
return
false
;
}
else
if
(
arg
.
substring
(
0
,
13
)
===
'--target_arch'
)
{
arch
=
arg
.
substring
(
14
);
}
else
if
(
arg
===
'--debug'
)
{
debug
=
true
;
}
return
true
;
});
if
(
!
{
ia32
:
true
,
x64
:
true
,
arm
:
true
}.
hasOwnProperty
(
arch
))
{
console
.
error
(
'Unsupported (?) architecture: `'
+
arch
+
'`'
);
process
.
exit
(
1
);
}
// Test for pre-built library
var
modPath
=
platform
+
'-'
+
arch
+
'-v8-'
+
v8
;
if
(
!
force
&&
!
process
.
env
.
SKIP_NODE_SASS_TESTS
)
{
try
{
fs
.
statSync
(
path
.
join
(
__dirname
,
'bin'
,
modPath
,
'binding.node'
));
console
.
log
(
'`'
+
modPath
+
'` exists; testing'
);
var
total
,
failures
;
var
mocha
=
new
Mocha
({
reporter
:
function
(
stats
)
{
total
=
stats
.
total
;
failures
=
stats
.
failures
;
},
ui
:
'bdd'
,
timeout
:
999999
});
mocha
.
addFile
(
path
.
resolve
(
__dirname
,
'test'
,
'api.js'
));
mocha
.
run
(
function
()
{
// at least 90% of tests should pass
if
((
total
-
failures
)
*
100
/
total
<
90
)
{
console
.
log
(
'Problem with the binary: '
+
failures
+
' of '
+
total
+
' tests are failing.
\
nManual build incoming'
);
console
.
log
(
'Please consider contributing the release binary to https://github.com/sass/node-sass-binaries for npm distribution.'
);
build
();
}
else
{
console
.
log
(
'Binary is fine; exiting'
);
}
});
}
catch
(
ex
)
{
// Stat failed
build
();
}
}
else
{
build
();
}
// Build it
function
build
()
{
cp
.
spawn
(
process
.
platform
===
'win32'
?
'node-gyp.cmd'
:
'node-gyp'
,
[
'rebuild'
].
concat
(
args
),
{
customFds
:
[
0
,
1
,
2
]})
.
on
(
'exit'
,
function
(
err
)
{
if
(
err
)
{
if
(
err
===
127
)
{
console
.
error
(
'node-gyp not found! Please upgrade your install of npm! You need at least 1.1.5 (I think) '
+
'and preferably 1.1.30.'
);
}
else
{
console
.
error
(
'Build failed'
);
}
return
process
.
exit
(
err
);
}
afterBuild
();
});
}
// Move it to expected location
function
afterBuild
()
{
var
targetPath
=
path
.
join
(
__dirname
,
'build'
,
debug
?
'Debug'
:
'Release'
,
'binding.node'
);
var
installPath
=
path
.
join
(
__dirname
,
'bin'
,
modPath
,
'binding.node'
);
try
{
fs
.
mkdirSync
(
path
.
join
(
__dirname
,
'bin'
,
modPath
));
}
catch
(
ex
)
{}
try
{
fs
.
statSync
(
targetPath
);
}
catch
(
ex
)
{
console
.
error
(
'Build succeeded but target not found'
);
process
.
exit
(
1
);
}
fs
.
renameSync
(
targetPath
,
installPath
);
console
.
log
(
'Installed in `'
+
installPath
+
'`'
);
}
lib/build.js
0 → 100644
View file @
3aa24cf0
#!/usr/bin/env node
var
fs
=
require
(
'fs'
),
path
=
require
(
'path'
),
spawn
=
require
(
'child_process'
).
spawn
,
Mocha
=
require
(
'mocha'
);
/**
* After build
*
* @param {Object} options
* @api private
*/
function
afterBuild
(
options
)
{
var
folder
=
options
.
debug
?
'Debug'
:
'Release'
;
var
target
=
path
.
join
(
__dirname
,
'..'
,
'build'
,
folder
,
'binding.node'
);
var
install
=
path
.
join
(
__dirname
,
'..'
,
'bin'
,
options
.
bin
,
'binding.node'
);
fs
.
mkdir
(
path
.
join
(
__dirname
,
'..'
,
'bin'
,
options
.
bin
),
function
(
err
)
{
if
(
err
&&
err
.
code
!==
'EEXIST'
)
{
console
.
error
(
err
.
message
);
process
.
exit
(
1
);
}
fs
.
stat
(
target
,
function
(
err
)
{
if
(
err
)
{
console
.
error
(
'Build succeeded but target not found'
);
process
.
exit
(
1
);
}
fs
.
rename
(
target
,
install
,
function
(
err
)
{
if
(
err
)
{
console
.
error
(
err
.
message
);
process
.
exit
(
1
);
}
console
.
log
(
'Installed in `'
+
install
+
'`'
);
});
});
});
}
/**
* Build
*
* @param {Object} options
* @api private
*/
function
build
(
options
)
{
var
bin
=
options
.
platform
===
'win32'
?
'node-gyp.cmd'
:
'node-gyp'
;
var
proc
=
spawn
(
bin
,
[
'rebuild'
].
concat
(
options
.
args
),
{
customFds
:
[
0
,
1
,
2
]
});
proc
.
on
(
'exit'
,
function
(
code
)
{
if
(
code
)
{
if
(
code
===
127
)
{
console
.
error
([
'node-gyp not found! Please upgrade your install of npm!'
,
'You need at least 1.1.5 (I think) and preferably 1.1.30.'
].
join
(
' '
));
process
.
exit
(
code
);
}
console
.
error
(
'Build failed'
);
process
.
exit
(
code
);
}
afterBuild
(
options
);
});
}
/**
* Parse arguments
*
* @param {Array} args
* @api private
*/
function
parseArgs
(
args
)
{
var
options
=
{
arch
:
process
.
arch
,
platform
:
process
.
platform
,
v8
:
/
[
0-9
]
+
\.[
0-9
]
+/
.
exec
(
process
.
versions
.
v8
)[
0
]
};
options
.
args
=
args
.
filter
(
function
(
arg
)
{
if
(
arg
===
'-f'
||
arg
===
'--force'
)
{
options
.
force
=
true
;
return
false
;
}
else
if
(
arg
.
substring
(
0
,
13
)
===
'--target_arch'
)
{
options
.
arch
=
arg
.
substring
(
14
);
}
else
if
(
arg
===
'--debug'
)
{
options
.
debug
=
true
;
}
return
true
;
});
return
options
;
}
/**
* Test for pre-built library
*
* @param {Object} options
* @api private
*/
function
testBinary
(
options
)
{
options
.
bin
=
[
options
.
platform
+
'-'
+
options
.
arch
,
'-v8-'
+
options
.
v8
].
join
(
''
);
if
(
options
.
force
)
{
return
build
(
options
);
}
if
(
!
process
.
env
.
SKIP_NODE_SASS_TESTS
)
{
fs
.
stat
(
path
.
join
(
__dirname
,
'..'
,
'bin'
,
options
.
bin
,
'binding.node'
),
function
(
err
)
{
if
(
err
)
{
return
build
(
options
);
}
console
.
log
(
'`'
+
options
.
bin
+
'` exists; testing'
);
var
total
;
var
failures
;
var
mocha
=
new
Mocha
({
ui
:
'bdd'
,
timeout
:
999999
,
reporter
:
function
(
stats
)
{
total
=
stats
.
total
;
failures
=
stats
.
failures
;
}
});
mocha
.
addFile
(
path
.
resolve
(
__dirname
,
'..'
,
'test'
,
'api.js'
));
mocha
.
run
(
function
()
{
if
((
total
-
failures
)
*
100
/
total
<
90
)
{
console
.
log
([
'Problem with the binary: '
+
failures
+
' of '
+
total
+
' tests are failing.'
,
'Manual build incoming.'
,
'Please consider contributing the release binary to https://github.com/sass/node-sass-binaries for npm distribution.'
].
join
(
'
\
n'
));
return
build
(
options
);
}
console
.
log
(
'Binary is fine; exiting'
);
});
});
}
}
/**
* Apply arguments and run
*/
testBinary
(
parseArgs
(
process
.
argv
.
slice
(
2
)));
package.json
View file @
3aa24cf0
...
...
@@ -27,7 +27,7 @@
"url"
:
"git://github.com/sass/node-sass.git"
},
"scripts"
:
{
"install"
:
"node build.js"
,
"install"
:
"node
lib/
build.js"
,
"test"
:
"node scripts/test"
,
"coverage"
:
"node scripts/coverage"
,
"pretest"
:
"node scripts/lint"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment