Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdc9a3ca

Browse files
committed
2.2 semver
1 parent5669758 commitdc9a3ca

File tree

2 files changed

+53
-5
lines changed

2 files changed

+53
-5
lines changed

‎test/packagejson.test.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,25 @@ describe("package.json", () => {
7171
)
7272
);
7373
});
74+
// 2.2
75+
it('should use specific version of "moment"',()=>{
76+
assert.equal(
77+
json.dependencies.moment,
78+
"2.10.2",
79+
'"moment" should use the specific version'
80+
);
81+
});
82+
it('should have installed specific version of "moment"',async()=>{
83+
assert.ok(
84+
awaitdoesNotThrow(
85+
()=>
86+
isModuleInstalled({
87+
name:"moment",
88+
type:"dependency",
89+
version:"2.10.2"
90+
}),
91+
'"moment" not installed'
92+
)
93+
);
94+
});
7495
});

‎test/utils.js

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ const {
33
}=require("fs");
44
const{ join}=require("path");
55

6-
constgetPackageJson=async()=>{
6+
constgetPackageJson=async(dir=process.cwd())=>{
77
// load package.json file
8-
constpathToPackageJson=join(process.cwd(),"package.json");
8+
constpathToPackageJson=join(dir,"package.json");
99
constpackageJson=awaitreadFile(pathToPackageJson,"utf8").catch(
1010
console.error
1111
);
@@ -22,29 +22,40 @@ const getPackageJson = async () => {
2222

2323
exports.getPackageJson=getPackageJson;
2424

25+
constversionMatch=(current,expected)=>{
26+
letcurrentSemver=current;
27+
if(["~","^"].includes(current[0])){
28+
currentSemver=current.substring(1);
29+
}
30+
returncurrentSemver===expected;
31+
};
32+
2533
/**
2634
* isModuleInstalled
2735
*@param { name, type} params
2836
* "name" - the name of the dependency
2937
* "type" - "dependency", "devDependency", "peerDependency"
3038
*@returns boolean
3139
*/
32-
constisModuleInstalled=async({ name, type})=>{
40+
constisModuleInstalled=async({ name, type, version})=>{
3341
// 1. load package.json file
3442
constjson=awaitgetPackageJson();
3543

3644
// 2. verify package lists dependency by type
3745
letinstallCommand;
3846
lethasDependency;
47+
letcurrentVersion;
3948

4049
switch(type){
4150
case"dependency":
4251
installCommand="--save";
4352
hasDependency=!!json.dependencies&&json.dependencies[name];
53+
currentVersion=json.dependencies[name];
4454
break;
4555
case"devDependency":
4656
installCommand="--save-dev";
4757
hasDependency=!!json.devDependencies&&json.devDependencies[name];
58+
currentVersion=json.devDependencies[name];
4859
break;
4960
case"peerDependency":
5061
thrownewError("Peer dependencies unsupported");
@@ -56,7 +67,14 @@ const isModuleInstalled = async ({ name, type }) => {
5667
thrownewError(`Run "npm install${installCommand}${name}"`);
5768
}
5869

59-
// 3. verify node_module installed
70+
// 3. if version, check dependency version
71+
if(version&&!versionMatch(currentVersion,version)){
72+
thrownewError(
73+
`Dependency${name} version${currentVersion} does not match expected${version}`
74+
);
75+
}
76+
77+
// 4. verify node_module installed
6078
constpathToNodeModule=join(process.cwd(),"node_modules",name);
6179
consthasNodeModules=awaitreaddir(pathToNodeModule).catch(()=>{
6280
thrownewError('Missing node_modules. Run "npm install"');
@@ -65,7 +83,16 @@ const isModuleInstalled = async ({ name, type }) => {
6583
thrownewError('Missing node_modules. Run "npm install"');
6684
}
6785

68-
// 4. is installed
86+
// 5. if version, has installed node_module version
87+
if(version){
88+
constnodeModulePackageJson=awaitgetPackageJson(pathToNodeModule);
89+
if(!versionMatch(nodeModulePackageJson.version,version)){
90+
thrownewError(
91+
`Dependency${name} version${version} is not yet installed. Run "npm install"`
92+
);
93+
}
94+
}
95+
6996
returntrue;
7097
};
7198

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp